Food for Thought
Why are neat features like IConfigurationSectionHandler, Reflection, and XML so important? The answer is obvious but often overlooked, but here it is.
A lot of our business of software development is compared to and based on the building construction business. For example, the whole notion of design patterns has its roots deeply based on the book A Pattern Language: Towns, Buildings, Construction (Oxford University Press, 1997, Christopher Alexander et al.), which is a book about designing buildings and towns. And it's no accident that analogies are made comparing UML models to blueprints and code construction to constructing things like houses. While the home building industry is ages old, based on well-established practices and patterns—such as bathroom and kitchen patterns—what isn't often mentioned is that during the construction process there's a lot of glue, patches, shortcuts, tape, staples, putty, caulk, and cheap materials just under the surface in the average house.
Certainly I don't mean to imply that people in the construction trade are doing anything wrong. What I mean is that the average house may begin with a pristine blueprint, but if you pull the outlet plate off the wall you may find a crooked cut in the drywall. Pull up the beautiful carpet and you'll find a lot of construction debris. God forbid, pull some siding loose and no house wrap.
In a nutshell, the idyllic intentions of the architect are followed by the pragmatics of laborers and budgets, and if you're lucky you'll end up with a beautiful home. In the average case, eventually something will break and shortcuts will be uncovered. Building things—houses or software—is difficult, and for most customers it's enough to deliver a finished product, but can you imagine how hard it would be without a good framework to start with?
Paul Kimmel is the author of a number of books, including Visual Basic .NET Power Coding (Addison-Wesley, 2003, ISBN 0672324075).