Friday, June 14, 2013

One person's hack is another person's gem!

Most of us have probably heard the idiom: One man's trash is another man's treasure!

Even though I have heard this many times in life, I never realized how true this could be until a few weeks ago. I was attending a conference track, and the presenter, an Engineer working on a  great innovative product, was explaining the challenges the team faced while working on the product. During this presentation, the Engineer mentioned about a session timeout problem while using a very popular open-source product, and how a developer from the open-source product team helped out the Engineer by writing a JSP (Java Server Page) as a workaround for the session time-out problem. As the Engineer was describing how smart the solution proposed by the developer was, I couldn't help thinking why this solution couldn't be regarded as a hack. Having developed many Java enterprise applications myself, I just couldn't understand why a JSP was required to address the session time-out problem of two servers components interacting with each other. This is not to say that this solution is wrong, it's just that I wouldn't have solved it this way.

I have never believed in hacking myself out of a coding problem, however, there are companies and developers who believe in it and some even organize "hackathons" to celebrate their IPO launch. So now I understand that "One person's hack is another person's gem", just the way "One man's trash is another man's treasure". I guess as long as we enjoy what we build, hack or gem is just a matter of perception, and this is one of those things that makes the world go round.

Wednesday, January 9, 2013

Why is history so important?

When Einstein was asked "What is that one thing that should be taught in school?", he replied-- "History." Einstein didn't mean the history about a civilization, but the history of the subject that is being taught. If you are learning Physics, then you must learn about it's history, and understand how the field has evolved over time. As a graduate student at Santa Clara University, I remember a wise professor repeatedly iterating the same sentiment in a computational logic course. The professor kept reiterating--"History is important, it tells us why things are this way."

In my opinion, software engineers are notorious at ignoring the importance of history. I don't blame them, as I never had a subject that explained the software engineering evolution from a historical point-of-view. Just ask yourself--How many Java developers truly understand why it was created when another (dominant) object-oriented programming language (C++) was around? I bet that most universities and schools that teach the Java programming language never bother to explain what led to its existence. Java was created as a language for the web, and the main reason that it is such a success is because of it's "Write Once Run (or Debug) Anywhere" feature. The concept of having a Virtual Machine (VM) has really revolutionized programming; no wonder we now have many more languages that use the same concept.

In my opinion, to be a successful software engineer, it is important to understand the history of the technological evolutions. There are researchers--in academia and business--that understand this evolution, and they are the ones that are coming up with new technological advancements. Just something to think about then--people who understand history are the ones who have a place in it.