What Makes A Programmer
Written by Mike James   
Thursday, 01 August 2024
Article Index
What Makes A Programmer
A matter of time

The following account is based on personal experience and you can feel free to disagree with it. I can only hope that doing so illuminates your opinion about this strange and amazing thing we do with symbols that is called "programming".

I have taught a lot of people to program from scratch.

Before they had no idea what a program was - after they could at least create a simple program. The range of abilities and the ease with which students acquired the skill never failed to amaze me.

Some took to it so fast that it was like watching something being pushed over the edge of a steep slope. They tumbled so quickly from non-programmer to programmer that the learning experience verged on the chaotic with them impatient to get ahead and sometimes missing something important in the process so looking not quite as smart as they thought they were!

However no problem - they clearly would get the whole subject mastered even if left on their own.

At the other end of the spectrum there were students who just struggled to keep up. They understood the ideas, asked intelligent questions but when asked to write a program they seemed to stall.

Almost as if some bit of their brain wasn't connected to another bit that did the programming. Over a much longer period of time the connection was usually made but it was a much slower process.

So what is it that makes the difference?

Algorithmic thought

Of course I can't be certain that I know because to be sure it would take quite a few psychology experiments and measurements and with all that fun programming to be done who has the time?

But I am fairly sure what the differences are, and there is some research to back up my scientifically unfounded ideas.

It has long been known that the the most important trait as far as predicting how good some one will be at programming is mathematical ability. If you are good at math then you are probably going to be good at programming.

I've also held the view that if you are good at programming you probably should be good at math and if you aren't then you almost certainly confused math with arithmetic - they aren't the same thing at all.

blackboardCredit: cyberscooty

Notice that I'm not saying that you need math to be a programmer or that some how programming is a branch of math. What I am saying is that whatever part of thinking is used in programming it is very similar to what is being applied in math and vice versa. The same is true for some other branches of science but it seems to be related to how mathematical they are. 

 

So what else makes a programmer a programmer?

Memory

First off you need a good memory.

Why?

Because you have to keep track of variables and the current state of things that have an influence on the area of the code you are working in. Think about it for a moment. You pick up some code and look at say three of four lines that do something.

To make sense of it you not only have to follow the local text but have a clear idea how it relates to the rest of the code. In other words you may be focused on a few lines of contiguous code but to work on it you have to keep the rest of the code in your head in some form or other.

This isn't a simple memory task because it is about understanding the code in the context of the rest of the program - but a good memory helps with making connections between the local text and the rest.

So a good memory helps, but the memory is of a special sort - symbolic and sequential - and the reason that math is a good indicator of programing ability is exactly the same reason - its about the ability to manipulate symbols.

To be good at math you have to have an ability to construct a serial argument often using abstract symbols. You have to be able to start with some facts and reason one clear step at a time to the result. There may be many steps but a good mathematician will not suddenly make a jump that hides some of the steps.



Last Updated ( Thursday, 01 August 2024 )