Sunday, November 1, 2009

Are you a hacker?

A hacker is normally considered someone who can break into a remote computer and can steal or destroy data files which may be worth millions of dollars etc. Initial hacker stories were also centered around some clever computer programmer with skills to break into Pentagon computers bringing USA/USSR on the brink of war. This is a negative portrait of a hacker. This is, at best, layman's definition of a hacker.

A hacker is more than this definition. He is probably someone capable who is highly motivated to solve a given problem with any amount of effort using his insight and thinking to recognize shortcuts. He is curious and determined to find a simple solution to a complex problem; a solution which no one else is yet able to conceive.

Paul Graham's essay Great hackers is a must read for any one who wants to become a great hacker. On recognizing hackers around you, he says:
The problem is, if you're not a hacker, you can't tell who the good hackers are. A similar problem explains why American cars are so ugly. I call it the design paradox. You might think that you could make your products beautiful just by hiring a great designer to design them. But if you yourself don't have good taste, how are you going to recognize a good designer? By definition you can't tell from his portfolio. And you can't go by the awards he's won or the jobs he's had, because in design, as in most fields, those tend to be driven by fashion and schmoozing, with actual ability a distant third.
Eric Raymond, a great hacker himself, has a written an article on how to follow steps to become a computer hacker. The hacker attitude, he writes, is:
  1. The world is full of fascinating problems waiting to be solved.
  2. No problem should ever have to be solved twice.
  3. Boredom and drudgery are evil.
  4. Freedom is good.
  5. Attitude is no substitute for competence.
On cultivating hacker abilities, he cites this short poem:
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
And being a master himself, he advices these steps:
  1. Learn how to program.
  2. Get one of the open-source Unixes and learn to use and run it.
  3. Learn how to use the World Wide Web and write HTML.
  4. If you don't have functional English, learn it.
And to achieve hacker status, according to him, you also need to:
  1. Write open-source software
  2. Help test and debug open-source software
  3. Publish useful information
  4. Help keep the infrastructure working
  5. Serve the hacker culture itself
Paul Buchheit, a great hacker who created GMail at Google, recently wrote an excellent blog post which neatly sums up all the thoughts behind philosophy of hacking.
Every system has two sets of rules: The rules as they are intended or commonly perceived, and the actual rules ("reality"). In most complex systems, the gap between these two sets of rules is huge.
Sometimes we catch a glimpse of the truth, and discover the actual rules of a system. Once the actual rules are known, it may be possible to perform "miracles" -- things which violate the perceived rules.
The words "in most complex systems" in above definition broaden the scope of hacking. It is not limited to computers. Finance, economics, medicine, business, education, human resource, politics are all examples of complex systems.

And on hacker's mindset:
We're often told that there are no shortcuts to success -- that it's all a matter of hard work and doing what we're told. The hacking mindset takes there opposite approach: There are always shortcuts and loopholes. For this reason, hacking is sometimes perceived as cheating, or unfair, and it can be.
When comparing hacking with thinking I find strong correlation. Hacking is a new and simple way of solving old problems. Hacking is a different life perspective. Hacking is lateral thinking.

So back to our original question. Are you a hacker?

If not, take the advice of great hackers, and be one. (Note to self, you should too)

No comments:

Post a Comment