Wood versus Plastic

Thomas the Tank Engine I got this analogy after having Scott Hanselman in town, he has a specific ritual whenever he is on a trip. He wants to find a Thomas the Tank Engine to take home for his son Zenzo, but that is not all, it needs to be a wooden model.

I can only imagine how it was when the wooden Thomas model got a successor in the form of a metal model, like anything new it would have been more expensive then the previous model. It was probably the new ‘cool’ thing to have, more features and all that. The next model would be the plastic model, this again would be more superior to the previous one. More expensive as well no doubt. Now the interesting part comes; some people started seeing the craftsmanship that went into creating the wooden Thomas the Tank Engine, they appreciated the effort, they wanted that model instead of the modern mass produced stuff. I guess Scott tought his sons early to recognize quality and craftsmanship :). Now suddenly the old model becomes more in demand and it rises in value, it rises well above the original price and perhaps even above the price of the modern models.

So this is interesting, if you have the choice of buying a new model or a latest version of the old model (of anything, not just Thomas the Tank Engine), what should you do? When you go for the new, it will be the ‘cool’ thing to do, when you go for the old you will be seen as cheap. But you know that eventually this model will become more in demand, the only question is; do you live long enough to benefit from that?

So what does this have to do with Software Development you ask? Well I like to think we need to have the ‘old’ and the ‘new’ together, we want the craftsmanship of the old and we want the features of the new.

The old in Software Development are the Principles and Practices like the SOLID principles they have been around for a very long time; SRP (1979), OCP (1988), LSP (1988), ISP (1995), DIP (1996) (I found these dates in the PrinciplesOfOod by Robert C. Martin). All these principles are still very actual, also think about the Gang of Four book from 1996 where many, still appropriate, patterns are described. And of course Test Driven Development (1999). These form the basis for good design. In other words; “The Really Old Stuff”.

The new in Software Development are the languages and the frameworks that are being released by the different providers (OSS included). Think of the .Net Framework that brought us Lambda’s and Generics already, and in version 4 we get the dynamic keyword and parallel execution and many other things. In other words; ”The Really Cool Stuff”.

Separated from each other they are only mediocre powerful, but when you combine “The Really Old Stuff” with ”The Really Cool Stuff” you get an extremely strong and flexible solution on which you can continue to build your feature requirements without much pain. I like to call this; ”The Really Good Stuff”!
Hernan Garcia (gravatar)

As in everything, balance is the best approach.
I think your post reflects that.
The old is not passed if is good and the new it's not necessarily better. A consideration for quality it's of the utmost importance, and to achieve it a combination of the old and proven (practices, techniques, tools) and the new, maybe more powerful or more efficient or just plain new should be used.

Accepting the old and rejecting the new (or vice-versa) just because off "that" (it's old or new), have no merit.

I really enjoyed reading your post. BTW my son loves the wooden trains as well.

Hernan Garcia, Sunday, June 21, 2009 at 11:39 PM

Arvind (gravatar)

Both have their positive and negative points. Though we have to save trees and that's why the use of plastic is advisable.

Arvind, Wednesday, January 20, 2010 at 1:30 PM

Mark is reading

 
Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.