How many times have you heard someone say – “we want to implement this - component or framework or service or platform - so we can reuse it over and over again…” – or some variation of this theme? The underlying assumption here is that it is better to get to_the right_implementation of a component so the team doesn’t have to touch it again. Let’s make it perfect, is the reasoning.
I have rarely seen this work in practice. In fact, it is very difficult to create a single perfect software implementation. After all, your team’s understanding of the nuances and subtleties of your domain grows with time and experience. That experience is earned using a combination of trying out abstractions, continuously validating functional assumptions, and ensuring that your software implementation is providing the right hooks to model and accommodate variations.
You won’t write once – specially if your team lacks hard-won experience to create high quality abstractions. Embrace the idea that you will write something multiple times – not because it is desirable, more because it is inevitable. Deliver value to your business iteratively and deepen your understanding of both the problem and solution spaces. You will be pleasantly surprised with the results.
In this book, I will provide practical set of ideas, practices, design strategies, and tips to succeed with systematic software reuse. It can help you with building reusable components, frameworks, services, or large-scale cloud platforms.
Vijay Narayanan, guides multiple engineering teams that build self-service, multi-tenant platforms using cloud computing and systematic software reuse techniques. He has worked on several software projects ranging from single user systems to large, distributed, multi-user platforms with several services. His current focus is on large scale data stream processing platforms, application resiliency, computer immunology / promise theory, and distributed systems.
Disclaimer: the contents in this book is the personal opinion of the author and does not necessarily represent the opinion of his employer. The author will accept no liability for the use of the information or action taken based on any information provided through this book. Any use of the book's material in articles, white-papers, wikis, blogs, etc. must be attributed to me directly without any reference to my employer. Use of my employer’s name is NOT authorized.