Who Should Code

Cameron Moll has been tweeting to challenge the “everyone should code” meme that has been passed around a lot in the technology industry. You might expect me to disagree with him, especially since I gave a talk in a conference encouraging designers to learn to code, but I don’t. The notion that every single person needs to know how to code is silly, and demonstrates delusions of grandeur. I like coding, but not everyone has to like what I like. There are plenty of fields where a knowledge of programming is nowhere near a necessity. I’ll list a few just to get started:

Could some form of programming knowledge help these professionals in some aspect of their work? Sure. Is it essential to their jobs? No way. There is a lot of money flying around the tech industry right now, where programmers are also founders and executives. It is natural to assume that what seems to be working for many here should work for everyone in any field. But what works for many in the technology industry does not necessarily apply to fields that are far removed from what we do.

Web Design/Development Aside

What about more adjacent fields of endeavor? I have seen resistance among some designers to learn to code, out of discomfort or fear. I believe that generalists are important and web development is an adjacent field to web design, so it makes sense for a web designer to learn things like HTML markup, styling via CSS, and DOM manipulation via Javascript. It is especially helpful on small teams where roles overlap. This is the biggest reason development has been an essential task for me, even though I consider myself a designer. I have worked on small teams, often on my own, so some aptitude with code has made a lot of sense. I believe it has made me a better designer because I understand the medium I work in better. I also think any web designer would benefit from a solid understanding of the basics of web development; HTML, CSS, and JS.

For designers, understanding your medium is essential. For some of us that comes from learning to code, but it’s not the only way. There can also be different levels of engagement with the technical aspects of our work. A benefit of working with a large team is that I could speak the language of developers when working with them to inform a design, without having strong opinions about arcane aspects of web development, like OOCSS, BEM, or unit tests.

I have found that this controversy only really exists when working with designers who spent most of their career in print design and have not embraced the web. Almost any designer I have worked with who starts on the web has naturally felt the need to learn some aspect of web development.

Back to the main point

The one thing that I think is missing from this conversation is how all this wonderful technology can benefit people in other fields in ways that they can adapt to their needs. There is a wide gulf between pre-built apps and writing your own application from the ground up. How do we fill this gulf?

I’m thinking of tools like the venerable Hypercard, that allow the user to set up their own visual interactions and help them complete tasks. Automator on the Mac, Workflow on iOS, and IFTTT and Zapier on the web are playing in this realm. If we want to make work and life better for people outside of the tech industry we would do much better building more robust and user friendly tools along these lines than telling them to code. Otherwise, we’re not giving anybody a fish or teaching them to fish, we’re just giving them a CAD drawing of a fishing poll, pointing at a pond, and saying “there might be fish there.”