- The Agile Coach
- Agile Manifesto
Agile project management
- Overview
- Project management intro
- Workflow
- Epics, stories, themes
- Epics
- User Stories
- Estimation
- Metrics
- Gantt chart
- Program management vs. project management
- Project baseline
- Continuous improvement
- Lean principles
- 3 pillars of Scrum
- Scrum Board
- Waterfall Methodology
- Velocity in Scrum
- What is Definition of Ready
- Lean vs. agile
- Scrumban
- Lean Methodology
- Sprint backlog
- Burn up chart
- 4 kanban principles
- 4 kanban metrics
- Program vs. Project Manager
- Gantt chart examples
- Definition of done
- Backlog grooming
- Lean process improvement
- Backlog refinement meetings
- Scrum values
- Scope of work
- Scrum tools
- Tools
- Workflow automation software
- Templates
- Task tracker
- Workflow automation
- Status report
- Workflow chart
- Project roadmap
- Project schedule
- Tracking software
- Roadmap tools
- Technology roadmap
- Project scheduling software
- Backlog management tools
- Understanding workflow management strategies
- Workflow examples
- Create project roadmap
- Sprint planning tools
- Sprint demo
- Project Timeline Software
- Top task management tools
- Product backlog vs. sprint backlog
- Top workflow management tools
- Project dependencies
- Task dashboard guide
- Sprint cadence
- Fast tracking
Product Management
- Overview
- Product Roadmaps
- Product Manager
- Tips for new product managers
- Roadmaps
- Tips for presenting product roadmaps
- Requirements
- Product analytics
- Product development
- Remote product management
- Minimal viable product
- Product discovery
- Product specification
- Product development strategy
- Product development software
- New product development process
- Product management KPIs
- Net Promoter Score (NPS)
- Product critique
- Prioritization frameworks
- Product features
- Product management tools
- Product Lifecycle Management
- 9 best roadmap software for teams
- Product launch checklist
- Product strategy
- Product engineering
- Product operations
- Portfolio management
- AI and product management
- Growth product management
- Product metrics
- Product release
- Feature request
- Product launch
- Product planning
- Product launch event
- Value Stream Management
- DevOps
Agile tutorials
- Overview
- Jira and Confluence sprint refinement
- How to do scrum with Jira
- Learn kanban with Jira
- Learn how to use Epics in Jira
- Learn how to create an agile board in Jira
- Learn how to use sprints in Jira
- Learn Versions with Jira
- Learn Issues with Jira
- Learn burndown charts with Jira
- Auto-create sub-tasks and update fields in Jira
- How to automatically assign issues with Jira Automation
- How to sync epics stories with Jira Automation
- Automatically escalate overdue issues in Jira
About the Agile Coach
- All articles
Three ingredients for great software releases
Combine one part architecture with two parts teamwork. Add automation, and stir.

