http://qs321.pair.com?node_id=379289


in reply to What are the most basic, generic aspects of programming?

The first thing said in a training course is something like this: "The most important aspect of programming is abstraction". I've yet to see a training course do that, but I think it'd be a really good idea if instructors started doing this.

Too often, I see second-rate programmers almost afraid of abstraction. I hear often hear a job-security argument when I confront them on this. They are afraid that if a program can do their job, then their position will become irrelevent.

Example: say I'm an administrator for a very busy site--4 GB of logs generated per day. Logs are useless all by themselves--you need some way of anaylizing them, either by hand or by a human looking over each entry. The second-rate programmers mentioned above would seem to want to hire people who have the sole job of looking through 4 GB of logs getting intresting bits out. Needless to say, this would be very expensive to the company, but it keeps people employed.

But it's keeping those people employed in the wrong position. To be useful as log-anaylizers, they'd need to be fairly highly trained in order to know how to pick out interesting bits from the noise. OTOH, a program or series of programs could anaylize the data and generate a daily report. Those highly-trained people are now useful for something else. Their jobs are still secure--they're just moving up a layer of abstraction.

This, I think, is the most important lesson for a new programmer. Don't stop where you are. Keep moving up a new layer of abstraction. Tedious jobs you did before become irrelevent, freeing you for more interesting problems.

----
send money to your kernel via the boot loader.. This and more wisdom available from Markov Hardburn.