CukenFest: Q&A with Emily Bache
Soon the BDD community will gather remotely for Cukenfest, a two-day meeting of the BDD community in which we will hear stories about how we can become better software professionals and stronger teams. It'll also be your opportunity to share your own experiences practising software with peers taking a similar journey.
On of our keynotes this year, Emily Bache, took some time out to speak to us about Approval Testing, the development and ideas in her blog, and her thoughts on how software teams might operate post COVID-19. You can learn more about the conference and Emily's keynote on the CukenFest website.
What can attendees expect to learn from your talk?​
I'm expecting attendees to already know a fair amount about Behaviour Driven Development, and probably they've used Cucumber of SpecFlow or similar. I'd like to show people how BDD could look if you instead used an Approval testing tool. I've got a demo lined up and I hope people will come away understanding what Approval testing is and how it changes things. Perhaps people will notice situations where it would be a good fit, and be curious to try it out.
You’ve blogged for years, and your blog is titled Coding is like Cooking. What are the similarities? Do you have any preferred coding tweaks, or suggested recipes (particularly for those of us in lockdown isolation)?​
I like writing, and yes, I've had this blog since 2007. The name is partly a feminist assertion that I can write code just as well as any man can cook (!), and partly a reference to some cooking-related ideas that were going around my head at the time. Kent Beck's keynote at XP 2005 was titled 'Another Notch' and he told a story about a chef throwing a bit more chilli into the pan to 'take it up a notch', and that's what he wanted to do with eXtreme Programming. Robert C. Martin was also at that conference and I think he talked about 'Clean code', referring to the boyscout rule to leave the campground cleaner than you found it. I decided I preferred to make a simile with cooking. Keep your kitchen and your codebase clean for best results. These days I probably wouldn't use the word 'clean' so much when talking about code. It's too easy for people to get the impression their own code is 'unclean' or 'dirty' in comparison. For myself I always thought the opposite of clean code was 'messy'. My kitchen gets messy from time to time and so does my code.
As for a recipe for lockdown - I recommend sourdough rye bread. They ran out of yeast at my local supermarket so I made a rye sourdough starter sometime in march. I'm still feeding it daily and making a loaf every few days, even now when yeast is back on the shelves. In the evening, put all your sourdough starter in a bowl on the scales, and add water up to about 170g. Mix with 150g rye flour and leave overnight. In the morning it should be bubbly and smell yeasty. Take out a teaspoon of the mix to keep as a starter for next time, and feed it a teaspoon of rye flour and some water daily. Put the rest of the bubbly flour mixture into a bread machine. Add 300ml water, 160g rye flour, 240g strong white flour, 1 teaspoon salt, half a tablespoon of sugar and a teaspoon of bread spices. Put 120ml sunflower seeds in the bread machine's dispenser. Set the machine to run a rye loaf cycle - mine takes 5 hours, (use a wholemeal cycle if you don't have one for rye). Take it out and let it cool until tea time when you can eat it with hummus or cheese or even pickled herring. I love the flavour of this bread! It has a fairly dense texture with small bubbles and lots of seeds.
What resources would you recommend to someone interested in learning more about Test-Driven Development and refactoring?​
I'd recommend joining one of the public mob programming sessions that have popped up since everyone's been working from home. I attended one run by Woody Zuill recently, but there are several people running them - there's even a git repo listing them here. I've always thought it's more fun to learn in a group, I even wrote a book about it in 2011 - The Coding Dojo Handbook. Learning new skills takes time and effort, and it helps to have encouraging people around you. A tool like cyber-dojo is useful for both in-person coding dojos and remote mobs. It's a simple coding environment with lots of fun little exercises you can work on together.
If your goal is to get better at refactoring, then instead of cyber-dojo you'll probably prefer to use an IDE with some automated refactoring tooling. You'll still want some fun little exercises to work on though! I have gathered quite a few of those on my github - the most popular one is the Gilded Rose kata. I also suggest looking at Tennis and Parrot.
These days I'm doing a lot of teaching and coaching in skills like TDD and refactoring. I do mob programming with teams working in their production code. I act as the coach and we help each other to use techniques like TDD and refactoring at the same time as we get useful work done. I also run short coding dojos and help them to practice on code katas. I'm just writing a new book about this actually - Technical Agile Coaching.
Do you see any changes to agile and testing in a pandemic world?​
I expect there will be much less travelling, even after we get a vaccine. In software development we've been doing remote and distributed development in open source projects for many years. Tools and ways of working already exist. We can meet and work together online and stuff gets done fairly well.
I hope we'll find ways to not be tied to our desks all day in a videoconference though. Sitting still all day is bad for you, and I think it's harder to learn new things when your environment is static. When I used to do face-to-face trainings and workshops I'd always try to get participants to move about. Walk around to look at code snippets pinned to the wall. Pick up and move cards around a group table. Physically stand up and change seats when becoming the driver in a mob.
I think teams will realize it's worth getting together from time to time for workshops and trainings, and successful companies will support that with better infrastructure. Perhaps the office will not be full of desks any more - people will do that kind of work from home instead. We'll fill our office space with whiteboards on wheels, piles of sticky notes, round tables for 4-6 people having 'breakout' discussions, and spaces where you can walk about chatting in twos and threes. Perhaps the office will be much more like an open-space conference venue that you visit every few weeks for a few key meetings.
Questions compiled by Tracey S. Rosenberg. Thanks again to Emily for these answers!