SE Radio 629: Emily Bache on Katas and the Importance of Practice
Emily Bache, founder of the Samman Technical Coaching Society and author of several books about technical agile coaching, talks with SE Radio host Sam Taggart about katas and the importance of practice. They discuss how practicing in a safe environment helps developers to learn new skills and build new habits. They also talk about how Samman coaching combines this sort of deliberate practice with applying the lessons learned in practice to the production code base. They also touch briefly on the advantages of working in an ensemble fashion. Brought to you by IEEE Computer Society and IEEE Software magazine.
Emily Bache, founder of the Samman Technical Coaching Society and author of several books about technical agile coaching, talks with SE Radio host Sam Taggart about katas and the importance of practice. They discuss how practicing in a safe environment helps developers to learn new skills and build new habits. They also talk about how Samman coaching combines this sort of deliberate practice with applying the lessons learned in practice to the production code base. They also touch briefly on the advantages of working in an ensemble fashion.
Show Notes
Related links
- YouTube: @EmilyBache-tech-coach
- Github: emilybache
- Twitter: @emilybache
Related Episodes
- Episode 555: On Freund on Upskilling
- Episode 529: Jeff Perry on Career Management for Software Engineers
Transcript
Transcript brought to you by IEEE Software magazine and IEEE Computer Society. This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number.
Sam Taggart 00:00:18 This is Sam Taggart for SE Radio. I’m here today with Emily Bache to talk about katas and the importance of practice. Emily is an independent consultant, YouTuber and technical coach. She’s the author of two books related to coaching and teaches courses for Plural Slate and O’Reilly. She founded the Samman Technical Coaching Society in order to promote technical excellence and support coaches. Welcome Emily.
Emily Bache 00:00:41 Thank you. It’s lovely to be with you here today.
Sam Taggart 00:00:44 So to get started, you’re most well-known, or at least I know you best for your collection of katas. So maybe we can start by talking about what is a kata?
Emily Bache 00:00:54 Well it’s a small coding exercise that you can use to practice skills and get better at things like refactoring and test-driven development.
Sam Taggart 00:01:02 So often katas are associated with code retreats or coaching. Are these exercises that I can just go do on my own?
Emily Bache 00:01:09 Well, yes. I mean a lot of software developers will do that. They’ll just find an hour or so that they’ve got time to practice and open the code kata in your favorite IDE or editor and you get to choose from a number of different programming languages for most of them or some of them are just from scratch and you can start with an empty editor, some of them you start with a piece of code that you need to refactor and build on and then you, you can just spend the time writing the best possible code in the best possible way and improving your coding skills.
Sam Taggart 00:01:39 Great. So do you ever have trouble selling this practice idea to management? I assume people are doing this like during their work time sometimes. Do you ever get any pushback from management? Because I can imagine some managers saying, well, you know, you want to learn, but why don’t you just learn on the job? Like why is practicing outside of normal daily work useful?
Emily Bache 00:02:00 Well the thing with a code kata is it’s a lot simpler than your production code. So you can really focus on the skills and the moves of coding well and gain the fluency that you need to be able to do that in your production code later on. So if you spend some time practicing doing a particular refactoring using your shortcuts, you’ll find that when you need those same things in your production code later, they’ll come to you more easily. You’ll be able to code more quickly and get the code into the editor and into your production code more fluently and easily and better and raise the quality of your work. So I think, I mean whether you should do that on work time, I mean some people have argued that you should do this on your free time as a kind of investment in your own skills and your personal developments. I think that’s a little shortsighted for employers to think that developers are going to do that. I think it’s actually in everyone’s interest that there is at least a small amount of work time allocated for personal developments and getting better at your job. Everyone wins from developers improving the whole time. So those are the kind of things that I would say to managers. It doesn’t need to be a lot of time, but sometimes spent practicing and improving will benefit the organization as a whole and could work time.
Sam Taggart 00:03:15 That leads into my next question, which is how often do you recommend that developers do katas? Should this like a daily, weekly, monthly type of thing?
Emily Bache 00:03:26 I mean it depends a lot on your previous skills and knowledge and how much pressure there is in your project. Because you don’t want to be doing this kind of practice if you’re feeling really pressured and there’s a lot going on and you don’t have the head space. Or on the other hand it could be a good way to relax and calm down if you’re in a really stressful situation. But still I think it’s got to be agreed with the team and the individual and their manager. But something like, you know, an hour a sprint should be all right or a couple of hours a sprint. Yeah.
Sam Taggart 00:03:56 Yeah. So can you talk a little bit about your comment earlier, remind me about where katas come from because I used to do like some martial arts and I feel like in martial arts you do the katas and it’s about like building muscle memory. Is that like similar when you’re talking about like shortcuts and things like that?
Emily Bache 00:04:13 Yeah, so this idea of fluency, things that you can do without really having to think a lot about it, it’s an aspect of skill. So knowing how to do a refactoring like so one of the code kata, I want an example here. One of the code kata I like is Parrot. It allows you to practice the moves of converting a switch statement a conditional into polymorphism with class hierarchy. And usually there are a few steps to this conversion and it’s not something that you need to do every day when you’re working in your production code, but when you do, it’s good to know the moves and know how to do it safely and extend your design and make it more extensible for the future. So a bit of time spent practicing on the Parrot code kata means that you’ve just got all those moves kind of, yeah, like you say in your muscle memory and it goes much more smoothly when you need to do that in your production code. There’s a difference between knowing on in theory what the moves are and having practiced them and being able to just bring them out. You’ve got so much more brain capacity left over for the rest of your job basically.
Sam Taggart 00:05:18 Yeah. The other thing I’ve noticed about katas in the comparison to martial arts is like doing martial arts, you do a kata and if you have somebody watching you like an instructor, they’ll come in and they’ll just like tweak one little thing and then you practice again and you, it makes it very easy to focus by doing it over and over again. You can focus on like tiny little details. Have you noticed that?
[...]