Francesco Strazzullo interviews Woody Zuill
We love having our experts talk to each other and discuss topics they’re the best experts of.
This is why we asked Francesco Strazzullo, author of the book Frameworkless Frontend Development, to interview the Godfather of Mob Programming, Mr. Woody Zuill.
What follows is an interesting conversation among two brilliant minds on the impact Mob Programming has had in their careers, the way this is used in their training courses, and how a more collaborative approach can help you write better code… all together!
Francesco: Hi Woody, how are you?
Woody: I’m doing great! Thanks.
Francesco: How did you start getting interested in computers and programming?
Woody: In 1982 when computers first started becoming available for “normal” people to buy one for their home or small business. I owned a business and I could see it would be important for me to learn to use a computer. I bought several computers and various software applications.
While the computers worked well, the software didn’t, and I quickly realized I would need to learn to program so I could have the software I wanted.
Francesco: In a nutshell, how would you explain what “Mob Programming” is to a complete neophyte?
Woody: We typically imagine a programmer as someone who sits alone at a computer. With pair programming, two developers sit together and collaborate in creating the software. While it seems that pair programming would not be productive – it actually turns out to be very effective – Mob Programming simply expands on the idea of collaboration.
It’s not 5 people watching one person program, but rather 5 or 6 people collaborating together to program as a team.
I see it as all the brilliant minds working together on the same thing, at the same time, in the same space, and at the same computer.
Francesco: What is the main advantage of Mob Programming?
Woody: When we first started working this way, we immediately found that we were getting more work done, and not only were we getting more done; it was of higher quality.
At the same time, we were all learning a lot from each other. We were having fun and working with less stress.
Francesco: How did you come up with the idea in the first place? I’m really interested in your “Aha!” moment.
Woody: We had been practicing collaborative ways of working for about six months, as well as trying to improve our coding skills and knowledge by studying clean code, refactoring, test-driven development, and code quality.
As a team, we had been using a “coding dojo” style of studying and practicing together where each person would take turns at the keyboard, with the other team members guiding them in solving a coding exercise. It was working very well for us in sharing knowledge and helping to train each other. And we were also learning how to get along better, and to be willing to try other people’s ideas.
One day, one of the developers wanted to have the team meet together to look at a difficult bit of code they were working on. They wanted to get some idea of how to move forward. Rather than simply looking at the code, and talking about it, we started working on it together.
We all loved the experience and decided to try it again the next day. And from that day on, we simply continued working this way all day, every day. We’ve been expanding on it, and learning new things along the way, but essentially, it’s the same as that very first day 8 years ago.
Francesco: During my work as a consultant, I really love to use Mob Programming to maximize the value I bring to the team I’m helping, but sometimes I feel that people are kind of skeptical.
They say: “Do you really need all these people to solve this problem?”. Did this scenario ever happen to you? If yes, what is your answer to them?
Woody: Yes, this happens all the time. It seems like a waste of effort to have several people working on one thing.
However, while one person might be able to solve a problem, when we divide the work and work separately, we miss out on many of the benefits of collaborating and introduce a lot of harmful wastes.
I can’t cover this in detail here – but essentially it turns out Mob Programming helps in reducing a number of wastes – such as queuing, excess inventory, and miscommunications.
Francesco: How many people there were in the biggest Mob programming session that you facilitated, and how was it?
Woody: For us, most people doing actual work (not as a demonstration or group exercise) were 14 people at one computer. This was for some very important work that needed to be done as quickly as possible – and required the knowledge of each of those 14 people.
It went very well, and it provides a very good example of how Mob Programming helps to get work done – if we didn’t have all these people working together we would have been blocked frequently.
A delay of even 10 minutes for each time we were blocked would have turned this effort into several weeks of work, but by having everyone there we were able to go directly from start to finish in just one day.
Francesco: We know that the Silver Bullet does not exists, so are there any scenarios where you don’t suggest to use Mob Programming?
Woody: At first we thought this was only for the “big, important” things. But we found that most work went better when we stayed together as a team most of the time.
There are some things that can be better accomplished alone or as a pair, and the team can decide for themselves what works best.
Mob Programming doesn’t replace solo or pair programming, it just adds another option. Each team can learn for itself the right mix for them.
Francesco: I also use Mob Programming in one of my workshops as a learning tool, where the participants and I try to build something from scratch altogether. From the feedback that I received, it’s a very powerful teaching technique. Have you ever used it for this purpose?
Woody: Certainly. It’s more or less how Mob Programming started – with us using a very similar method as a study and learning mechanism. It helps everyone stay involved and focused while allowing each participant a chance to learn how to help others.
Francesco: To know a thing and to be able to teach it are two very different things. When did you start your career as a trainer/teacher, and what was the reason for it?
Woody: While I have often had to help others learn things in various businesses, my main work has been as a computer programmer for the last 20+ years.
Once people heard about Mob Programming I started getting invitations to share it and teach others to do it. The first workshop that I can recall was in 2013 at Ericsson in Sweden.
They had invited me to speak about Mob Programming for an internal learning day, and they wanted me to guide a team in actually doing it.
At first, I focused on being able to cover all the things I felt were important, as well as the techniques that our team had been using. Over the years I’ve learned a lot about what works and doesn’t work – and I’ve refined the workshop to make it the best I can. Even still, I continue working on it to make it even better.
Overall, Mob Programming is simple: Let’s figure out how to work well together – but there are a lot of things to consider, and I try to provide all the basics so a team can move quickly from novice to expert.
Francesco: What’s the most challenging aspect of an approach like Mob Programming: the technical one or the human one?
As in: are there more issues related to the technical aspects of what’s being done, or are there more issues related to the way people interact with each other?
Woody: Learning to work well together seems to be the biggest challenge. As a programmer, I spent the first 15 years programming alone. Then in 1998, I was exposed to pair programming, and I gave it a try.
It took me several years to become good enough with it to become my “go to” way of working. This seems to be the same with many of us – we mostly work alone and never have the opportunity to practice working well with others.
Finding time to practice, and study ways of collaborating, can make a big difference.
Francesco: You’re the author of the “Mob Programming” workshop. What’s the highlight of the workshop, and why should one buy a ticket?
Woody: My goal is to provide a strong background in the “why” and “how” of Mob Programming. I give instruction, but we also do a number of activities and exercises to help the ideas “sink in”.
We will work on a challenging bit of code as teams of 4 or 5 people so you can get a feel for what Mob Programming is like, and the things you’ll need to practice to become good at it.
Francesco: Who’s gonna benefit from a workshop like your the most? What’s the key takeaway?
Woody: While I feel anyone involved in software development can benefit from learning how to do Mob Programming, it is particularly important for managers to understand the concepts and learn to put together an environment where their teams can succeed. I hope that testers, coders, database experts, product owners, managers, architects, designers, and everyone involved in creating software will get a lot of value from this workshop.
The key takeaway is perhaps that sometimes we limit ourselves by dismissing a new idea before we give it a try – and this workshop is your chance to expand your mind a bit, and try something that might at first seems preposterous.
“If at first the idea is not absurd, then there is no hope for it.” ~Albert Einstein
Francesco: Provided one already knows and uses Mob Programming, should this person enroll in your workshop, and why?
What’s the added value for those who already know Mob Programming?
Woody: Mob Programming is not a “one size fits all” approach to teamwork. I try to attend every talk or session on Mob Programming when I am at a conference, and I am never disappointed as I always learn something new. This also goes for blog posts and what others have written in books. I share how we worked at Hunter, combined with what I’ve learned from visiting and working with hundreds of teams all over the world.
Like my father would say: “There are a thousand right ways to do anything, and we should never believe ours is the ‘one right way’.”
Francesco: How does Mob Programming help a team made up of mainly remote co-workers?
Woody: I’ve worked this way off and on over the last 5 years with several teams, and it’s a great way to help a team stay aligned – collaboration works best when we are actually working together on something at the same time. If we can’t be in the same physical space we can at least create a good virtual space.
The main obstacle I find is time-zone differences. Remote Mob Programming simply has its own advantages and a set of challenges. Fortunately, modern online meeting tools are making it easier to work remotely.
Francesco: What are you currently working on? What’s your newest project?
Woody: My main focus right now is to expand on being able to share the principles and techniques we can use to create an environment where everyone can excel in their work and life.
There are a lot of things we can do to make it easy for great things to happen, and that is what interests me the most.
Francesco: What would be the perfect soundtrack for a Mob Programming session? 🙂
Woody: Well, I would hope that each team can figure that out for themselves. (We have an idea… 😛)
Francesco: Perfect Woody, thanks for your time. See you in November!
Check out Woody Zuill’s “Mob Programming” workshop and learn how collaboration improves the way your code is written!
Pic credits: Avanscoperta, Josh Calabrese and Sayan Nath (Unsplash).