Written by Philip Van Puyvelde
During application development, teams interact with many stakeholders from across the entire organization. They each have requirements that are important or even critical to them and often get impatient when they do not see progress.
When dealing with many different stakeholders that are eager to see progress of “their requirements”, the development team often ends up developing many different features at the same time to please each of them. This can lead to several challenges:
A lack of focused short-term team goals: When team goals are unclear or not well-defined, the team often becomes confused about the scope and priorities of their tasks. This confusion can have a negative impact on the team's sense of achievement and motivation. Team members may start to feel that the tasks they are working on are never completed, and they may question whether their time is being used efficiently. Additionally, unclear goals can lead to an increased risk of scope creep, as it becomes easier for business stakeholders to introduce additional changes and tweaks that can delay more critical work. Instead, changes should be prioritized based on the team's short-term goals.
Increased start-up time: When building many functionalities in parallel, developers are likely to switch between them. This multiplies the “Start-up time” to get familiar with a problem and decreases productivity.
Unintended rework: Functionalities can have an impact on each other, and when developed concurrently, this can necessitate unexpected changes in how they are configured and work together. This can lead to the feeling that your team is spending more time on rework than on creating new functionalities. In contrast, when the team completes a functionality it becomes easier to evaluate the impact of a new one.
Lack of continuous deployment: Without a sequential build strategy, it will be hard to implement a continuous deployment cycle. This will in effect force big bang releases and the complexities they bring. For testers (technical and UAT) it also becomes easier when functionalities are periodically released to the test environment.
This is why it is important to have an application roadmap in which the functionalities are built in a logical sequence. Take the following three steps to create a successful application roadmap:
Define your main functionalities: There is no minimum or maximum number here, the more you have the longer your roadmap becomes. The ideal size of each main functionality would be 2-4 weeks of work. Most will relate to user functionalities, but they can also cover things such as user hierarchies, a back-end API or security. Ensure you align the scope and estimations with the development team. This will ensure everyone in the team is aware of the plan and motivated / empowered to reach these deadlines.
Prioritize & create timeline: Order all functionalities in order of importance. Even if all requirements are needed for a release, there will always be a degree of importance. This ensures the team starts by building the critical core. Then, place them on a timeline in a sequential way. Consider functionalities that depend on each other and the available team. Depending on the team size, you can build some functionalities in parallel if interdependency is limited.
Communicate: Once you create your timeline, the work isn’t finished. You need to communicate timeline and progress regularly to your team and stakeholders. Make sure everyone is aware what the priorities are and why. Inevitable changes need to be incorporated and externalized. Proactivity is key.
Ensuring product owners are empowered to build applications sequentially allows them to reduce the overall development time, facilitate stakeholder discussions, increase transparency and ease the production deployment rollercoaster. This means it is a critical component of any well running development program.