Wednesday, April 2, 2008

The PROGRAMMER inside us

A computer programmer is simply defined as a person who writes a program which comprise of a set of computer instructions for the computer to execute. It sounds easy and interesting too. But what does it takes to be a successful programmer ?

Programming requires a rather unusual combination of aptitudes and interests. A programmer must be able to think abstractly and logically about a problem, and must also be able to do work at high precision.

One must be able to think through a problem and break the solution down into a series of small steps or modules. Mathematical aptitude and interest are essential, but a formal mathematical training is not that crucial.

Most programmers are good at solving puzzles, and probably more importantly, "enjoy" solving all types of puzzles. Many play chess. Because of the importance of a sense of logic, timing and the need for meticulous attention to detail, musicians make good programmers. Most importantly, successful programmers ENJOY programming.

After analyzing the problem and its solution, programmers must be able to shift emphasis and concentrate on saying exactly what they mean to say in describing each step. Ability to EXPRESS rather than to IMPRESS is more important.

To make matters more complicated, these instructions must be written in a “foreign” language which is a compromise between the human and the machine.

When writing instructions, the programmer must be very precise. One must avoid being tense or worried about making mistakes. One must always strive for perfection of detail while fully realizing that the finished work will probably contain some errors.

That is why most people who ends up marrying a programmer will find that it is not easy to cope up with their spouses. They tend to be very meticulous about everything in life, even the nitty-gritty ones. Precision and perfection is their way of life. In fact, they’ve been trained to be that way.

A sense of humor is essential too. All programmers learn to laugh at their own errors, or rather at their own “stupid” errors.

Compensation for the frustration experienced in trying to locate errors (debugging) may come from the knowledge that any problem is solvable. Failures (if there are any) are entirely due to one’s own errors, not due to machine malfunctions or any negligence on the part of other people.

Few experienced programmers expect a program to run perfectly the very first time. They realize that if they were careful enough to avoid ever making any kind of error, they probably would be working too slowly. They learn to strike a balance between avoiding errors and producing the program within a reasonable time with reasonable total effort.

Debugging (the process of finding one’s programming errors) requires persistence and self-patience. One writer defined debugging as the art of extracting needles from haystacks !

Programmers must be able to work with other people. Soft skills must be good. This is especially true when they are developing new applications. By working closely with the users of that system, the programmers will be able to give the users what the really want. When the system is installed, they must work with the users and with the operating staff to ensure the system works correctly.

During the programming and testing phase of system development, programmers normally work alone, although on large projects there probably will be a programming team. On these large projects, each programmer is only directly responsible for part of the entire system.

A programmer must be able to accept responsibility for his/her own work. When a program or a portion of a large program fails, there is no one else to blame but the programmer who wrote it.
The quality of the programmer’s work is always evident to everyone concerned with the assignments. Most programmers like this situation in which they are responsible for their own work and at the same time they have complete control over the success or failure of any project to which they’re assigned.

TO SUMMARIZE : a programmer needs ability to think abstractly, the ability to work with detail, the ability to communicate with other people, a liking for technical responsibility, and patience in the frustrating task of hunting for obscure errors.

Those suited for this type of work may find that they are entering a very fascinating and rewarding environment, rewarding both in the sense of job satisfaction and in the sense of opportunity for financial rewards and advancement.

Of course, this description of a typical programmer is a generalization and, as with other generalization, there are many exceptions. Nevertheless, these descriptions can provide clues to whether one is the type of person likely to become a happy, successful programmer.
To all programmers out there - I salute u guys !

1 comment:

Anonymous said...

Thank for the info. Nice article u got here. BTW, did u wrote it yourself or you copy it from some where else.