Reinventing the wheel
"Let's not reinvent the wheel" is a saying that means "Let's not waste our resources by creating something that already exists". I'm one of those people that are always inclined to "reinvent the wheel" and here is my defense. The concept of the wheel obviously doesn't need reinventing, however the concept of the wheel is not the wheel. If we look at wheels from their inception maybe 5000-6000 years ago, the concept stays the same: Something round that spins around the center. The actual implementation however changes a lot. We have:
- Solid round wheels
- Spoked wheels
- Wheels fixed to a spinning axle
- Any number of different methods of fixing the wheel to the axle
- Wheels that spins around the axle
- Bearings on the axle:
- Glide bearings
- Roller bearings
- Rimed wheels
- Wild variety in the dimensions on the wheel
- Any number of different materials used for all the things above
If I somehow lost one of the wheels on my Toyota, I obviously wouldn't try to make my own replacement wheel. There is only one type of wheel that fits and there are factories that makes new ones every day, way better and way cheaper than I ever could. But if I was building a Mars rover I would probably need special wheels that can't be bought off the shelf somewhere. Building software is not like servicing a Toyota. It's more like building a Mars rover. Even if you have done it before, the parameters are never quite the same as the last time and a lot of the parameters are simply unknown.