By Dan Radigan
By Dan Radigan
Agile has had a huge impact on me both professionally and personally as I've learned the best experiences are agile, both in code and in life. You'll often find me at the intersection of technology, photography, and motorcycling.
Get started with the free DevOps template
Develop, deploy, and manage applications with an open tools approach within this customizable template.
At some point in your career–if you haven't already–you'll be involved with a monolithic software release. That is, a software release with recalcitrant bugs and interdependencies, and one that requires the entire team on deck around the clock. Not to mention that once it goes out to production, it'll likely require several patches.
Shipping code – the software release – is a strong barometer of agility for software developers. Every effort to make planning, coding, and testing faster are for naught if the release isn't a smooth process. That's why agile and DevOps teams turn to automation, bring development and operations together early in the development phase, practice continuous integration, and address defects immediately.
Keeping the code in a releaseable state is the hallmark of agile development. All the lean planning and iterative development in the world won't mean a thing if you can't ship code the moment you decide it's ready.
Great software releases start with modular architecture
In any software program, it's best to release software easily and often. A team can make release a natural part of their agile culture by building (or refactor towards) a modular architecture. Rather than have one large application (like the monolith mentioned above), early on in the program modularize it into several pieces. Group similar features into smaller applications or components, and have clear API contracts between each of the applications and components. Those APIs can be tested automatically with every build to ensure compatibility and reduce risk in the software release.
A modular architecture means that you don't have to release the entire software stack in a "big bang style" release, and the API contracts make it easy to update components and ensure compatibility between versions. In a nutshell, modular software releases require fewer moving parts. And that translates into simpler releases.
Great software releases are powered by great relationships
Software development is seldom done in a vacuum. Indeed, great software development involves the entire team from product management to operations. For example, the operations team is a key partner in delivering software to production since they help the software reach end users.
Development teams can help inform and empower operations teams with these techniques:
Make the bill of materials for each software release clear. Operations teams don't always have the same level of context around the release as the development team does.
For each issue that's resolved in the release, provide a link back to your issue tracker and source control system so the ops team has the same level of context if problems arise during the deployment.
Sometimes issues appear when pushing code from the development environment to the staging environment. Call these issues out, as they may pop up again during the production push.
Deployment glitches happen, so always give the operations team a clear escalation path to resolve problems smoothly.
Operations teams can assist their counterparts in development with these suggestions:
When problems arise in production, take the time to understand root causes and solutions. They'll be avoided (or handled more gracefully) in the future.
Migrate configuration data from production back into staging and development environments to prevent configuration drift.
As code migrates from development to staging and out to production, key configuration and user data migrates just the opposite way: production to staging to development. Having that bidirectional relationship helps the development environment closely model the production environment. This means fewer bugs and surprises on release day.
Great software releases are simple to push
Automate! Automate! Automate!
Automating a software release is the best way to improve a release culture. If releasing software is not currently being automated, start by automating the software release to a staging environment. Once everyone sees how simple it is, the natural step will be to automate production deploys as well.
If releases are difficult, make it a practice to release software frequently–even if it's just to staging. Having the development team feel the pain points of release will inspire innovation to make it easier (and automated).
Automated testing and continuous integration are key disciplines that power great releases. Ensure that build times and testing times are as short as possible, and remember that builds that are easy to validate are easier to release. That's because the validation cycle more closely follows the team.Â
Great software releases are great!
Keeping the code in a releasable state is the hallmark of agile development.
How we do it
We find small, frequent software releases easiest to manage for our SaaS properties. For downloadable products, close collaboration between development, operations, and build engineering teams goes a long way. These groups should work together to automate software releases and proactively adapt the automation to upcoming changes to the products. Many of Atlassian's teams automatically deploy each successful build of main to a test environment. When it's time to promote a software release to staging, or release it out to customers, these teams can trigger the deploy automation with the push of a button.
As software developers, a software release should be the highlight of our innovation cycle. We get to see customers interact with the code we've written and provide feedback. Yay! Making releases a natural part of your workday makes it easier to get code out to production and enjoy the satisfaction of saying: "That's my code!"
- The Agile Coach
- Agile Manifesto
Agile project management
- Overview
- Project management intro
- Workflow
- Epics, stories, themes
- Epics
- User Stories
- Estimation
- Metrics
- Gantt chart
- Program management vs. project management
- Project baseline
- Continuous improvement
- Lean principles
- 3 pillars of Scrum
- Scrum Board
- Waterfall Methodology
- Velocity in Scrum
- What is Definition of Ready
- Lean vs. agile
- Scrumban
- Lean Methodology
- Sprint backlog
- Burn up chart
- 4 kanban principles
- 4 kanban metrics
- Program vs. Project Manager
- Gantt chart examples
- Definition of done
- Backlog grooming
- Lean process improvement
- Backlog refinement meetings
- Scrum values
- Scope of work
- Scrum tools
- Tools
- Workflow automation software
- Templates
- Task tracker
- Workflow automation
- Status report
- Workflow chart
- Project roadmap
- Project schedule
- Tracking software
- Roadmap tools
- Technology roadmap
- Project scheduling software
- Backlog management tools
- Understanding workflow management strategies
- Workflow examples
- Create project roadmap
- Sprint planning tools
- Sprint demo
- Project Timeline Software
- Top task management tools
- Product backlog vs. sprint backlog
- Top workflow management tools
- Project dependencies
- Task dashboard guide
- Sprint cadence
- Fast tracking
Product Management
- Overview
- Product Roadmaps
- Product Manager
- Tips for new product managers
- Roadmaps
- Tips for presenting product roadmaps
- Requirements
- Product analytics
- Product development
- Remote product management
- Minimal viable product
- Product discovery
- Product specification
- Product development strategy
- Product development software
- New product development process
- Product management KPIs
- Net Promoter Score (NPS)
- Product critique
- Prioritization frameworks
- Product features
- Product management tools
- Product Lifecycle Management
- 9 best roadmap software for teams
- Product launch checklist
- Product strategy
- Product engineering
- Product operations
- Portfolio management
- AI and product management
- Growth product management
- Product metrics
- Product release
- Feature request
- Product launch
- Product planning
- Product launch event
- Value Stream Management
- DevOps
Agile tutorials
- Overview
- Jira and Confluence sprint refinement
- How to do scrum with Jira
- Learn kanban with Jira
- Learn how to use Epics in Jira
- Learn how to create an agile board in Jira
- Learn how to use sprints in Jira
- Learn Versions with Jira
- Learn Issues with Jira
- Learn burndown charts with Jira
- Auto-create sub-tasks and update fields in Jira
- How to automatically assign issues with Jira Automation
- How to sync epics stories with Jira Automation
- Automatically escalate overdue issues in Jira
About the Agile Coach
- All articles
Three ingredients for great software releases
Combine one part architecture with two parts teamwork. Add automation, and stir.

