Please don’t learn to code, learn to understand code instead

“I notice you haven’t written all that much of your own software.”

The interviewer was looking at my code samples. They were largely patches that fixed bugs, added comments and documentation, or extended functionality.

Awhile ago someone wrote I need terrible female engineers. Well here I am. Hi! I’m a coder and I’m not certainly not Alan Turing. I have an easier time with the English language than I do with C++. I never got a computer science degree — I have a degree in agriculture. I don’t think I could pass the puzzles in Google’s interviews.

But despite that I’ve always been gainfully employed and a valuable asset to teams. I can read code well enough to understand, document, and often fix it. I am a better writer than a coder, but there is a lot of need for that in every stage of the process. I can function as a wide variety of roles from project manager to product manager.

I understand code at a level I think most people could be trained in. And I think it would benefit everyone in the industry if people like project managers, business analysts, designers, and other assorted professions that are so critical to coding could understand code better.

I wouldn’t have to work from bizarre specs written by someone who has never even used the type of software we build. On more than one occasion I’ve had to rewrite business requirements and zany user stories before a team could even start development. You can have every “rock star” coder in the world on team and it won’t matter if your design, requirements and user stories read like fanfiction. I don’t need to tell you that this wastes time and money at an absurd level.

But I’ve been disappointed to hear that even most code schools, which target people who also wouldn’t be in computer science, are really teaching in a way that’s not particularly useful and often further filters out people like me. The fact they call many of them “bootcamps” is a hint they are distilling the worst about the industry. I know a fair number of people I think could have been good at what I do who have dropped out of them.

I don’t need people who can solve some Javascript puzzles on my team. Sure, some parts of coding are like Google’s infamous puzzles, but I very rarely encounter anything like that. Mostly it’s pretty dull and rote work. I need people who can use GIT, write coherently about how to build and run software, debug and patch with impunity, and spin up and optimize virtual servers on a variety of environments. Neither code schools nor computer science programs seem to produce people like this. And there are few resources for teaching these kind of skills. I feel like every year I have to teach some new computer science graduate what revision control is and how to use it (which is required to participate on most development teams).

And then people come out of these code schools and know all the Javascript methods for dealing with strings and are disappointed that on a business level this isn’t a particularly useful skill and they can’t find a job.

So let’s stop worrying about code schools and start worrying about pedagogy at the various levels of skill this profession requires and training existing staff on how to understand the things they are supposed to be helping to build.

Despite the question at the beginning of this, I was offered that job at a senior level. It doesn’t matter that I didn’t create Twitter or much of anything really, I still do things the industry needs.

So I agree — don’t learn how to code, learn how code should be constructed, what it does, how it should be released into the wild. I don’t know the answer for this, but I suspect a lot of good would be done if this kind of teaching was rolled into business schools or MBA programs. We need more training, more tools for training, and we need people to value it.