The most exciting thing about this world is its ever changing quality.

Monday, August 24, 2009

Fiddling, hacking and engineering

We have people who do not really have experience in designing a system, no idea what to start from a blank sheet of paper, clueless when it comes down to pros and cons for different weapons of choice for the problems - I call them fiddlers. Fiddling things would sometimes turn out to produce some results, which will unfortunately encourage further messing... If this happens in your codebase, good luck with the quality.

The second type is hackers. (When you call a programmer a hacker, it is either an insult or genuine compliment, depending on the context. Here I will take both of these interpretations on.) Hackers are normally capable of breaking assumptions, finding out the hidden rules and enjoying planting tricks in the code. Some have a strange tendency to interwoven and complicated design on the face but extremely elegant and efficient inherently. To make others understand or maintain will never be on hackers' priority list. Good hackers always try to understand the underneath logic first before any actions are taken. On the other hand, in an insulting way, it means people tend to get on with the change, or Mr. fix-one-break-many. Most hackers are very keen to keep pace with latest and coolest gadgets, especially where they can make their mark on. Making money is kinda irrelevant at this point.

Engineers, a concept which many used to be proud of, but now sounds a little tedious and boring, or abused... In my mind, a good engineer is the key asset to a team, and an organisation. Being a good engineer is not only a challenge at skill level. It is much more than someone who knows what tools to use, what technique to adopt, how to fix bugs and how to use APIs. Good engineers understand the difference between playing with technology and building a profitable product. They also appreciate real requirements as well as feedback. They are by nature good marketers, contradicting to many people think - to advocate their efforts in a bigger scale. Those do what's been told and only translate human language into code are not exactly in this category I am talking about. Love to the code is much more profound I would say.

Get rid of fiddlers, hire and direct hackers, rely on your engineers.

No comments: