The dilemma of the agnostic software architect
July 4, 2010 Leave a comment
We have been spreading a different thinking in our customers advocating that their products needs to be somehow technology agnostic. So what that could possible mean?
A meeting with my customer put forward an important discussion about whether they should build or buy off-the-shelf components to integrate into the new product release which radically change its environment from to web. I mean from Delphi to ASP.NET.
They were conducting their migration process based only in the ASP.NET available functionalities. They’ve shown a research, comparing a past Delphi solution with a possible .net solution. They pointed out a range of off-the-shelf components like ajaxControlToolkit and many others which they wanted to purchase.
Desktop and web solution are different paradigms indeed and demands different kinds solution and methodologies. They didn’t see that all they need would be simply being done at home.
One may think about limitation of the web, and we believe about the wide range solution the web can provide. Take the example of some industry leaders like Amazon.com and Google. Do you really believe they follow Microsoft & Java framework versions and keep using off-the-shelf components extensively? Actually YOU may use what they provide.
I’m not saying that we shouldn’t use off-the-shelf components, there’s nothing wrong with that. We need to balance about its usage. For example, the Enterprise Library Logging Application Block offer many options to log information into the text files, event viewer, e-mail and databases. But my application only needs to write log in the event viewer. Having many options doesn’t limit my application IF IN THE FUTURE I want to change log directions. Future seems so distance, so intangible that it must be preferable write a small components with fewer lines providing same functionality instead of having a monster component with lots functionalities and overhead. (Have you had time to look their code? Probably not but you may want if your product start to perform badly or if you change from one version to another, or if you may want to use MySql instead of the SqlServer!)
At the end, what we always are looking foward is a clean path to quickly deliver value and avoid spending time working bugs out.