Well, I wanted Specflow to be magic, but sadly it is at best a good-looking text editor. It constriction to .NET makes the pseudo-code generation easier for the product, but it failed spectacularly with any other Visual Studio integration. Which made it all seem a bit pointless. You could create Features, you can generate pseudo code (basically the unit tests). You can maintain the features and update the code in one smooth action. But that’s not Specflow, that BDD (Behaviour Driven Development). BDD on its own goes nowhere – applied with Scrum management and it can work excellently. But only of greenfield projects, or upgrade project which has implemented this methodology already.
Forgetting Specflow for a moment – actually completely – BDD is good method to keep development on track with requirements/user stories. The granularity covered in analysis and planning stages takes longer, but is negated by the increased speed of development time. The problem with starting development once user stories and scenarios are defined, is issues could arise in the course of implementation, that could have been foreseen with more development involvement at analysis stage. That does not mean that is an error in other approaches – methodologies are not for the dumb, the assumption is you will use the method as a base rather than just blindly follow the outline.
BDD fails for one reason – failure to maintain momentum with user stories/scenarios and development. There is no substitute for project management, which is what I feel these methodologies can imply, or are simply misread. Apparently 75% of Agile projects use Scrum for project management. For development management there are a lot more alternatives within Agile scope, and the best way to decide which one is on your team and projects drivers. Thankfully the previously common assertion “We’re working Agile!” has started to fade. Too often it is used as an excuse for chaos.
It is ironic BBD is also acronym for Body Dysmorphic Disorder – as the reality of BDD is usually very different from the perception. And in order to get a process to work, we sometimes mask the defects to the process. Methodology Dysmorphic Disorder(MDD) – I believe that is my first acronym, maybe it will catch on! Problems when applying methodologies are usually identified within the methodology. But that simply because a methodology cannot cover every situation – we are dealing with human beings here. Rather than find fault in BDD, it was the implementation that went awry, because of human flaws not methodology flaws. Or even Specflow flaws. To improve on process weaknesses, you improve the communication and integration between people.
To Specflow: I am aware I have been guilty of “build them up, then knock up”, but it was good reminder that software doesn’t always provide answers, and in fact, can cause more problems.