Why might a company choose Feature-Driven Development over Better Architecture Driven Development for refactoring?
Short answer
Companies might choose Feature-Driven Development (FDD) over Better Architecture Driven Development (BADD) because FDD allows for incremental improvements while delivering new features, aligning with business goals. FDD can also be more palatable to stakeholders who are wary of the upfront costs and uncertain benefits associated with BADD.
Companies might opt for Feature-Driven Development (FDD) over Better Architecture Driven Development (BADD) because FDD facilitates incremental improvements while simultaneously delivering new features, making it more aligned with immediate business goals. Additionally, FDD often seems more appealing to stakeholders who are cautious about the upfront costs and uncertain benefits associated with BADD.
The Appeal of Feature-Driven Development
Feature-Driven Development is often favored because it allows teams to refactor systems incrementally while delivering new capabilities. This approach aligns well with business needs because it provides tangible deliverables throughout the process, rather than waiting for a complete overhaul before seeing any benefits. Scott highlighted this when he noted, "I've always been a fad guy. If you're going to refactor, you refactor in a direction and the direction is toward the capabilities that you want." ▶ 4:28
In practice, FDD can be more manageable and less risky. For example, Scott shared an experience where the CEO and Chief Product Officer questioned why the team wasn't modernizing first before adding new capabilities. This led Scott to reflect on his preference for FDD, realizing that the incremental nature of FDD might better align with business expectations and reduce the risk of stakeholder impatience. ▶ 4:51
Risks and Challenges of Better Architecture Driven Development
On the other hand, Better Architecture Driven Development involves refactoring the system to improve its architecture before adding new features. While this might result in a cleaner, more maintainable codebase, it comes with its own set of challenges. One significant risk is the potential for projects to stall if stakeholders lose patience with the lack of immediate deliverables. Scott humorously pointed out, "A risk of bad is the four most expensive words in the human language," referring to the tendency to add more tasks under the guise of improving architecture without delivering immediate business value. ▶ 0:00
Brad shared an anecdote about a past experience at RealNetworks, where a team attempted a complete rewrite to achieve better architecture. Despite initial enthusiasm, the project succumbed to the "second system effect," where the team got bogged down in trying to implement new features, ultimately stalling progress. This story illustrates the potential pitfalls of BADD, where the scope can expand uncontrollably, leading to incomplete projects and frustrated stakeholders.
Balancing Business Needs and Technical Goals
The choice between FDD and BADD often boils down to balancing immediate business needs with long-term technical goals. Brad noted that while FDD might seem like a compromise, it often represents a pragmatic approach to modernization. "It's like essentially pivoting from like a one-to-one relationship to a many-to-many relationship," he explained, highlighting how FDD allows for flexibility and adaptation as new business requirements emerge. ▶ 11:14
Scott also emphasized the importance of aligning refactoring efforts with business objectives. He recounted a scenario where stakeholders questioned the need for detailed product requirements before starting modernization. Scott argued that understanding the long-term vision is crucial to ensure that refactoring efforts are not just technical exercises but are aligned with delivering business value. This approach helps prevent teams from getting sidetracked by technical improvements that do not directly contribute to business goals.
A Hybrid Approach: Combining FDD and BADD
Ultimately, the decision between FDD and BADD is not always clear-cut. Brad and Scott discussed the potential for a hybrid approach, where elements of both strategies are employed. This involves being intentional about where to apply FDD and where BADD might be more appropriate. For instance, certain parts of a system might benefit from a BADD approach to address critical architectural issues, while other areas could follow FDD to deliver new features quickly.
Scott concluded that stakeholders can sometimes challenge preconceived notions and encourage teams to reconsider their strategies. He shared how discussions with non-technical stakeholders prompted him to reflect on his preference for FDD and consider the benefits of BADD in certain contexts. This openness to different perspectives can lead to more balanced and effective refactoring strategies.
In summary, while Feature-Driven Development offers a practical and business-aligned approach to refactoring, Better Architecture Driven Development can provide long-term benefits if managed carefully. The key is to assess the specific needs and constraints of the project and organization, potentially blending both strategies to achieve the best outcomes.