Node is doing to backend Web programing what HTML did to desktop applications
I started programming with edlin in MS-DOS using batch files. Later on I evolved into doing Turbo Pascal and at some point I went to a school where they thought C++, Power Builder and Java. Luckily at that moment something crazy started happening, this thing called World Wide Web. All of a sudden you could without any expensive tools or servers. All I needed to do was learn Pico and get an account on the College system.
What was even better was that I could just loom at the stuff others had done and just copy it onto my site. I am not a very smart person and I need to do practical things to learn. Therefor this way of learning was amazing for me. Previously of I wanted to learn something in Pascal I had to read a huge book or some way get my hands on some source code and print it or copy it onto a floppy.
The Web completely changed the means of production where the tools where free and the code was also available in plain sight for anyone to copy. This, and of course some other stuff, completely revolutionized the way we created applications which previously was built for desktops and with proprietary tools. A whole new breed of programmers were emerging from the creative side. Designers learnt to do markup and some started building stuff in Flash. The emergence of the web also paved way for User Experience to become a more critical part of software development. Creating web based solutions meant new types of people became into coding. The new talent that came into the software industry soon leveraged the web into something that made desktop development something of the past. They took the web into in areas nobody would imagine. The Web has succeeded and will not disappear in the near future. Now, fast forward to 2010.
NodeJS and NPM
The beauty of node is that it taps into this base of programmers. What this does it that it unleashes the creative power of programmers without history of back-end programming to complement the mass of already awesome back-end programmers. One consequence is that these newcomers repeat mistakes made in the past. However they also bring fresh ideas on already solved problems. The added diversity is what has made the web an amazing platform for creativity for over a decade. Having the people who care about the front-end more empowered to taking control of the server side of things is a great thing.
The language of JavaScript with all it’s well documented flaws are being adopted by more people every day. One of the most awesome things to come out of Node is the amazing echo system of NPM modules. Being a part of this extremely vibrant community fills you with energy. There are just too many awesome projects out there to keep track.
Conquering both sides
Having server-side and client-side JavaScript merge together thanks to amazing tools like Browserify, the power of Node is even greater. When I code in Node it is a feeling of liberation and empowerment. Coding in Java or .Net stacks I tend to feel frustrated and claustrophobic, because there are so many hurdles preventing me from doing what I like. It is due to lack of competency, as I am no Java or .Net guru, but it is also due to the fact that these stacks are far more closed off. Is there a bug in the npm client, I can just pop open the file in any editor and fix it with just pressing save. Similar with all other tools built on top of Node.
Node is not perfect and it sure has it’s flaws. However, to me it has reignited my will to code and it makes things fun again. With an amazing eco system filled with incredible people, there is no doubt that Node is the most exciting place for people like me who just wants to create stuff. I believe that Node is doing the same thing to server-side development that we saw the web do to desktop during the 1990’s. Then again, I’m neither biased nor exceptionally bright so I could be wrong :)