There is a paradigm shift in Software development methodology. Organizations today are moving from a pure “Project Delivery” mindset to a more dynamic “Product Engineering” mindset. This blog series helps us understand this trend.
Well, this story also has the usual, common place beginning: “Once upon a time”. Yes, there was a time when the term “software product engineering” applied only to Independent Software Vendors (ISVs). For the rest of software development, be it in-house or customer specific development work, it used to suffice if the software worked as per the requirement specifications. The focus was more on short term – how quickly could the solutions be rolled out. It didn’t matter if the solution was not generic; if it cannot accommodate future scenarios; if it cannot be used across locations.
However, today the expectations have changed. As bigger organizations focus on their spending returns, they want to develop solutions that could be reused; solutions that would work for today’s business units as well as future acquisitions; solutions that could scale to the next generation; solutions that could even be marketed as products. As a result, the principles that used to apply for software product development are now very relevant for any development work.
I have personally been involved in many product development roll-outs for start-ups as well as big enterprises. I have been involved in the development of high end applications such as ERPs, DAMs, Payroll solutions and the like. I have also gained immensely from the experience of developing our own flagship products. Going through these grinds, I have realized the benefits of using sound engineering practices and more importantly, have also borne the brunt of not diligently applying the lessons. Thus, for any software development work, the development methodology that I advocate is a manifestation of the experiences gathered so far. Given the rich product development expertise we have built at Congruent, it is only natural that this methodology is heavily influenced by the philosophy of software product engineering.
In this sequence of blogs, I would share my thoughts on some of the areas where the boundaries blend between product engineering and custom development. The ultimate goal is that as a technology service provider, we need to deliver software that comprehensively meets users’ demands and expectations, as well as focus on factors like re-usability, scalability, and flexibility of scope. From this perspective, I believe that the following areas are of paramount importance and this is what I propose to cover in my next blogs:
1. Release Planning
2. Architecture Foundation
4. Test automation
5. Integrated project management
Will reach out to you soon …