After writing my last post, it occurred to me that much of software development is like creating bespoke components. No component is the same between two proprietors. There is no standardization.
A long time ago, this was also true of the manufacturing industry. Bolts nuts, and screws followed no standardized format. Before the micrometer was invented, bolts (which were inherently bespoke) required bespoke nuts.
I sense that software development is at a similar stage of evolution. Sure, we now have some standardized tools such as unit testing frameworks, UI frameworks and so on. But by and large, what we do as developers lacks the organizational benefits of a standardized system of components.
When we create a component and apply it, seldom is the same component used in a different system. How can we overcome that? How can we create a standardized nut and bolt that we can apply to all our software?
Is our only recourse to develop our own frameworks for our chosen niche?
Suddenly the idea of a motorcycle frame popped into my head. In motorcycle manufacturing a single frame is designed, and then different motorcycles can be configured around the same frame. I wonder, is the key to component re-use and the likelihood of re-use dependent on how different the products are?
After all, you can’t re-use a motorcycle frame in car manufacturing, the likelihood of re-use is largely dependent on staying within the realm of motorcycle manufacturing.
Similarly, like my pet project – the money management application – chances are I won’t re-use any of the components unless I continue developing applications that are related to managing money.
I wonder, how many different products or variations can I create using the parts from my money management application?