How do you plan releases? What development methodology does your company follow?
We leave it to each team to figure out what helps them balance flexibility with clarity to achieve their maximum speed of execution.
We do our best to have a common language around goals, strategy & measuring progress, but largely leave it to teams to figure out how best to build & ship given their own goals, strategies & roadmap.
Releases can be separate from when the product is made available to customers. Some times, people think of product launches and software releases as needing to be tied together, but in order to maintain agile development and ensure market readinesss, it makes sense to time releases for when your customers will be ready to consume those resources. Typically, I think of planning product launches in these ways:
Customer market readiness - when does the customer need this feature for their workflow?
Monetization - is this feature a driver of revenue for my business? Upsell or licenses? Subscription?
Competitive landscape - are we going to be first to market?
After looking at these dimensions, I will then plan with counterparts like marketing, engineering, and design to ensure we have the proper assets in place for proper releases.
For GitLab's release process check out our handbook: https://about.gitlab.com/handbook/engineering/deployments-and-releases/
Barracuda has a structured approach that blends continuous integration and delivery (CI/CD) with Agile methodologies, using specific release timelines. This setup can offer several advantages, especially in managing complex software development and deployment processes effectively. Here’s a breakdown of how this approach might typically work and how it can be optimized:
Agile Practices: We organize our development activities into sprints, each lasting about 2 weeks. These sprints include regular sprint planning, daily standups, sprint reviews, and retrospectives to ensure continuous improvement and alignment within the team.
Continuous Integration and Delivery: Our CI/CD practices are integral to our development process. Developers commit changes to a shared repository frequently, which triggers automated builds and tests. This helps us maintain a high standard of code quality and ensures that our software can be released at any time.
Release Management: While our CI/CD pipeline keeps our software in a releasable state after each integration, the 2 week release pockets allow us to bundle features into coherent releases. This period also provides time for additional testing, final adjustments, and preparation of release documentation and marketing materials.
Feedback Loops: We heavily rely on feedback from these iterative processes and user input post-release to refine and improve our products. This feedback is crucial for adapting our processes and product offerings to better meet user needs.
Release planning requires 5 things:
Define the goals of the project. What outcomes are you hoping to achieve? Clearly articulate your success metrics
Understand your customer needs. Conduct qualitative (surveys, interviews, etc) as well as quantitative (funnel analysis, engagement metrics, etc) research to better understand what you should build.
Prioritize your roadmap. Create a roadmap and use a prioritization framework (RICE, Kano) to create your roadmap. Next break down the large scale vision into smaller chunks. Each release should ideally take 2-4 weeks.
Launch your first MVP. Use this as an opportunity to gather customer feedback and learn what's missing.
Iterate. Continue launching and refining until you reach your targeted goal!
Key steps to plan external releases and to make them successful: align on cadence, release themes and map features and outcomes to releases.
Align on cadence:
Start by understanding external requirements specific to your product category. Consider industry events, conferences, or seasonal needs (e.g., travel or shopping seasons).
Determine the number of releases based on your company’s needs. For instance, Airbnb follows a summer and winter release schedule (two releases per year), while others may align with quarterly cycles.
Align on release theme:
While internal teams drive the release, always keep the customer in mind. Start by defining the customer benefits and value that each release will unlock.
Create a compelling narrative around why customers should pay attention to your release.
Map features to release:
Connect customer and business outcomes to specific features. Work closely with your product development process to map features to each release.
If you’re using agile methodology, releases provide an opportunity to showcase and spotlight features for your customers.
Remember, successful external releases involve collaboration, customer-centricity, and strategic planning.