Welcome to the series How to build a tech product. This is article #8 of 10 articles that touch upon various aspects to consider while building a tech product.
In the previous post, we looked at estimating your project size, in this article let us look at how to use your estimates and create a project plan.
Introduction
A project plan helps to guide the project execution and also helps to evaluate the progress of your project. A good project plan at the very least should contain :
List of tasks - product backlog
The sequence in which these tasks need to be done i.e. define priorities for tasks
Amount of time each task will take i.e. complexity of the task
Traditionally a project plan was created before a single line of code was written or resources were allocated. This project plan could get extensive as it tried to tie in every task and its dependencies and make a set of assumptions along the way. Needless to say, creating this detailed project plan used to take a lot of time & effort and thus when something would come undone, adapting/changing the plan used to take a proportional amount of time as well.
I have always found that plans are useless, but planning is indispensable.
- Dwight D. Eisenhower
Due to the inflexibility of traditional project planning techniques, Agile has gained traction across software development circles. Agile emphasizes flexibility and adaptability, with a focus on delivering small, incremental development changes to the product in regular intervals (aka sprints).
Sprint on
In this series so far, we have learnt how to document your project requirements and estimate your tasks. This work will be used as input to create your agile project plan. The list of features and functionality forms your product backlog. Each item in the list should be assigned priorities.
The sprint backlog is derived from the product backlog. A sprint backlog is a list of tasks that come together to deliver a feature. These tasks need to be completed during a sprint.
The length of your sprint & team capacity should define the number of tasks that can be included in your sprint. Usually, a sprint length is defined as 2 weeks. But this can be made shorter or longer depending on the needs of your project.
The sprint backlogs should be prioritized based on project priorities, dependencies and resource availability. The objective of every sprint should be to get customer feedback. Thus the sprints should ideally be designed to deliver small, incremental changes to the product which can be presented to the customer.
The output of each sprint must be clear before a sprint starts. This will help to ensure that all stakeholders are on the same page and there are no surprises come demo day. Ideally defining a goal for every sprint helps in moving in the right direction. The goal should align with the overall requirement/vision of the project. Sprint goals can be used as a beacon when there are conflicts or grey areas discovered in midst of a sprint.
Learn and adjust
During the sprint, a sprint backlog may need to be adjusted based on feedback from the dev teams, stakeholders, and customers. The sprint backlog should be updated to reflect these changes. After each sprint, the process of designing sprints should be reviewed and refined if there are areas for improvement. The idea here is to ensure that sprint planning is effective and efficient.
At the end of every sprint, there should be a clear understanding of what needs to be done next, both in terms of individual tasks and overall project goals.
One of the key reasons to adopt the Agile way is to have the flexibility to adapt to the customer's expectations and meet common goals. As most of us have already experienced, no requirements ever remain the same.
We have all been part of projects which start out as a simple marketing mailer and end up becoming a fully functional CRM ๐
Remember! The success of your project should not be measured by whether every aspect went according to plan. Rather, it should be determined by whether it achieved the specific goals you had established.
Till the next one, take care ๐