Apparently there was a bit of a kerfluffle (on the Internet?! I know, it’s crazy) last year about whether or not people should learn to write code. I have opinions about this. But first, some context:
Near as I can tell, there were a few key events that triggered this discussion: Code Academy promoted codeyear.com for 2012, and Mayor Bloomberg tweeted that he wanted to learn to code. A few months later, Jeff Atwood decided the average person learning to code was a terrible idea for a variety of reasons, such as that it’s better to write no code than bad code, most people won’t benefit from it, it puts the cart before the horse (viewing programming as the solution rather than figuring out the best actual solution), etc. Over the next days and months lots of people responded to him.
Most of these responses came down on the side of encouraging people to code, and I agree with them. Programming can be fun (really!) and satisfying, and computers are everywhere. Having some ability to code can make your life easier: it gives you more resources to finish tasks, and it helps you develop better problem solving skills.
You might suppose that because I have studied computer science, I’m biased towards programming. Maybe I am, but here’s the thing: I’m not a professional programmer, and a lot of the programming that I do just helps me with everyday tasks. For example, I can:
- Use a Python script to do calculations or convert a file.
- Automatically generate emails from a template and a spreadsheet
- Write regular expressions to help me find phrases in text documents
- Edit a website by hand because the HTML editor doesn’t do what I want it to
None of these require years of training, and if you have a job where you use a computer, send emails, type reports, or wrangle a website, chances are good that having some ability to code will make your life easier without it becoming your entire job. Mark Guzdial makes this point well:
Most people who write code are not trying to create code solutions. Most people who write code are trying to find solutions or create non-code solutions. [...] I want everyone to have the possibility of using code to create their solution, not to create code as the solution.
I also believe that the thought process you develop when you program is beneficial. You learn to turn a project into steps, put the steps in order, find loose ends, and check for edge cases. I can’t think of any jobs (or hobbies) where putting some time into honing these skills won’t help you out. Andy Lindman describes it this way:
That said, learning to build software taught me how to break down problems into smaller parts, think about the solutions in terms of algorithms with discrete steps, and often–though not always–to convert those algorithms into code that a computer understands and can run through more efficently than any human brain.
Don’t get me wrong, I don’t think that everyone should quit their jobs and become professional programmers (though we need more, and the tech sector could really use some diversity). I just hate that people might see Atwood’s post and be discouraged from learning things that could help them and make them happier. But Zed Shaw has some encouraging advice:
I’m going to give you a piece of advice when you’re trying to learn something new: Never listen to people who try to make beginners feel like losers. For whatever reason, some people get off on making beginners feel like they’re worthless for attempting something. Maybe it’s because they feel threatened by new entrants, or maybe they were picked on as kids and this makes them feel powerful. Who knows, but generally if they’re trying to make you feel like a loser because right now you’re not that good at something, then just ignore them. They suck.
If you’re interested in learning to program (and I hope you are!), here are a few places you can check out:
- Girl Develop It, for women who are interested in learning to code
- MIT’s Introduction to Programming course
- There are boot camps for those who want to immerse themselves, such as this one for web development
- Here’s a free, online book written by people who think everyone should learn to program: How to Design Programs
If you have suggestions for other resources, please let me know about them in the comments!