In a previous post of this series, I defined excellence in engineering teams through five core characteristics (effectiveness, craftsmanship & quality, efficiency & productivity, adaptability & learning, collaboration & communication). In this post, I’ll explore how adopting a Continuous Software Engineering (CSE) approach can help teams achieve these characteristics.
This framework emphasizes continuous iteration across the entire software development lifecycle. Initially introduced in this paper by Brian Fitzgerald and Klaas-Jan Stol in 2014 and further expanded in Jan Bosch’s book “Continuous Software Engineering”, it focuses on a series of practices emphasizing the continuous nature of software-building activities, defined with the term ‘Continuous *’.
I’m going to revisit the framework with my take, and I will dive into the following ‘Continuous’ activities:
Planning and Prioritization
Development
Quality assurance
Experimentation & Measurement
Improvement & Innovation
Knowledge Management
This post will focus on Continuous Planning and Prioritization, the activities that enable teams to be adaptive and effective.
Continuous Planning
Building great software starts with understanding what is essential for the business and creating a plan that aligns with strategic goals (see my previous post on the meaning of strategy).
In many organizations, this typically happens as part of an annual planning cycle (in some places, this is called Operational Planning), where teams come together to define the key initiatives and roadmap for the upcoming year. At a very high level, the outcome of this planning exercise is a list of initiatives associated with the team owning them and related dependencies.
While yearly planning is beneficial for setting a high-level direction, it often falls short in today’s ever-changing environment.
“Plans are dynamic open-ended artifacts that evolve in response to changes in the business environment, and thus involve a tighter integration between planning and execution.” from the paper ‘Continuous software engineering: A roadmap and agenda’
As customer feedback, market conditions, and business needs shift throughout the year, relying on a static yearly plan can limit a team’s ability to respond effectively. This is where Continuous Planning becomes essential. Continuous planning is an ongoing process where plans are frequently revisited and adapted based on new insights and data. This approach allows teams to stay responsive to change.
For example, transitioning from an annual planning cycle to a quarterly cadence—leveraging frameworks like OKRs (Objectives Key Results)—enables teams to balance long-term objectives with more actionable goals. For more details on OKRs, refer to one of my previous articles.
An example of a key ceremony that enables continuous planning is Quarterly OKRs planning.
During this multi-session event, engineering, product, and design leads come together to discuss priorities, allocate capacity, and define goals for the upcoming quarter. By reflecting on the results of lessons learned in the previous quarter and based on external factors, teams can make informed adjustments to their near-term roadmap and key results.
Continuous Planning ensures that while high-level outcomes remain consistent, the strategies and tactics to achieve them can continuously evolve based on learnings to optimize effectiveness.
A personal example of effective continuous planning occurred during my time at Pinterest. In one particular quarter, we planned to build a new tab dedicated to shopping within the iOS and Android apps. The initial plan was to add a dedicated shopping experience for our users. However, after two quarters of development and gathering early market feedback, we realized that the direction wasn’t aligned with the user needs and changes in the market.
While the high-level objective for the year—improving user engagement in the shopping space for Pinterest users—remained unchanged, we decided to pivot away from the original plan for the shopping tab and reallocate resources to meet users where they are. This was a clear example of how revisiting plans regularly ensures that teams stay aligned on what is relevant and important.
Continuous Prioritization
Contingent to continuous planning, Continuous Prioritization is about frequently adjusting priorities to stay aligned with evolving plans. Engineering and product leaders are responsible for defining these priorities, which include roadmap items, customer support issues, technical debt, and longer-term technical strategy.
Prioritization in this context must be fluid and flexible, accommodating each item's importance and urgency. Similarly to continuous planning, this dynamic approach ensures that teams remain focused on the most impactful work while being flexible enough to shift focus as new data or challenges arise.
The Leads Weekly Sync is an example of a critical ceremony I experienced that enabled continuous prioritization. This forum lets the EM and PM of a team regularly meet to review and adjust team priorities based on the most recent data and developments. This allows for constant re-alignment between short-term efforts and the defined plan.
With Continuous planning and Prioritization (two macro-activities from the CSE Framework), teams are prepared to constantly adjust their plan and priorities while delivering value even as the landscape changes. This allows teams to become more adaptable and effective, two of the core characteristics of excellence discussed in the previous post.