\ One of the cornerstone decisions in product development is establishing the ideal work cycle. Modern software development often prefers agile methodology as one of the easiest and most effective ways to release. Waterfall can work too, but you should know why you are using it. Otherwise, iterations are generally a better choice. Everyone is used to them, and they are a failsafe strategy to develop great things. But what about the perfect length of an iteration?
\ The options depend on your company's product and deployment method. Is it a big monolithic system, or is it built on microservices? Does your product operate as SaaS, or is it on-premises software? Depending on the business positioning, you could choose between one- to four-week iterations. While one-week iterations are a widely known approach, in this article, I would like to discuss why a four-week iteration is great for big and complex systems and what steps this cycle includes
What kind of products could use a four-week work cycleTo find the perfect lifecycle, it’s necessary to understand the product you are working on. Let’s describe an example of a product that works well with a four-week iteration:
\
B2B-oriented product.
In this case, quality, stability, and predictability of releases are more important than quick delivery times.
\
Product-oriented development.
We are creating a product for the market, not custom software tailored to the needs of a single customer.
\
On-premise deployment.
The product could be SaaS as well, but when we’re talking about software that must be installed in closed corporate environments (like BPM, ERP, or EDMS), quick delivery times aren’t necessary and may even cause issues. These products cannot be updated the day after release, and iterations shorter than four weeks can create gaps between released and installed versions. This can lead to additional difficulties with customer issues, as tech support and QA engineers need to investigate the behaviour of older versions of the software.
\
Complicated structure or monolithic infrastructure with rich business functionality.
If your product has a lot of features and complex interdependencies, it’s difficult to develop even MVP features without impacting the overall quality of the product. Shorter iteration times can lead to extended work on feature branches and tough merges, where delivering useful parts of a feature with every release becomes challenging.
\ In short, a four-week work cycle is useful for products where meaningful updates, product stability, and well-planned releases are more important than speed. Of course, there are some downsides, such as longer hypothesis validation times. However, for this class of products, immediate feedback is uncommon regardless of the iteration length.
Phases of a Four-Week Iteration\ \ Let’s break this process down across different teams of specialists:
\
Although this article focuses on a four-week iteration, the real work in this process begins earlier. The first step is to determine what we want to accomplish during the iteration. Business analysts, UX/UI designers, and system analysts must prepare and validate product changes, create mockups and designs, and develop detailed technical specifications for implementing these changes. I refer to this phase as the "N-1 Stage", where N represents the planned iteration.
\n It’s not necessary for all technical specifications to be fully prepared during the N-1 or N-2 stage. What’s most important is that during the N-1 stage, these changes are approved by the product owner and proceed to the grooming process.
\ During the grooming process, the entire team must fully understand the idea behind the feature or change and prepare estimations. It doesn’t matter whether you calculate estimations using T-shirt sizes, hours, or any other measurement technique. What’s essential is having clarity on whether the feature can be delivered in the next iteration (“N”) or if it needs to be broken down into a few minimally valuable changes. If so, the specifications can be revised and groomed again until the team is confident they can create a functional and meaningful release.
\ Later in the N-1 stage, we need to prepare the iteration planning. During this step, we aim to determine the most effective combination of groomed features for the release, based on team capacity, potential risks, vacations, and other obstacles. Each change must have a defined priority to identify what must be implemented and what can be postponed to the next iteration. For this, it’s useful to apply Dai Clegg’s “MoSCoW” method or the principles outlined in RFC 2119, as they follow a similar approach. Here, I will use “ / ” to separate terms from MoSCoW and RFC 2119:
\ 1 priority - Must have / MUST: Mandatory requirements that must be included in the product.
2 priority - Should have / MUST NOT: Important changes that can be postponed but would make the release less meaningful if excluded.
3 priority - Could have / SHOULD: Non-essential changes that would be nice to include if the first and second priorities are implemented without risks.
4 priority - Won’t have / SHOULD NOT: Less critical changes that are not intended for the current release but may be crucial for the next iteration. For example, these could be part of a complex new feature requiring extensive investigation or too large to be decomposed into smaller parts that can be completed in a single iteration.
\
:::info References:
Clegg, D. (1994). Case Method Fast-Track: A RAD Approach. Addison-Wesley
Bradner, S. (1997). Key words for use in RFCs to Indicate Requirement Levels (RFC 2119). Internet Engineering Task Force. Available at: https://www.rfc-editor.org/rfc/rfc2119.
:::
As a result, we have artefacts to work on, know the estimations for these changes, and are prepared for a brand-new iteration.
Implementation StageThis is the stage where the main magic happens. It’s the longest stage of the iteration, lasting 10 workdays.
The stage should include the following activities:
\ For Everyone:
\ For the Development Team:
Implementing planned technical debt activities, vulnerability fixes, feature development, and any planned production bugs. It’s crucial that all significant changes (features, complex issues, or dangerous bug fixes) are handled in feature branches to avoid destabilising the general release. Work should be done in order of priority. By the end of this stage, developers should provide a demonstration to the product team and QA engineers responsible for the changes to check completeness and overall quality.
\ For DevOps:
\ For QA Engineers:
\ For the Product Team:
\ As a result of the implementation stage, we should determine what our release will contain and evaluate its overall quality. This includes deciding which features will be merged and which changes will be rescheduled to the next iteration with some improvements. Additionally, it’s a good idea to dedicate an hour of team time for a retrospective meeting during the first or second day of the stage. This provides an opportunity to review the results of the previous iteration and identify ways to avoid repeating past mistakes.
Stabilisation StageThis stage lasts five days and focuses on stabilisation. During this stage, QA engineers should validate all feature branches and merge all changes into a single release branch. The stage should include the following activities:
\ For QA:
\ For the Development Team:
\ For the Product Team:
\ As a result of the stabilisation stage, you should have a release branch containing all planned features and only minor bugs.
Regress and Delivery StageThe final stage leads directly to release. At this stage, the release scope is already defined, and every planned feature should be merged into the main branch. It’s crucial to stabilise the release overall and carry out release activities. The stage begins with creating a release candidate branch for final changes. The stage should include the following activities:
\ For DevOps:
\ For QA:
\ For Development:
\ For the Product Team:
\ As a result, the software should be released, and the process repeated.
\
ConclusionThe process can be adjusted to suit the specifics of your product but serves as a solid foundation. It’s crucial to document and share it with the entire team.
\ Consistency is key to avoiding rescheduling and irregular iteration periods. If a previous release was delayed and required five weeks to complete, you should not shorten the next release to a three-week iteration. Instead, adjust your annual release plan to maintain consistent four-week iterations. Otherwise, you risk creating another failed iteration.
\ After a few iterations, the team will adapt to this cycle, and members will instinctively know each stage and its deadlines. However, it’s still helpful to remind everyone of the current stage during daily status updates. For example:
\
\ This work cycle helps to develop predictable releases and establish clear deadlines. It is particularly useful for small teams, planned client commitments, and, most importantly, manual testing. It also simplifies high-level negotiations with customers. For example, you can explain that an iteration takes about one month, with an additional iteration needed to account for potential risks when planning delivery timelines.
\ However, this cycle does have limitations, especially when market reactions and development speed are critical. If your backlogs are constantly shifting or time-to-market takes priority over overall quality, a different approach may be better suited.
\ In the end, you must choose a release cycle that aligns with your team and project needs. Many products may find a four-week cycle too rigid, making it an obstacle for market responsiveness. Simpler products or those in their sunset or support stages, where changes are minimal, may benefit more from one- or two-week iterations. It’s an important decision that the team should adopt wisely.
All Rights Reserved. Copyright , Central Coast Communications, Inc.