Incremental or agile development is not always easy to introduce or use, particularly in large companies with standardised engineering procedures and in organisations where software development is usually outsourced to an external contractor. If development is outsourced, both the client and the contractor usually want to have a complete specification defining what is to be done.
The major difficulties with incremental development and incremental delivery are:
I've spent years deeply entrenched in software development methodologies, particularly the nuances of incremental or agile approaches within large organizations. The challenges and benefits of these methodologies, especially within contexts of standardized engineering procedures and outsourced software development, are areas where my expertise shines.
In the realm of incremental development, the struggle lies in reconciling it with established management structures geared towards regular progress assessments. I've navigated the complexities of managing software projects where the rapid pace of change in incremental development clashes with traditional documentation-heavy approaches. This clash often leads to management grappling with the adaptability of existing staff to newer technologies integral to incremental development.
Contractual intricacies, too, are an area of familiarity. I've witnessed the tension between the absence of a specific system specification and the conventional customer-developer contract model. Crafting agreements becomes a challenge without a rigid specification, leading to potential conflicts around payment models and project scope.
Validation and verification processes face a significant overhaul in incremental development. The shift from a specification-based approach to iterative development makes independent validation a daunting task. I've encountered the difficulty of aligning validation practices with the continuous evolution inherent in iterative development.
Maintenance concerns are a common pain point. The rapid evolution of incrementally developed systems often leaves them cryptic to anyone beyond the original developers. Strategies like refactoring have been a focal point in my work to mitigate this issue, recognizing the importance of continual structural improvement.
Technological obsolescence is yet another hurdle. I've observed how reliance on specialized rapid development tools can pose a challenge in finding skilled individuals to maintain systems built upon such technologies.
The hurdles outlined in the article resonate deeply with my experiences, affirming the intricate challenges that surface when implementing incremental development methodologies in contexts that diverge from its traditional frameworks.