When we think about a feature, we tend to think of it as a whole. Every single detail we can think of at the moment. And, more often than not, we get lost in the details. That detail is usually the most important need for customers for business analysts, and for us — most — developers, it is technical details of it. (I’ll get to this in another article…)
What we don’t know or what we don’t have time for is planning a feature. Every feature deserves & needs proper planning by a technical individual or a team. Usually, one person does this planning in startups, while a team does this in an enterprise company. (I think) The most healthy one is the person who is gonna be assigned to develop that feature should do the planning, nobody else.
A better way!
“How does one plan a feature?” you might say. The answer is phasing!
The idea is to split the feature into separate feature sets and treat them as different features (tasks!).
How does one plan a feature differs based on several parameters?
- Firstly, it is based on an individual or a team, and how they are comfortable with the plan and the deadlines of each feature set.
- Whether it can be merged or not into the codebase (and be tested!) on each phase.
- Whether it can be ready to go live on each iteration or not.
- and so on…
In my experience, the most important thing while planning a feature is, making sure that each phase has clear boundaries and, making sure that each phase is not too big to get lost in the details.
Now, let’s talk about the foundational phase! The first one!
The first phases are always big. And it should be big too. Because they are foundational phases.
Every technical and architectural decision is made in the first phases. So, the first phase must not be rushed, and, therefore, it should be estimated correctly if we are talking about a serious deadline.
Example planning of a feature:
Let’s say the feature is an e-commerce shopping cart. We can break down the phasing of this feature as follows:
Phase 1: Basic Functionality
- Implement the ability to add products to the cart
- Implement the ability to view and edit the cart
- Implement the ability to calculate the total cost of the items in the cart
Phase 2: Advanced Features
- Implement the ability to apply discount codes to the cart
- Implement the ability to calculate and display shipping costs
- Implement the ability to save the cart for later
Phase 3: Optimization and Refinement
- Improve the performance of the shopping cart functionality
- Enhance the user interface and user experience of the cart
- Implement additional features based on user feedback and requirements
By phasing the development of the shopping cart feature, we can prioritize the most essential functionality first and gradually add more advanced features. This approach allows for better planning, improved testing, and a more robust and refined end product. (More on these in the next section)
We talked about phasing itself. Now, let’s discuss the benefits of phasing a feature in development.
Seeing the big(ger) picture!
By breaking a feature into phases, both business analysts and developers can have a clearer understanding of the overall vision and goals of the feature. This allows for better alignment and collaboration throughout the development process.
Prioritization becomes easier.
By phasing a feature, teams can prioritize the most important and impactful parts of the feature and deliver them first. This ensures that the crucial aspects are addressed early on and provides value to users sooner.
Phasing allows for room for improvement.
As each phase is completed, teams can gather feedback and make necessary improvements before moving on to the next phase. This iterative approach ensures that the final product is more refined and meets the needs of users effectively.
More robust QA test!
By phasing a feature, teams can conduct more thorough QA tests. Each phase can be tested individually, allowing for early identification and resolution of any issues or bugs. This iterative testing approach ensures the final product is more robust and stable.
‘Now I Am Become Meeter, the Meeter of Deadlines.’
Finally, by phasing a feature, teams can better manage and meet deadlines. Each phase can have its timeline and deliverables, allowing for better project management and ensuring that milestones are met on time.
By adopting a phased approach to feature development, teams can unlock a range of benefits that positively impact both the development process and the business as a whole.
By breaking down features into manageable phases, teams can gain a better understanding of the overall vision and goals, prioritize the most important aspects, and continuously gather feedback for improvement.
This approach also allows for more thorough QA testing and better deadline management. Overall, phasing features is a strategic and effective way to propel product excellence and drive success.
Bonus: This article’s code name was Phoenix! 🔥