The Long and Winding Road

I've lost track of how many times people have written to me and asked how they can 'become a programmer'. Probably about the same number of times people have written to me asking how to 'become a games designer'. I thought, therefore, I'd better write something up about the subject. This piece will deal with the first question, and later (at an unspecified date) I will deal with the question of becoming a game designer.

First I should explain what this article is not. It is not about how to get the qualifications for a programming job, or how to actually get a programming job. This is because different countries have different qualifications and different routes to getting those qualifications. In addition I'm entirely self taught, and I have never done a formal computing science academic or vocational course.

I don't want to knock courses, but I must caution you that although you can go on a course to learn how to program, that will not make you a programmer. This is not necessarily the fault of the courses, it's because programming is one of those crafts that you need to continually practice in order to become fluent.

The best analogy I can come up with is learning to drive. You drive with the instructor for maybe five lessons. This first part is teaching you the mechanical bits, where to put your feet, how to change gear etc. After that you know the mechanics of driving, but you can't really drive, you still have to think what to do with the pedals and remember to look in the mirror, signal turns etc.

So what do you do? Book loads more lessons? No, of course not, you find a friend with a car and get them to sit with you while you drive round and practise until you can really drive and the mechanical things are reflexes. Only at this stage can you start to take notice of what other cars are doing and start to drive safely. Finally, you go back to the driving instructor, but this time the lessons are to teach you how to pass the driving test!

Computing courses can do the equivalent of the first and the last part of the lesson, but what they can't do is the middle part which really makes you into a programmer.

So how do you become a programmer?

Well first you must realise that programming is not for everyone. In the programming business there are a lot of square pegs in round holes because careers teachers noted the shortage of programmers some years back. Instead of directing students who didn't know what they wanted to do towards teaching, they started to point them in the direction of programming. "You can always get a job in programming", I believe the litany goes.

Yes, you probably can, but you will live to regret it and your days will be filled with boredom and frustration.

OK - so I haven't managed to put you off yet? How about this one. The language you so carefully learned will probably be obsolete within 3-5 years and you will have to learn a completely new one! It may even become obsolete before you have finished learning it. If you become a programmer you are committing yourself to a lifetime of reading and learning new methods and languages.

Well if you survived this far, you may make a programmer.

Programming is a bit like playing a musical instrument. Some people - the lucky few - can just pick it up and go. Most of us, though, have to sweat at it, learn the techniques and practice them. So how do you get started?

First you need to decide what machine you are going to program on. Yes, you do have to actually write programs, you can't just learn the 'theory'. A modern decently specced entry level PC is good enough for learning, since you will be unlikely to be writing 100,000 line programs any time soon.

Then, of course, you need pick a language to learn in. This is always a difficult question. I like C++ (and before that C), but I suspect that has something to do with the way my thought processes run; I find it 'natural'. I can offer some suggestions about what to avoid - assembly language for a start, also COBOL and FORTRAN. FORTH is amusing, but a bit esoteric and probably not for beginners. Java has a reputation for being 'cool', but I really wouldn't recommend bothering with it until Sun hands it over to a standards body to sort out. Apart from the C family that leaves us with Basic and Pascal.

It is very fashionable to knock Basic, because it, allegedly, allows you to write such horrible programs, but I'm not convinced. Modern Basics are much more structured, and my experience is that chaotic people can write spaghetti code in any language. I learned programming in Basic, and used it for several years until micro-computers could cope with more sophisticated and powerful languages like C. It is well worth thinking about.

Another alternative is Pascal, which was designed as teaching language. Over the years a lot of work has been done on it to turn it into a useful production language, culminating in Borland's Delphi, which is well worth considering as a possibility.

Finally, a recent entrant to the programming scene is Python. Python was only just appearing on the horizon when I originally wrote this article, so it didn't feature. However, I have to say that I'm impressed. It's an interpreted language that's fully object oriented. As an interpreted language a learner can get immediate feedback on mistakes and errors. I'd thoroughly recommend Python for anyone coming to programming for the first time, and as it happens one of the best books I've ever come across for new programmers teaches you Python - 'Python programming for the absolute beginner' by Michael Dawson.

And while we are on the subject of books, if you decide to go for C++ then the book to look at is 'You Can Do It: A Beginner's Introduction to Computer Programming' by Francis Glassborow.

If you are going to program under Windows then you will probably need an IDE (Integrated Development Environment). This provides you with an editor to write the programs (you can use a word processor, but I wouldn't recommend it), provides facilities to directly call the compiler, and looks after the housekeeping. Most of the major windows compilers come with their own IDEs, you need to decide which one you want to go with.

If you ask programmers for advice on what to use you will get as many different answers as there are programmers to ask! For the record, I use the following:

For Windows programming I use Borland C++ Builder 5 and its built in IDE. I have also used Borland Delphi, which has essentially the same IDE, but I prefer programming in C++.

For Unix programming I use the GNU cpp C++ compiler with an editor called nedit, and GNU make to control compilation. A good alternative editor is one of the GNU emacs family.

Next you go into the nearest decent book store and head for the computer section, that's how. Ignore the on-line bookshops like Amazon, they are a waste of time. You are going to have to learn from this book, it's important that you look through the available books and pick one that you feel comfortable with. No one has yet figured out how to let people handle books on-line...

Note how much it costs, because you will spend the rest of your life buying books like this at the rate of one or two a month! It is possible to use the local library, but things are moving so fast that they are unlikely to have up to date materials available.

Now - the most important part of all - write a real program. Yes, a real one that does something you need. Exercises in books are all very well, but they are just - well - boring exercises, which pale into insignificance compared with the excitement of writing your own programs for your own use.

At this stage it matters little that other people have probably already written programs to do what you want. Later, when you have tried - and succeeded - in writing your own program, you can look at other peoples' programs to see other, perhaps better, ways to do it.

There is nothing comparable to the excitement of having your own program work - your program, the one you thought of, the one you designed, the one you wrote, and the one you sat up with fixing the bugs long after your normal bedtime.

You want to be a programmer? Then take advantage of a unique freedom - the freedom to program. Programming is an intellectual exercise, you do it in your brain, and no one can take it away from you.

Your program is broken? Look at the source code and fix it, no need to go and buy parts in a shop. It's yours and yours only, and it's yours to fix by the power of your mind.

If you find that you enjoy programming, if you get a 'rush' when your code works properly, if you enjoy finding better ways to do things, then you will get hooked on it and blow every spare penny on it for the rest of your life.

Welcome to the club!


Alan Lenton
13 April, 2014


Read more technical topics

Back to the Phlogiston Blue top page


If you have any questions or comments about the articles on my web site, click here to send me email.