Generally, when someone expresses interest in programming they are told to take a programming course. “Bob, why don’t you take a Java class at the local community college? Sounds great Sam, thanks for the suggestion.” Java 101…
Week 1: “This is a computer, here’s how you turn it on, it has pieces, and they are all connected together and they do stuff. If you hit the little keys on the keyboard you can make the computer do things, like crash just when you’re writing your term paper that you forgot to save.”
Week 2: “Java is a programming language, it runs on computers, you can write programs with it to do things. Java was created by some people that are a lot smarter than you. Ok, let’s start with primitives.” But wait, I thought we were an advanced species? And it continues for an entire semester. You learn how little pieces work, but no idea what to do with them, how to put them together into a cohesive whole, into a program that someone might want to use.
I’m not going to pretend to be an expert on any programming related topic. I can only tell you what I’ve experienced during my attempt to learn programming. And the traditional structured education path doesn’t work for me, or at least it hasn’t so far. All classes have been about the same. They start by focusing on little pieces, but give you little sense of the bigger picture. You learn just enough along the way to keep you from failing. But unless programming comes naturally to you, by the time the class is over you’ve forgotten everything you learned and you’re back at square one.
It seems to me a better approach would be to focus on a goal. This semester we are going to write a program that does XYZ, and we are going to be using the ABC programming language. Don’t worry, it’s going to be confusing at first, but we are going to break apart this program, piece by piece, focusing on each piece one at a time. Each piece is going to teach us important concepts about programming and programming languages in general, but also about the specific syntax of ABC. But you should understand that you could probably write this program in 20 other languages. Doesn’t that sound better than, “this is an int, you use it to store numbers”, “this is a string, you use it for text”, “this is a class, you make objects with it”, etc.?
So, let’s do that. Let’s start with the big picture and then drill down into the details. We can use my first Windows Phone program as a starting point. I’ll walk you step-by-step through the process I used to develop it, the things I had to learn, what I learned I still had to learn, what I realized I could and should have done differently, etc. This is going to be as much of an educational process for me as for you.
We’ll get started in the next installment. I’m hungry.