A while back Jared M. Spool made a much noticed observation in an interesting post regarding designers who can code .
It’s clear from our research that designers who can code bring more to the team and, in the long run, see more of their brilliant work making it through the development process, to the user.
The topic is still hot and dividing the designer community in a tabs vs. spaces way (if you don’t get that reference you are a non-programming designer).
Having programming skills as a designer will most certainly work in your favor both on the market place as well as on the job. The crucial thing though might not be having programming skills as such but something I call device proficiency.
Being device proficient means knowing how the device you are designing for behaves and being aware of its possibilities and limitations.
I use the term device proficiency whenever I want to refer to designers capability (or lack thereof) to propose interface solutions that take into account given device peculiarities that can’t be changed.
Device proficiency has effects on the customer’s expectations and the developers’ acceptance of the designers.
Presenting interaction designs that are not implementable raises false expectations on the clients side. This creates unnecessary friction in a project and makes you really look bad in front of the customer, as a company and as a designer.
It’s helpful to know how developers work, in order to make the implementation as smooth as possible. Basing designs on a clear grid for example will not only help your design in being clearer but also the developers implementing it laying the grounds for clean markup.
Knowing how devices work will make the overall process more effective since round-trips are reduced where designs are rejected on the basis of “can’t be implemented” leaving the designer in a bad spot. Designing experiences that are not implementable makes the design less binding. Why should developers bother to follow the designer’s guidelines if these are more often than not detached from the reality of the devices?
Having programming skills per se sure is helpful. If not for the coding languages and techniques then at least for the judgement of complexity: Complex stuff is complex everywhere, be it the open standards world or the .net universe, the complexity of things is similar in both environments.
Programming is important, beware though of leaning towards the dark side too much: The big challenge as a designer with programming skills is to resist to the temptations of what is technically possible and to remain focused on the users needs.
Test your of Device Proficiency
Do you have an answer to these questions?
- How does the offline mode work on smartphones? What are its design implications?
- How does printing a page work in a browser?
- How does a browser treat iFrames (e.g. for ads) and what does that mean in respect to interaction and exchanging data between the page and the iFrame?
- How do notification systems work on mobile?