What A Programmer should be (IMHO).

I have read in this old blog entry by Endi and get interrested about it. For a sort recaps, the entry was describing a quality programmer should be. It recommended people as a programmer to have:
  1. Base knowledge about the underlying operating system (multithreaded etc).
  2. Base knowledge about network and the protocols such as http, ftp, smtp, etc.
  3. Base knowledge about relational database.
  4. Internalization (he said explicitly as unicode, but I guess unicode not just i18n).
  5. Computer Languages.
  6. Version controlling.
Well, those adequate to make you a good programmer for some small need. Well, the truth is, if I ever have the chance to select my own employee for programming, I would say that those are secondary and not that so really important. With my own terms, I will try to say what that really matters to me for someone to be a good programmer:

#1: Know How To Documenting Your Piece of Code

Sadly, the most important aspect of programming is something that lacking out of those programmers. I know that this is something trivial, but the reality talks that not so many programmers have this kind of attitude. This behavior is making so many good code lost and obviously making a lost over company treasury. How many times do you have to write the code from scratch just because of bad source code?

Remember: Not everyone understand your code, not even YOU in later time.

#2: Have Knowledge of Standard Coding Style

A good coder must have a coding style and be consistent on it. Unless when the person must
conform into a bigger cause (company guideline). To start with the good style, one can conform it with the standard in each programming language. For instance, take Java. Java insists on naming each object with no caps, class name with caps in first letter, and all caps in constants (or finalize objects).

The second reason is because there are so many editors out there that could edit a code. Sometimes, we must cope with different editors because of the feature we need. Or, simply because Emacs is not everyone's favorite, not also ViM (not flaming), everyone can have their own favorite editor and it's your job to improve readily of your code.

It's a nature of enterprises and software houses to have many coders as their employees and it would make so much effort to maintain the source code if the company doesn't have standard. Good company have one, but if not, programmers should.

The best coding style is when it is consistent all the way.

Remember: BADLY WRITTEN CODE introduce bug.

#3: Have Knowledge About Granularity

So many projects failing apart because of the brute concept of their programmers. The patching technique they use is absolutely buggy. They patch here and there, have a need, write here, patch there. Voila! The code become a giant wasp nest.

Each programmer must know what they are after. Programmer must never code in darkness. There are concepts of granularity that exists out there and a good programmer/coder must really understand that to be enlightened.

The concepts that ought to know:
  1. Modularization.
  2. Model-View-Control (MVC).
  3. Your application's architecture.
  4. Coupling and Decoupling.
You could google them, except for #3, the architecture. The architecture is about the file structure, ABI, how your application manage its scalability (pluggable/extensions, or just a plain), and something like that. Architecture is about how your application managed.

I know some of this stuff is belong to System Analyst not Programmer. But, the reality is it's the programmer that decide the end architecture for the running application. The model that is in the document is not right anymore. This lead into certain catastrophe that makes the children whom inherit suffer.

Remember: Bad granularity == bad application == bad maintainability == you suck!

#4: Know About Knowing

The problem with this world is people come and go, so do programmers. It's not so fair that the programmers has so much fed by the company but in the end they just walked away with the knowledge invested in them. This is bad!

The thing that a programmer should know about knowing:
  1. Documenting what he/she knows, share it to friends, write a white paper about it or just wiki it or else blog it.
  2. Savvy on how to use the ultimate information system: GOOGLE.
  3. Savvy on reading someone's documentation.
Remember: Share to your friend and don't hesitate to learn.

There are more that I would love to add as a good programmer. But, I think the four things is what the most important for me to become a good programmer. Programming language is a tool and people can learn it if they understand the #4. Besides, a fresh programmer will never be involved in a project without ever being briefed. But, a project will ended up not being used or maintained because of the badly written code.


Popular Posts