Recently, I was asked "Should a web designer know how to code?' Before answering, I realized that it would be wise to clarify the context of the question.
Knowing the context informs the answer
It is critical to contrast a web context and a more general new product development (NPD) context.
In a web context, a 'designer' moniker implies that one is likely to use Adobe Photoshop as a primary tool. Typically, there is a professional pride in items such as font selection, kerning, and the parameters of drop shadows. A 'developer' role may be split between 'front-end' and 'back-end.' Typically, a 'front-end' role includes references to the code that is communicating with the browser. This means that a 'front-end developer' is likely to have a proficiency using HTML, CSS, and Javascript. A 'back-end' role is likely to emphasize code running on a server or the attributes of the database.
In product development, 'front-end' typically evokes a time dependent role. Someone that works in the 'front end' emphasizes their contribution early in the development effort. They may contribute to brain storming and ideation sessions.
If the question is in a web context, inquired about the production environment. If the production team is small (less than three or perhaps five people), many of the contributors may tend to generalize and have multiple roles. In larger production teams, specialization is more likely.
In some production environments, there is 'designer' versus 'developer' culture. In this type of workplace contributors are organized by functional specialty (in silos) and progress may be measured by transferring files between specialists (handoffs). In such environment, these may be sufficient cooperation but opportunities for more collaboration.
The debate
Sometimes a question such as 'Should a web designer know how to code?' escalates into a debate.
One position is that an individual should specialize in order to master their craft. Advice to an aspiring new contributor may include an admonition to read the classics in an attempt to uncover the principles. Other advice may be to study the contemporary examples and learn about the new techniques from the acknowledged masters of the craft.
Another position may be to consider the effort from a holistic perspective. Questions such as 'What is the business objective?' or 'How can I structure my contributions so that they can be integrated into the final solution by others?' may guide one's approach. Some may emphasize opportunities for cross-training. Others may suggest that knowing a sufficient amount of the jargon (vocabulary associated with a specific discipline) is sufficient. Others may suggest an understanding of the end-to-end process to ensure that one's contributions align with the ultimate objectives of the project.
An aspiration for contributors that are producing content for a multi-device world
Is transformation possible? How soon?
In considering the question 'Should web designers know code?' one approach may be to start with the following passage and substitute 'designer' for 'artist' and 'website' for 'game.'
“For a cross-discipline team that is measured by value added to a working game, the role of an artist shifts to that of a ‘game developer’ who specializes in art. An artist doesn't simply create an asset for someone else to put in the game and make fun. The artist participates in the creation of an experience, where art has an equal value. By having a voice in the discussion about what is being created, the artist elevates the value of what they create and minimizes the cost of creating it.” - from the book "Agile Game Development with Scrum" by Clinton Keith (@ClintonKeith) page 227. Published in 2010.
Perhaps 'Should designers know code?' is not the best question.
If a team already has the services of a valuable contributor that is a designer that doesn't know code, sending them to 'code-camp' isn't going to help this project or the next one. The result will be the same as if you gave them a "Learn how to code in 3 days' or a 'Code for Dummies' book. Peter Norvig covered this in 2001 in his "Teach Yourself Programming in Ten Years" post.
Perhaps alternative questions are 'What can be done to maximize the value of the contributions of my non-coding designer to this project and the next?' and 'What can this non-coding designer do to improve the contributions of others (including the ones that are coding masters) on the team?'