May 25, 2015

How do you know if you would like programming?

I’d had some scrawled out notes for this post sitting around for ages but fortunately, Alan went ahead and wrote an excellent post on the topic! Some of my favorite points from his post:
  • Your current technical ability with a computer is not a good measure of your technical aptitude.
  • "You don’t actually need to know much math to be a programmer"
  • "It’s not that you’re not smart enough, it’s just that programming can be really difficult"
  • "When I say ‘you enjoy programming,’ what I don’t mean is that you are having an enjoyable experience the whole time."

I would recharacterize the “mental endurance”/grit section of it a bit. I think it’s a particular kind of grit, or tolerance for frustration, when it comes to programming. This is my favorite comic for describing what it feels like to be a programmer:


I also tell people from my old career that coding brings me really high highs and really low lows, but the highs are high enough *for me* to put up with the lows. And I don’t mind this particular kind of low as much, where some small detail missed somewhere is the actual cause of the problem, or it turns out that what we thought we were telling the computer to do isn’t what we were actually telling the computer to do.

Computers are really dumb! We all want to throw them out of the window, often! But when you get that feeling, are you the kind of stubborn to dig in your heels and get into a battle of wills with this inanimate object? That’s what helps you keep going until you get another hit from a successful solution. I think this tolerance for frustration is a kind of muscle that you can build over time, but I also think it’s not a coincidence that many programmers are really annoying to argue with or get to change their minds.

Alan put in some questions to ask yourself for the aptitude part:
  • Do you enjoy puzzles? 
  • Do you speak another language? 
  • Are you able to describe and explain news events to people? 
  • Have you helped plan a large event before? 
  • Do you play an instrument?

Here are some more questions that might help:
  • Do you enjoy hobbies where you have to put things together from smaller pieces? Example include: cooking, knitting, crocheting, sewing, woodworking, mechanic…
  • Do you like organizing things, either in real life, or in things like spreadsheets?
  • Do you have and enjoy using a label-maker?
  • Do you like puzzles, either the physical kind or like those math logic puzzles where you have to fill out the charts based on your deductions from given statements?
  • Are you a DIY type?
  • Do you like figuring out how things work and building them?
  • Do you like tinkering with things just to make them a bit better?
  • Are you at least a bit lazy and will spend extra time overall so you can use your brain to figure out an easier solution to something (relevant xkcd comics: one, two)?
  • Are you able to hold arbitrary rules in your head and compartmentalize to set aside certain things that you don’t quite understand right now but will think about later? 

But ultimately, Alan is also completely right that the barrier to testing out whether or not you’ll like programming is fortunately pretty low—there are plenty of places to get started! I’m hoping questions like those above and in this post will help encourage people from all backgrounds and ages to consider learning programming and we can leave the old “good at math and science” heuristic behind.