Node.js, C and Agile – What do they have in common?
The answer is…
…all three are “lightweight”.
…all three were a result of fresh ground up thinking.
…all three had drastically simplified the existing way of doing things.
Quick look at their evolution
1972: Most commonly used languages (Cobol, Fortran, Algol, PL/1, Basic, APL) all had complicated syntax. The prevailing thought process was to add new language syntax for every new feature. Writing a compiler for such languages was a nightmare.
2001: The focus was on formal, well specified software development processes. You had SSAD, OOAD, and RUP. SEI had just released its CMM framework.
Then came the “Agile Manifesto”. Over a period of time agile processes started getting adopted everywhere. Every organization is having a serious look at agile and even SEI and PMI wants to coexist with agile methods.
2009: Web servers and App servers have been maturing. Features of SOA and ESB were getting incorporated. The footprint was getting larger and larger.
Then came “node.js”. It was a simple and light weight framework which could be used as a very lightweight webserver. It used non-blocking I/O. So the memory occupancy was drastically reduced. Adoption has already started. Only time will tell if it will have the same level of impact as “C” and “Agile”.
3 Laws of Success
- Success leads to complexity aimed at maintaining status quo
- Such complex systems cannot simplify itself
- It takes a revolution from outside to break the status quo
Some complex system fails like General Motors filed for bankruptcy in 2009.
Others like IBM reinvented itself.
The pages of history are littered with similar happening – here are 3 examples.
Alexander the Great, Prophet Mohammad and Genghis Khan
4th Century BC: Greece consisted of Athens and Sparta. Outside Greece you had Carthage, Persian Empire, Egypt etc. Macedonia was nowhere in the picture. Roll forward less than a century – Alexander the great of Macedonia was the emperor of the largest empire of that time.
600 AD: The world consisted of the Byzantine Empire in Europe & North Africa, Sassanid Dynasty in Persia & Middle East and Gupta Empire in India. Arabia, Mecca and Medina had not taken any part in history. Advance the history by couple of centuries – you see The Abbasid Caliphate was ruling the Middle East, North Africa and Southern Europe. Cordoba in Spain had become the most prosperous city of Europe.
1200 AD: There were many kingdom scattered around the world. Some like the Song Dynasty of China was at the peak of its glory. Others like Abbasid Sultanate were on decline. But, Mongolia had not taken any significant part in world history but all that was about to change. A century later, Genghis Khan and his descendants had established the largest connected empire the world has ever known.
Is there any lessons that we can learn from these examples?