layout: true name: inverse class: center, middle, inverse .footnote[ \#agileindy ### [@schmonz](https://twitter.com/schmonz) ] --- layout: true name: twitterhandle .footnote[ \#agileindy ### [@schmonz](https://twitter.com/schmonz) ] --- template: inverse # Behavior-Driven Development for Everyone ## Amitai Schlair ### AgileIndy 2016/03/09 ??? Remember, next time you make slides, type 'C' to clone and 'P' to show these presenter notes in the clone! --- layout: false template: twitterhandle .right-column[ ## What _isn't_ BDD? - Basically the same as Test-Driven Development - Programmers do it behind the scenes - A kind of automated test - A software tool - Requires a software tool ] --- .right-column[ ## What _is_ BDD? - Everyone on the team does it together - A shared focus on overall system **behavior** - Enough shared language to deliver on that focus - **May** result in automated acceptance tests - **May** be more valuable with a supporting tool ] --- .right-column[ ## How important is BDD? Can we use it to work together more effectively? If we can't, then it's not important. If we can, then it is. ] --- .right-column[ ## Does BDD require great programming skill? I'm not a great programmer. Especially in front of a crowd like this. I'm not a BDD expert. I've learned, and continue to learn, by doing. BDD is most useful when applied by people who: - Want to do work that matters - Accept the limits of their knowledge - Are willing to ask for, and offer, help ] --- .right-column[ ## Um, so what's BDD again? If I develop it all by myself, there's no BDD. If we think, try, check, learn, and solve it together, that might well be BDD. It helps to focus on the smallest end-to-end system behavior we want next. It helps to use words we all understand in the same way. It helps to use our words of understanding to verify the system. **If** we want to verify our understanding automatically, we can use a software tool. ] --- .right-column[ ## Simultaneously reasonable and vague BDD relies on examples. BDD might be best explained **with** examples. ] --- .right-column[ ## "Three Amigos" For every role that has an interest in what it means for a story to be **valuable**, **ready**, and **done**, let's hear from someone representing that interest. Usually one each of: - Product Owner - Tester - Developer Let's use what we hear to build a shared understanding. ] --- .right-column[ ## Let's do some thinking, together I'm going to write some code to solve a problem. I promise to help you understand and trust that the code solves the problem. Do you promise to help me solve it? ] --- .right-column[ ## Teams, self-organize! Before we start working, let's split into three groups: - Product Owners - Testers - Developers Join a group you're not usually part of. I promise you will **not** be put on the spot. ] --- .right-column[ ## FizzBuzz I'll briefly explain the rules of FizzBuzz. Questions? Let's go! ] --- .right-column[ ## Bowling (time permitting) I'll briefly explain what I know of the rules of bowling. Questions? Let's go! ] --- .right-column[ ## References - [Introducing BDD](http://dannorth.net/introducing-bdd/) ([Dan North](https://twitter.com/tastapod), dannorth.net, March 2006) - [The Three Amigos: All For One, One For All](http://www.stickyminds.com/sites/default/files/magazine/file/2013/3971888.pdf) ([George Dinwiddie](https://twitter.com/gdinwiddie), _Better Software_, November/December 2011) - [What is BDD?](http://lizkeogh.com/2015/03/27/what-is-bdd/) ([Liz Keogh](https://twitter.com/lunivore), lizkeogh.com, March 2015) - [The Bowling Game Kata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata) ([Robert C. Martin](https://twitter.com/unclebobmartin), butunclebob.com, 2005) ] --- template: inverse # Behavior-Driven Development for Everyone ## Amitai Schlair ### AgileIndy 2016/03/09 ## [schmonz.com](https://schmonz.com) ## [ai3m.co](http://ai3m.co)