“At Bayt.com, we had opted to use FDD. While I believe that SCRUM, as all other agile methodologies is excellent in supporting human-oriented software development environment, I continue to believe that it lacks well defined control points (milestones) that are required to track the progress of features implementation. It is clearly focused more on the Project Management side rather than the Software Development side”.
That’s was part of my answer to a question a friend of mine – Husam Saqallah2 asked few months ago. He wanted to know my opinion about SCRUM and how I do compare it to other methodologies, What is the purpose behind SCRUM popularity, while most of the feedback he is getting from PMs Working on big projects was not positive? why more companies are asking for SCRUM experience and who is behind that move, developers or executives?
His question sent me 2 years back in time, where I had to decide on an Agile development methodology. I did an intensive research that drilled down to choose between SCRUM and FDD. I have to say, it was not an easy decision to make, both seemed relevant and practical. Finally FDD won the race for the following reasons:
- FDD has well defined control points (milestones) to track the progress of every task. Those control points (Walkthrough, Design, Design Inspection, Coding, Code Inspection and Promote to build) serve the following purposes:
- help project manager to track the progress of every task (feature)
- provide developers with a very clear flow of each task (feature) implementation and, at the same time, provide interaction client (Walkthrough) and other team members (Design and Code Inspections.
- FDD has clearer concentration on quality, though it is not modeled as a role but as a function continuously carried out by different parties involved in FDD; hence I can claim that the possibilities of having a quality product are higher with FDD. Design Inspection is a proactive quality activity to make sure that the feature will be implemented properly while Code Inspection is a reactive activity to verify the implementation. Both help to produce higher quality and avoid rework.SCRUM on the other hand does not highlight details or milestones for every feature implementation
- SCRUM overlaps and/or partially covers some Project Manager activities, which as a project manager, is something I do not like. For Project Management I prefer to use a more mature methodology like PRINCE2 – Which I believe is a perfect match of iterative and incremental development methodologies. FDD on the other hand, concentrates more on the implementation/development side at a lower level. Coupling PRINCE2 with FDD worked like a breeze without any confusion or misunderstanding of responsibilities.
FDD was more appropriate for the situation, the context as well as, my personality! That does not necessarily mean that FDD is absolutely better, SCUM cannot produce quality products nor always fails. Though I have my conservations and concerns about SCRUM, I found the feedback my friend collected from Project Managers is biased and we cannot blame SCRUM for this.
I believe any software development methodology will fail at that level, as they are not supposed to be responsible of this – though I blame SCRUM or any agile software development methodology guys for claiming that their methodology can handle big projects by their own. Handling big projects requires advanced project management techniques and approaches. Such projects should be undertaken as a program, where project is split into multiple modules/sub modules that can be managed as separate projects. Separate projects can be executed with SCRUM – or any other methodology -, while coordination between projects is done on program level.
Finally, I believe we should not overlook the importance of the human factor; a methodology might not fail because it is not mature, practical or verified, but because you haven’t secured the buy-in of all participants. Getting stakeholders acceptance to the cultural change you are proposing is one of the most challenging – if not the most– factor is the success of any process or methodology.
Who is behind SCRUM? Honestly, I am not sure, but what I am sure of is that it is there for a reason, same as FDD.