Here are a few reasons companies adopt BDD:
- It helps teams build more valuable and more useful software
- It helps provide better automated visibility on features delivered and in progress
- Practicing TDD/BDD can reduce defects by 70-90%: when teams are proficient with the practice, this reduces both development and maintenance costs
- New features are faster and cheaper to add, because the resulting code quality is much higher, which makes the code easier to change. The automated tests also reduce the risk of introducing regressions.
What difference does it make whether I write the tests before, or after, I write my code?
(TDD and BDD fan)
SCJP, SCJD, SCEA 5 "Any sufficiently analyzed magic is indistinguishable from science!" Agatha Heterodyne (Girl Genius)
Joined: Aug 06, 2013
I find that, despite their very obvious benefits once you adopt these practices, both TDD and BDD have a pretty high learning curve (though to a lesser extent with BDD). You really have to experience the benefits for yourself, or work for a while on a project that uses BDD extensively, to really assimilate them. You *will* go slower when you first learn the practices, just like when you learn any other skill. If you have the discipline to persist, you get the benefits. But, unlike a new technology that you have to use (say, like learning AngularJS if you are working on an AngularJS project), with TDD and BDD it is easy to give up and fall back on the old ways.
To get around this you need to be persistent. Training certainly helps, as does pairing/mentoring with experienced practitioners. Doing it yourself can work, though it certainly requires motivation and persistence, so for a whole team to adopt these practices, you need to be a bit more organized, and come up with some sort of training (internal or external)/mentoring and adoption plan.
Joined: Oct 01, 2001
Even if you can't get them to buy in yet, you can start doing it yourself. After a bit, others will start to notice what you're doing, and they should see that it's making your life - and maybe theirs - easier. That'll be motivation enough for someone else to get started, and so on, and so on.
It's harder to to all by yourself, but that doesn't mean you shouldn't.