Blog Journeys of a Lifelong Learner
Subscribe
Reinventing the Wheel November 22, 2010
Software develompent is filled with repetition. Some say that repeating old projects is reinventing the wheel. Wheels have been mastered, so making them could be called a waste of time.
Reasoning against developing software to solve problems that have already been solved might include statemens like these:
- Almost anything that can be done in software has already been attempted.
- There are very few truly original products.
- Existing solutions are available for almost every computational need.
- New code presents many opportunities for inserting errors.
Why, then, should new solutions to common software problems be attempted?
- New versions of old ideas help to develop personal software development skill.
- A better understanding of how things work can be developed by building things.
- Building new implementations of known systems can yield new insights.
- Skill in building and implementing software should start with known systems.
Reinventing the wheel is useful if it helps you understand how wheels work.
Building simple systems that are well understood provides a solid foundation for future excellence in developing non-trivial software constructions.
Working on custom implementations of these systems can yield tremendous benefits in the development of personal expertise, even if future projects make heavy use of existing software solutions:
- blog systems
- shopping carts and online stores
- general-purpose content management systems
- contact management applications
- microblogging platforms
- and many others
Familiarity with existing code and ability to work with it is very important, but completely neglecting original development and the learning experiences it provides will destroy potential software development expertise.