UPDATE: Stackoverflow #41 is out. I bet it's going to be the most listened episode ever.
This morning I woke up, and suddenly I was flooded by tweets and posts. All of that were about the latest buzz of the moment: “Are Jeff and Joel going crazy or are they just playing going crazy?”.
I just want to think that, at least Jeff, is just playing the devil’s advocate, and giving a voice to the silent crowd that thinks that “getting things done” and “ship the product/project” is more important than crafting a good piece of software that can be maintained for long time. I HOPE it’s just that, and he is exaggeratedly pushing the opposite to try and reach a better balance between the two opposites.
First thing I want to make clear my position on the ALT.NET thing. When ALT.NET came out two years ago or so, I was skeptical at first, because I thought that, while the idea behind it was great (and it proved to be great), it was useless because 90% of the developers don’t care about their job and thus they do the least amount of work in order not to get fired. But then I decided to try and spread the word myself.
But going back to the topic of that post. I’ve an opinion about this, so, if you want you can skip directly to it, but if you want to form your own opinion, I’m going to summarize the main episodes of that saga:
We are like house builders at the time of Egyptians
I think it’s good that Jeff and Joel started this conversation, because it might help our industry grow a bit.
We are (to continue with Rob’s analogy) in the position of the first house builders at the times of the Egyptians: we are still experimenting and trying to find the best way to build software. Some Egyptian builders applied all the principles they had at the time, using good stones, with the correct design. Other used cheap wood, hold together by ropes, and the house was build just putting on piece on top of the other. The pyramids costed more money and took more time than the wooden house, but they still stand after 4.000 years, while the other houses probably went destroyed at the first sand storm. After thousand of years of tries and errors, house builders can now apply the right principles for each kind of house so that the quality of the house is balanced by the time and effort spent building it. Probably we will never have a pyramid that can resist 4.000 years (since we understood that applying all the principles can lead to higher costs and longer times), but also we don’t have houses that goes down at the first blow of wind.
But in Software Industry we are still experimenting: probably we will fall in the error of over-using the principles (as it happened with the building industry centuries ago), and then we will move back to balancing the two things, and using only the principles that matter.
The first paintings of the great masters were all classical paintings
But in order to be able to decide which rule and which pattern not to apply, first we have to master all the rules. Only after we have them in our skillset, we can decide whether to apply or not apply a certain principle because we don’t need it. At school I was always taught:
If you look at the history of painting you’ll notice that all great painters’ first paintings were classical paintings. Later they experimented different techniques, and finally they invented their own style.
Last final words
Probably I went to far on this post, and it also took me 3 rewrites to get it to this point, but what I just want to summarize here is that IMHO SOLID principles are good, and that must be in everybody’s toolbox. It’s no point in reinventing the wheel every time. But also pay attention to no overuse them, and apply them with grain of salt. But first... LEARN THE BASICS
Technorati Tags: SOLID,rant,codinghorror