By Dan Radigan
By Dan Radigan
Agile has had a huge impact on me both professionally and personally as I've learned the best experiences are agile, both in code and in life. You'll often find me at the intersection of technology, photography, and motorcycling.
Get started with the free DevOps template
Develop, deploy, and manage applications with an open tools approach within this customizable template.
At some point in your career–if you haven't already–you'll be involved with a monolithic software release. That is, a software release with recalcitrant bugs and interdependencies, and one that requires the entire team on deck around the clock. Not to mention that once it goes out to production, it'll likely require several patches.
Shipping code – the software release – is a strong barometer of agility for software developers. Every effort to make planning, coding, and testing faster are for naught if the release isn't a smooth process. That's why agile and DevOps teams turn to automation, bring development and operations together early in the development phase, practice continuous integration, and address defects immediately.
Keeping the code in a releaseable state is the hallmark of agile development. All the lean planning and iterative development in the world won't mean a thing if you can't ship code the moment you decide it's ready.
Great software releases start with modular architecture
In any software program, it's best to release software easily and often. A team can make release a natural part of their agile culture by building (or refactor towards) a modular architecture. Rather than have one large application (like the monolith mentioned above), early on in the program modularize it into several pieces. Group similar features into smaller applications or components, and have clear API contracts between each of the applications and components. Those APIs can be tested automatically with every build to ensure compatibility and reduce risk in the software release.
A modular architecture means that you don't have to release the entire software stack in a "big bang style" release, and the API contracts make it easy to update components and ensure compatibility between versions. In a nutshell, modular software releases require fewer moving parts. And that translates into simpler releases.
Great software releases are powered by great relationships
Software development is seldom done in a vacuum. Indeed, great software development involves the entire team from product management to operations. For example, the operations team is a key partner in delivering software to production since they help the software reach end users.
Development teams can help inform and empower operations teams with these techniques:
Make the bill of materials for each software release clear. Operations teams don't always have the same level of context around the release as the development team does.
For each issue that's resolved in the release, provide a link back to your issue tracker and source control system so the ops team has the same level of context if problems arise during the deployment.
Sometimes issues appear when pushing code from the development environment to the staging environment. Call these issues out, as they may pop up again during the production push.
Deployment glitches happen, so always give the operations team a clear escalation path to resolve problems smoothly.
Operations teams can assist their counterparts in development with these suggestions:
When problems arise in production, take the time to understand root causes and solutions. They'll be avoided (or handled more gracefully) in the future.
Migrate configuration data from production back into staging and development environments to prevent configuration drift.
As code migrates from development to staging and out to production, key configuration and user data migrates just the opposite way: production to staging to development. Having that bidirectional relationship helps the development environment closely model the production environment. This means fewer bugs and surprises on release day.
Great software releases are simple to push
Automate! Automate! Automate!
Automating a software release is the best way to improve a release culture. If releasing software is not currently being automated, start by automating the software release to a staging environment. Once everyone sees how simple it is, the natural step will be to automate production deploys as well.
If releases are difficult, make it a practice to release software frequently–even if it's just to staging. Having the development team feel the pain points of release will inspire innovation to make it easier (and automated).
Automated testing and continuous integration are key disciplines that power great releases. Ensure that build times and testing times are as short as possible, and remember that builds that are easy to validate are easier to release. That's because the validation cycle more closely follows the team.Â
Great software releases are great!
Keeping the code in a releasable state is the hallmark of agile development.
How we do it
We find small, frequent software releases easiest to manage for our SaaS properties. For downloadable products, close collaboration between development, operations, and build engineering teams goes a long way. These groups should work together to automate software releases and proactively adapt the automation to upcoming changes to the products. Many of Atlassian's teams automatically deploy each successful build of main to a test environment. When it's time to promote a software release to staging, or release it out to customers, these teams can trigger the deploy automation with the push of a button.
As software developers, a software release should be the highlight of our innovation cycle. We get to see customers interact with the code we've written and provide feedback. Yay! Making releases a natural part of your workday makes it easier to get code out to production and enjoy the satisfaction of saying: "That's my code!"
Recommended for you
Templates
Ready-made Jira templates
Browse our library of custom Jira templates for various teams, departments, and workflows.
Product guide
A comprehensive introduction to Jira
Use this step-by-step guide to discover essential features and the best practices to maximize your productivity.
Git Guide
Understanding the Basics of Git
From beginners to advanced experts, use this guide to Git to learn the basics with helpful tutorials and tips.