There has been a shift in both the market and web commentary supporting the view that designers should also be coders. This is a retrograde step in the evolution of software development and can produce products with poor user experience.
There are undeniable advantages to a designer understanding code such as an intimate knowledge of what can be achieved on a platform and the ability to quickly create a prototype. The flavour of the month seems to be HTML and CSS for designers but what if you primarily design for iOS? Should you then learn X Code? What about Java for complex web interactions? Although a good racing driver knows how every element in his car works he lets the mechanics do their job.
I’m a strong proponent of interactive prototyping and paper prototyping, for the purpose of usability testing so the layout and interactions can be tested to ensure they are usable by the target audience. I often code these myself as they need not be high fidelity and changing a design before development begins costs an order of magnitude less than making a change later to production code.
They are also useful for communicating to developers and stakeholders how a site or system might work and look. However, developers don’t need fully accurate mockups of a page to understand how an interactive element works. An annotated sketch will usually suffice or, shocker, talk to the development team and explain your design. If a designer, with limited knowledge compared to a professional developer, only creates designs that he can code himself then the palette from which he is working is unnecessarily restricted.
High fidelity prototypes are often created to show a client the shiny but as requirements and knowledge will change during development then showing a fully working prototype, complete with branding, at the start and saying the final product will be identical is disingenuous. It shouldn’t be identical in an Agile or iterative, user-centred design environment.
A real danger is that a prototype becomes the production code and using a mockup created by a non-professional developer, perhaps without appropriate variable naming or annotation, will lead to a multitude of development problems later. Even if the designer is the developer it’s important to separate these two stages.I was a programmer in the 90’s and I fear that creating the designer/coder hybrid will bring us back to those bad old days when the Senior Analyst Programmer was also the designer and, generally, they created crap for the users.