Software Deployment Strategy
Make sure your customers are getting new features continuously
Many teams are excellent at delivering new features and bug fixes for software applications that they are developing. However, some teams need help with getting those new features/bug fixes deployed to the application's production environment regularly. In some cases, there are constraints that either slow down or stop the deployment of new features in their tracks. Other times, the team deploys new features on a cadence of every month or quarter. In rare cases, the team waits for the customers to ask for the new features to be deployed to their production system. All these examples have in common that new features and bug fixes are not being delivered consistently and continuously.
When teams feel like they can't improve their ability to deploy features faster, I have found that developing a Software Deployment Strategy in collaboration with the Product Owner, Software Engineers, and a group of users/customers can help improve the ability to deploy new features and bug fixes as close to continuously as possible. The following are the steps that should be taken to develop a Software Deployment Strategy.
Step 1: Ideal Perfect Solution#
When answering this question, it's a good idea to gather team members, team leads, and stakeholders to collaborate on what the ideal perfect solution looks like. To facilitate a conversation like this, I prefer to use a physical whiteboard or a digital whiteboard such as Mural or Miro. The yellow sticky notes displayed are examples of answers that some teams define as their ideal perfect solution.
Step 2: Deployment Strategy#
When determining what the software deployment strategy should be, the idea is to have team members, team leadership, and stakeholders work together to answer the questions identified. The example above lists questions in green that can be used to develop a deployment strategy. The yellow sticky notes are examples of answers that some teams had for their deployment strategy questions. The questions listed below are usually a good place to start:
- How do we define the difference between Delivery and Deployment?
- Who are our customers?
- How many customers do we currently have?
- How do we know which features and bug fixes a customer is using or has access to?
- How do we communicate to customers that updates are available?
- How do we communicate to customers about known bugs/defects and upcoming features?
- How do we make sure that the deployment of updates actually occurs?
- How do we want to communicate with customers about deployments?
- How do we want to get feedback from customers about new features and bug fixes?
- How do we want to handle a production environment major bug that was deployed recently?
Step 3: Identify a Roadmap and Action Items#
Once the team has answered all the questions for the Software Deployment Strategy, then identifying a roadmap is the next step. The team should use the Ideal Perfect Solution as a "Northstar" that identifies where they want to be. With the "Northstar" deployment process in mind and the software deployment strategy that was developed, the team should be able to identify action items that will help the team get on their way to the Ideal Perfect Solution. After identifying the action items, the team should look to determine a roadmap for completing all the action items and when they want to start working on the action items.
Step 4: Make it Big and Visible!#
When the Software Deployment Strategy is fully answered collaboratively and the action items and roadmap have been fleshed out, then the team should consider the documentation of the Sofware Deployment Strategy to be a living document that can and should be updated regularly. The Software Deployment Strategy should be easily accessible, big, and visible to all team members, team leadership, and stakeholders. Ultimately, the Software Deployment Strategy is meant to allow team members, team leadership, and stakeholders to gain alignment and awareness of the deployment process for getting new features deployed to customers.