FDD is a customer-centric software development methodology that is known for its short iterations and frequent releases. Like Scrum, FDD places the customer, referred to as the project business owner, at the center of the process, requiring their input in the initial design meeting and iteration retrospectives. By prioritizing client requests and responding promptly to their needs, developers ensure client satisfaction through an incremental approach to feature releases. To accomplish this, developers identify feasible features, break down complex requirements into smaller sets of features, and devise a plan to achieve each objective over time.
Jeff De Luca and Peter Coad developed FDD while working on a banking project in Singapore in 1997. The FDD process comprises five key steps. First, the chief architect or project leader defines the system's scope and context to establish the overall model.One way to effectively use Feature-Driven Development (FDD) is to generate a list of potential features that can be completed within a specific timeline of around two weeks per feature. These features should be prioritized based on their complexity, importance to the client, and assigned ownership. Once prioritized, detailed plans for each feature are created, reviewed, and finalized before being developed and integrated into the official build for client delivery.
To ensure the success of FDD, certain best practices should be followed. First, clearly define the problem scope to establish a solid foundation for feature development. Second, divide intricate requirements into smaller, manageable functions and subsets. Third, designate a single owner for each feature to ensure consistency and code integrity. Fourth, assemble dynamic teams to explore multiple design options for each feature. Fifth, regularly inspect the code of each feature before implementation to maintain code quality. Finally, keep stakeholders informed with frequent and accurate progress reports throughout all steps of the process.
When it comes to comparing Scrum and FDD, the answer is not straightforward. Both methodologies prioritize collaboration, flexibility, and incremental feature delivery. However, FDD has a more structured approach to planning and managing the development process, while Scrum is more adaptable. Scrum is all about moving quickly and addressing risks and blockers, while FDD emphasizes modelling, design, and development. The choice between the two depends on the organization's priorities and where it is in its agile journey. Scrum may be a better fit for more agile organizations with small, self-managing teams, while FDD may be a more comfortable transition for older and slower firms with a more complex hierarchy of roles.