You don’t have to look very hard to find articles stating that designers should or shouldn’t know how to code, so let’s start by listing the pros and cons of designer unicorns*.
Why a designer should be a designer
On the one hand, there is a large school of thought that believes it’s unnecessary for designers to take on the role of a developer (or vice versa). It argues that an attempt at executing both skills to a production level will be detrimental to the overall outcome of the product due to the fact that neither skill will be fully developed, or at least developed well enough. This school of thought covets specialisation as it allows designers time to dedicate to honing their craft.
A designer who has learnt to code as an addition to their skillset will not code as well as a developer who has focused solely on development for the same amount of time. Google Conversation Experience Design Lead, Jared Zimmerman, says that this often results in designers creating substandard work that fits in with their limited coding knowledge or only coding what they can design.
“Some people can play the piano and the banjo, but when they play them both at once it sounds really crappy.”
—Roger Belveal
Unicorns who can code and design
On the other hand, those elusive unicorns who are fully capable and proficient at coding can be a great company asset. Only employing one person to fulfil the role of two will obviously drive down costs, but it does run the risk of placing too much responsibility on one person which could lead to increased errors and mishaps or even burnout.
Designers who code can, arguably, be more creative when it comes to understanding and deciding what CSS or JavaScript animations to use on specific elements and to design accordingly. If they are really proficient, these designers can work within the project’s budget by designing elements that aren’t too time-consuming to code.
Like everything else in life, the subject is not just black and white. The common thread in the topic is that designers should know enough about coding to improve and strengthen their craft. Understanding the technology and processes allows designers to know what can and can’t be done which avoids complications down the line.
For example, if the client has approved a design but the designer hasn’t considered how certain elements will be translated in development and there’s an issue, the project would become complicated and time would be wasted due to redesigns.
It's a team effort
A perfect solution would be to have designers and developers working closely from beginning to end. Communication would be more fluid and efficient if both sides understand design and development processes, and could use the same vocabulary. This would allow both sides to be more versatile.
Developers could suggest useful design opportunities they know how to implement and designers could do the same when it comes to coding. Neither side should have to understand the discipline to a production level but should understand the processes well enough to make relevant contributions and suggestions.
In other words, being multi-skilled is great but not at the cost of being mediocre at both design and development. Rather focus on your skills but have working knowledge of both sides so you can be aware of the constraints and opportunities.
Each member of a team should have an established role within the agency or company so the responsibility is shared equally. After all, working as a team is what humans should strive for. The more skill and knowledge shared, the better.
*A unicorn is a designer that designs and codes.