Simple Features Thoughts about simple features in software development

28Jan/120

How did you fail now, Mr. Dumbass!

What was your failure now, Mr. Dumbass?

I have seen a lot of things about Node.js in the last 12 months. In the beginning I started following the hype on blogs and Twitter. I was interested in knowing what was so great about a JavaScript based socket server. The first time I thought it was something like a WebSockets framework. Then I understood it was something else, built to live in the server side and I got even more amazed. I thought there was something I wasn't aware of, like I was missing the great part of having JavaScript on the server side. I was ready to start working on a new project that involved Node.js so I could see its potential. I studied more about it. It was the moment I realized what was under the box of amazement: it was nothing. At least nothing new.

The real hype was because it was developed in a language that is affordable for almost every developer out there. Affordable not because its easy to learn but because it's everywhere. Even plenty of web designers know JavaScript decently enough.

I'm not saying it doesn't work, or it doesn't work correctly (in the end I haven't even used it).

The hype was driven because a lot of people had never worked with sockets and its various flavours (socket event handling included), people that has always been far from working with multi-threading (and it's debugging issues), people that has always programmed with a Software Architect by his/her side and using plenty of frameworks. People who has never had to profile and debug, and some of them who have never had to improve memory and throughput consumption when working with byte level protocols. And it's not that I think that low level programming is more interesting or more difficult, or just for computer geniuses. It because there are people that does that kind of programming, some other are great web designers, some others are great architects while some other code a lot of useful boilerplate.

Now, what happens when someone with a decent knowledge on JavaScript, but no experience at all in systems and network management, data transfer rates, network security, etc., starts opening network sockets all over the infrastructure: format errors, security breaches, stack overflow issues, and so on... because it takes a lot of time for server systems to get mature. So is with server developers. You will not make the next Apache just because you know JavaScript and know a bit about sockets; you will make the next Apache when you have gone a long way with development, network understanding, systems administration and many other stuff, and then you know a language better suited for low level programming.

And the real problem is with people that does stuff just because they can, not because they know. We have a lot of tools that deals with all of the "I don't know how"'s and turns it into an "I have a tool for that!". "I know a wizard", "I've read a tutorial", "My IDE makes it very simple" and many others also stand for the same kind of technology abuse.

Tutorials, wizards and tools are for improving learning and development times, not for turning any developer into an instant expert of any subject. We all must go a long way before really knowing something, and sometimes we think something will work great just because the tutorial example works perfect.

I used to work in a company where my former boss thinks that any time he asked "What was the failure?", there would be someone among us that knew every coding line in our systems and would give him an answer sooner or later. In order to make it happen we would have to implement as much as possible by ourselves. It would take us plenty of development time, but there were no large delays in problem solving. Some of our advantages were that we had a controlled network environment, and that we grew as a development team together with the infraestructure. We were dumber when the network was smaller. We would always had an answer for such question.

Whenever you have a problem and you don't know the whole picture, and you don't know how to fix it, the question will change  from "What was the failure?" to "How did you fail now, Mr. Dumbass?".

Image: Ambro / FreeDigitalPhotos.net