GREG MAJOR

the (continued) pleasure of finding things out...

Learning To Program

From time-to-time, I’m asked, ”Greg, what’s a good way to learn how to become a programmer?” To this day, I have a hard time answering that question. I got into programming nearly 20 years ago simply because I was lazy. I was working in a machine shop using AutoCAD and quickly grew tired of dealing with the repetitive nature of some tasks. At the time, AutoCAD had two principal methods for extension - AutoLISP which was a specialized and ADS which was a C variant. Jarb, my colleague and first programming mentor, showed me the basics and I was off and running. It wasn’t long before I realized that I enjoyed programming much more than what I was being paid to do.

So when people ask me what the best way is to learn how to become a programmer is, I frequently respond with, ”Find a problem that nobody has solved yet and go solve it!” Quite often, this results in a slightly puzzled look and a mumbled statement about some book they bought that guaranteed they would learn XYZ.NET in 21 days. Depending on my mood, I’ll try to explain that a solid engineering principal (and one that applies to computer programming) is to only build something because it can’t be bought, but that usually ends the conversation.

The trouble is, people have a tendency to approach programming from a tool-centric point of view. They say things like, ”Greg, I want to learn C#! Where do I start?” or ”Greg, what’s the best way to learn PHP?” If I’m feeling impatient that day and they can’t tell me what problem they want to solve, I’ll probably just say something like, ”Sign up for a class at XYZ. That’ll get you going. Let me know if you get stuck.” and move on. If they do have a problem to solve, often I’ll simply say, ”Why not just download ABC software?” which makes me seem a little thick to some, but the smart ones usually read between the lines.

If you’re one of the people that’s asked me the question and you feel like I’ve blown you off then I will say that I’m sorry. Hell, I’ll even buy you a beer sometime. See, I have no interest in teaching you calculus. However, if you bring me an interesting problem that requires you learn calculus to solve then now we have something! If I need to help you learn calculus along the way then that’s great! If you ask, ”Greg, I want to learn geometry because I need to find the surface area of a cylinder” then you’ll pique my interest, but I’ll probably respond with “2 (pi r 2) + (2 pi r) * h” since the problem has already been solved.

If, on the other hand, you came to me and said, ”Greg, my grandfather really loves geometry. It’s a hobby of his. Unfortunately, his eyesight is failing and he can’t see the screen well enough to use the calculators that are currently available for Windows. I want to learn how to program so that I can write one for him.” well then my friend you will have my undivided attention! We’ll dig in to this problem and I’ll help every step of the way. Not because your goals are somehow noble, but because you’re approaching programming the same way I do… solve what hasn’t been solved and learn what you need to learn in order to solve it along the way.

Alas, there re still those that insist they want to learn how to program and yet have no real problem to solve. Well, in an effort to be a little more helpful, I’ll suggest that if you are a complete novice you might want to check out Small Basic from Microsoft’s DevLabs. Okay, so BASIC isn’t exactly sexy, but you have to start somewhere and Small Basic is designed as a learning tool. Download it, work through the exercises, and we’ll have some foundation to build upon. Good luck and let me know if you get stuck.

Comments

There are no comments for this entry.

Name:

Email:

Location:

URL:

Comment...

Please enter the word you see in the image below: