Seven habits for highly effective continuous software delivery
In my interactions with many organizations, I have observed an unclear understanding of continuous software delivery. Most of the organizations think that continuous software delivery and project and program management are the same. This is not the case! Traditional project and program management concepts are not able to scale with current market demands and business expectations.
Even though there are many similarities between continuous software delivery and project or program management, continuous delivery is on a much broader scale. It is the organization, administration and supervision of the people, processes and technologies, that, when combined into a comprehensive plan, provides a framework to successfully achieve what the business needs. Continuous delivery has strong linkages to release management, product management, application lifecycle management, release automation and environment provisioning.
To achieve benefits from continuous delivery, organizations should integrate the above-mentioned practices in a single framework and follow these seven habits of highly effective continuous delivery.
1. Mitigate software delivery risks early.
Risk is directly proportional to uncertainty in estimates, and stakeholders typically want to know sooner or later what value the project can deliver in the stipulated time. Making informed decisions by consciously assessing what can go wrong, as well as the likelihood and severity of the impact, is at the heart of defining software delivery risks.
2. Use a value-driven agile delivery approach.
Risk-driven delivery focuses on identifying high risk areas and addressing those items early in the project life span. The goal is to flush these issues early before you spend a considerable amount of time on project development. Value-driven delivery focuses on identifying those features most important to the customer and completing those items early. Risk-driven delivery recommends focusing on those high risks areas, while value-driven delivery focuses on business requirements perceived to be of high value to the stakeholders.
A value-driven agile approach involves iterations that strike a balance between high-risk issues crucial to the project and features that bring value. Creating value by reducing uncertainty is the best way to reduce costs and improve project success.
3. Focus on business demand management.
Business demand management is the process of collecting, analyzing, prioritizing and accepting user needs, while managing stakeholder communication. Business demands describe in business terms what must be delivered or accomplished. Business demands include product and business process requirements, constraints that organizations expect and value that will be realized in the future.
Only when you understand the business goals and objectives can you begin defining a solution that will address stakeholders’ business needs. The justification for business demand management is to assure technology teams meet the expectations of stakeholders and these expectations are converted into solutions, products or services delivered by them.
4. Build a continuous pipeline of innovative products.
A highly competitive marketplace puts more pressure than ever on business and IT teams. Take smartphones—with their built-in cameras, web browsing and other advanced features—as an example. While not all companies are subject to this high level of volatility, in virtually every industry today companies need to make rapid, value-driven decisions to remain competitive and introduce innovative products. This opens up an interesting concept of adopting “product management methodology” in software delivery, which is normally used in the manufacturing industry. Companies today need to transform from a traditional application development approach to product development best practices.
5. Integrate project management and software delivery.
Typical software delivery activities include requirements management, release planning, system design, implementation, testing, deployment and maintenance. With so many activities of the software delivery lifecycle, it is no wonder that failures frequently occur (see my previous post to learn more about these challenges). Traditionally project management and solution delivery are run as siloed and parallel activities with little or no integration. To fast track project team setup, implementing software change management workflows, institutionalizing just in time governance and implementing value-based software delivery, organizations need to implement a “collaborative lifecycle management” platform.
6. Employ industry standard best practices to avoid failures.
Software delivery is a team-based activity. In order to avoid the high cost of failure teams must work together to mitigate and manage risks for successful outcomes to the business. To avoid the high costs of failure and reduce risks, there must be repeatable, predictable processes and best practices in place throughout the software delivery lifecycle that improve productivity and quality. Mature organizations are adopting an agile methodology or lean development processes to overcome traditional software delivery challenges.
7. Employ release management practices.
Release management is a software engineering process responsible to oversee application development, planning, scheduling and control, in addition to testing and deploying application releases. The practice combines the business emphasis of project management with software development lifecycle (SDLC) and IT Infrastructure Library (ITIL) practices. A well-run release management organization is a cornerstone for delivering predictable, on-time and high quality releases. The release management organization should have tools that enable centralized collection of release data, facilitate comprehensive project and program management, provide real-time dashboards and access to individual application as well as component-level delivery status across the enterprise.
To get to continuous delivery organizations need to transform their way of delivering software. Organizations must focus on people, processes and tools to promote integration between four organizational units: business, development, quality assurance and operations.
The major stumbling block for continuously delivering quality software is none other than release management. I have seen many organizations still struggling to manage releases, small or big. Release management is a critical component of continuous delivery, which is most challenging to implement. In next blog post we will cover the best practices of enterprise release management. Please share your thoughts on continuous software delivery below.