Why I think designers shouldn’t code
I strongly believe that designers shouldn’t (have to) code. And that by requiring designers to code, you are missing out on great designers and great designs.
1. Design should happen close to the user experience
Example: if you’re building a mobile app, it should be designed on a mobile phone. This is not (yet) practical, but at least have a live preview on the target device as you design.
Code is as far away from the user’s experience you can possibly get. While I’m considering what clever method name I’ll use, or whether to use “atomic” CSS classes or not, I’m distancing myself from my user’s situation. I’m no longer solving their problems, I’m coding for the benefit of myself and my peer coders.
2. Designing and coding require different states of mind
Bret Victor’s amazing presentation “Media for Thinking the Unthinkable” (https://vimeo.com/67076984 — at 13 min) introduced me to Interactive/Visual/Symbolic mentalities (from Jerome Bruner’s Enactive/Iconic/Symbolic mentalities).
Writing code is symbolic thinking, while drawing is visual. Prototyping would be interactive, I suppose.
3. Design should be unrestrained
When I design, I subconsciously think about how practical the design is from an implementation perspective.
Andrés, our amazing designer at Weld, doesn’t wear the shackles that I do. He’s designing without constraints, and sometimes his suggestions are impossible to realize, sometimes they’re mindblowingly great. A typical product discussion at Weld can sound like this:
Andrés: “This is how I think it should work.”
Me: “Sorry, it’s nice but it’s just impossible… it’s way too… wait a second… if we do it like… YES! No… can’t be… HOLY COW THIS IS AMAZING!”
We often have conflicts, but I think our different perspectives help building a great product. However, it requires that everybody on the team can argue for their cause.