Many of us developers, as an educational exercise, have written an algorithm or data structure that has long been entrenched in a library or module written and tested more vigorously than our own. Why write a sorting algorithm in a language that already provides a better sort? Why write custom code if there is already similar functionality already available? Beyond a learning opportunity, the experience is pointless when time-to-market is more of a priority and more of a payoff than developing customized solutions.
Developers tend to have a desire to write their own code, but often waste time re-inventing something that someone else has already written and provided a method for re-use. If you have a use-case, many times you will find that, in all probability, someone else has the same or a similar use-case, and has developed the code to accomplish the feat. Custom controls give an ASP.NET developer the ability to integrate functionality across multiple ASP.NET sites.
When a developer writes code in spite of it being available and functionally equivalent, it is what is called “Not Invented Here” syndrome. If a developer seeks out the work and knowledge that another has prepared, the it is what Proctor and Gamble coined “Proudly Found Elsewhere.” Many custom controls for a multitude of common web application features are already coded and distributed as dynamically linked libraries (DLLs) to the ASP.NET community. Microsoft, themselves, provide such a directory of custom controls on the ASP.NET site, with “over 900 controls and components to use in your own applications … everything from simple controls to full e-commerce components.”
The next time your project needs to fulfill a common use-case or a specification entails a feature that someone else would have a need for, instead of charging ahead with your implementation, take a step back and survey the offering of which components are already available to you and that you can take advantage of. Look past the common framework, and see what you can integrate from the work of others. And always remember that if you see a deficient solution, by all means code it up yourself, but consider sharing your work with others, so as to speed up the innovation across the industry. More innovation leads to more long-term opportunities for development for everyone.