This is part of a series on “I believe in…”
The value of the software we create is defined both by time and usefulness. Almost every marketplace is full of big and small competitors looking to bring something more useful to prospects and customers every day. When the application is integral to the value proposition of the entire organization (i.e., part of the product sold to customers), it must be able to grow and change in response to the needs of its constituents and stakeholders, and to maintain or accelerate differentiation from competitors. You need a process to effectively manage this life cycle, and that process, and how you execute it, are key to the product’s success.
I believe in Agile and Scrum as a tool to create a more valuable asset that can meet changing demands more quickly. The application or platform is never “done”. We have releases of the software to satisfy current need and position something new and compelling to customers and stakeholders. And then we learn, respond, and release again.
I strongly believe in verifiable and measurable results. Code can be tested to make sure it functions how the developer wrote it (and to challenge assertions), and an analyst can validate that what the developer wrote is what the feature spec said. But to produce high-quality applications, we must also test that the specifications meet the requirements, and the requirements meet the customer expectations, and the software meets the needs of the market. Just as I expect for each developer to test her or his code, and to do so in small, fast iterations, I also expect the same of the Product Owner function (which is connected to Product Management). Through identifying users, actors, and personas, then developing user journeys and validating those user journeys with mock-ups and prototypes, we can get much more certain that we are developing the right solution before committing huge amounts of effort and money in the wrong direction, or even in a direction that is just a degree or two less than optimal.
DevOps is an integral part of recognizing the value of Agile. DevOps provides the framework for quality and consistency (in part through Continuous Integration testing), production readiness and deployment, and monitoring and optimization.
Thus, I believe that the Software Development Life Cycle is equally important, and inextricable from the actual code and product itself.