Saturday, June 21, 2014

Hacking

Three decades ago when my career began as a software engineer, we had a very different world.




Before the age of Internet when we needed to learn a new language or  make ourselves familiar with a new piece of software we had four main issues; the amount of data was scarce, the variety of data was poor, the tools to mine data were few, and collaboration with other programmers was non-existent.

For example, to learn the language C, one had no option but read the classic book “The C Programming Language” by B.Kernighan and D.Ritchie, from its Preface to Index pages, line by line. It was and it still is one of my favorite books that influenced my generation and few others after us.

But learning the language as a practitioner was a different ball game. The language was just a tool, we needed to learn new techniques, examples, and good practices that show us how to use that tool effectively, and that was missing.

Today the entire landscape of programming changed dramatically.

What is strikingly evident that the scale and complexity of problems we need to solve increased, whereas the amount of time we and computers have remained the same. But to compensate for time-work imbalance we now have access to huge amount of data, we have huge amount of variety in data, we have rich set of tools, including new algorithms, proven design patterns, and we have collaboration methods at our disposal on a massive scale.

So all of this came down to a single mindset a modern programmer must possess today; “Hacking”.

Wikipedia defines Hacking as follows:

"The act of engaging in activities (such as programming or other media) in a spirit of playfulness and exploration is termed hacking."

Hacking gives you the edge, the advantage you otherwise would loose against time. It is no longer optional or limited to an elite group of enthusiasts, hacking became the necessity and the norm of our era.

Nowadays I hack all the time. I no longer read thick manuals or books but I Google programming questions, I go to Stack-overflow website, cut and paste code from there, I fork other projects from GitHub, I collaborate with other programmers whom I never met. The idea is, if the information is out there and accurate, it would be plain stupid to re-invent it. Open Source, copying, sharing are the new cool, practicing and exploring via massive collaboration is “now” and “the future”.

Hacking is a game changer so much so that it deserves to have its own 101 course in Freshman curriculum.


No comments: