Friday, September 5, 2008

So why "It Depends™"?

What's in the name? Let me start with a story.

I once worked for a client. You know the type. The one with huge "NIH" (not invented here) syndrome. The one where "open source" is a curse word. Thankfully there are a number of very bright and gifted people working there trying to bring about a change. But no matter how great those folks are, the story is not about them.

While there, we were looking into introducing Spring Framework as a back bone of future architecture. Every one who worked with Spring knows that there are number of ways of doing anything with it. Fried, broiled, baked, shaken, not stirred... After a while I had a standard response to each question that client asked: "It Depends...". My coworker, very funny guy by the way, soon added a "TM" to the phrase and mentioned that all usage of the phrase cost 10c payable immediately.

So that is the story. But that got me thinking. And the thought was: There isn't a golden hammer in software engineering. And this engineering thing is a big misnomer. Working with software is more like art vs. production line and model T. There are no preset measurements on parts. No stringent requirements. "This procedure must be completed in 101.23 lines of code". There is a final product that should do X. And how it does it - who cares!!! End user does not. As long as it does what the user wanted, performs well, delivered on time. It must be maintainable and bug free to be viable as a product going forward. That is where art comes in and "It Depends™" takes root.

How to solve a problem always depends on the context of a problem and surrounding problem domain. Who in the right mind would use a JSF + WebSphere Portal + DB to display a static html page? But some companies do that, because that is the stack they use for web based deployments. There are tons such examples out there. No need to look further than last project you or I worked on. Oh do I have some stories to tell about those :) Maybe next time.

No comments: