Wednesday, March 14, 2012

Advice to an Up-and-Coming Programmer

I've got a buddy who's on his way to becoming a professional programmer. He asked about the path I suggested he takes to get there. My answer was thus:

I've got good news for you: you need to just do two things to become an excellent programmer: (1) write a whole lot of code, and (2) read a whole lot of code. Do that, and you're all set.

To expand on that: look for opportunities to write code, any code. Develop your own personal projects. Work on ProgrammingPraxis puzzles. Take small gigs from Craigslist where you sharpen your skills and charge a reduced rate. Try every and any programming paradigm you can, from Visual Basic to Haskell.

But, it's not enough to write code. You need to learn good style, and expand your horizons. That's where reading code comes in. There are lots of places to do this: pick up quality books (like, SICP), follow programming blogs, read the answers to puzzel sites, take on work from Craigslist that requires you understand a code base before you operate on it or download open source projects like WordPress and crack them open to see how they tick.

Oh, and reading code isn't a passive activity. It means getting in and adding debugging statements, breaking stuff, enhancing stuff. Get your hands dirty. You'll only truly understand code by changing it.

So there you have it: read code. write code. Oh, and maybe watch this video, over and over. This process takes a long time. There's just now way to rush. Your skills will get there.


  1. Good advice; even before I was a programmer, I was a serious amateur photographer. The three words of advice I used to give to people wanting to learn photography were: "look at pictures." Programming is the same way.

    Another habit that's always helped me is this: make it a part of your nature to attempt things you don't already know how to do. Day-to-day, this might mean simple things, like looking into API calls you haven't used. Over the long term, it may mean learning whole new frameworks, technologies or languages. Gradually, knowledge will accumulate.

  2. @TechNeilogy -

    Thanks for sharing, that's excellent advice!