Where to Start?

I get asked every couple of months how to become a developer — someone excited about technology who wants to learn “how to code.” And I think that’s great. But they’re going about it all wrong.

There’s coding, and there’s programming, and there is a difference between them. One is a prerequisite to doing the other well.

If you are a coder, you can (probably with one or maybe two languages), attack problems and solve them. It may not always be elegant or efficient, but it works. You’re able to Get It Done.

But if you’re a good coder, you can (with whatever language is thrown at you, and probably choosing the one that is best suited to the task) attack problems and solve them as well. You can do it quickly, efficiently, and with as much simplicity as possible (without over-simplifying and missing the target). You can Get It Done Right.

So what’s the difference? The good coder is also a good programmer.

Learning how to program is mostly language-independent. It’s about how to think like the computer. How to spot common kinds of problems and solve them algorithmically. To use one of my favorite example, when to use a quick sort or a shell sort. What kinds of data structures work better in different cases. And so much more.

Almost none of that depends on a single language. In fact, learning those things in a language you think you’ll be using on “real” projects is probably a BAD idea. Which is why many universities use languages like Ada or Scheme. By doing that, you get (at least) two benefits: you can abstract the language away and focus on the underlying programming; and when it comes time to do “real” work, you’ll be learning a new language, which helps cement the programming concepts.

It’s no coincidence that many self-taught developers are coders — but not all. The key is to search through the midst…and find a programmer.