Decoding Technical Excellence | Pairing & TDD for Leaders

Ash Jenkins
EverestEngineering
Published in
6 min readOct 17, 2023

As a Product and Delivery Leader, I’ve often wondered about the bias of Agile towards non-technical ways of working. I love Agile, Scrum and other adaptive approaches that solve for team synergy and building the right thing — but what about technical excellence and the deeper nuances of a building things right, with qualityfast?

What are these mysteries you speak of?

In my own work I’ve learned that pairing on a piece of work is a great way to get a quality result. From consulting to product development — actively working together in pairs leads to better outcomes — and results in something beyond what you would come up with on your own.

When scaled up it’s this type of interpersonal and skills synergy that creates great teams. Being able to work together is what harnesses the power of cross functional teams. In today’s environment, collaboration tools such as Miro make this easy for non-technical work… but what about pairing on the tech, on software development?

I’ve observed in teams that this is hard and often results in situations where there is one card on the Kanban board per developer — a team working individually. How do we break out of this behaviour and harness collaborative synergy at a technical level..?

Tech Skills that Matter: TDD & Pairing workshop

Recently I had the pleasure of attending ‘Tech Skills that Matter: TDD & Pairing’ at Everest’s office in Melbourne. Led by Dan Prager with support from Juan Ojeda, the workshop was a Code Retreat format where people learned by doing. I was super interested to attend and see what inspiration I could bring into my teams.

This is what Learn by Doing looks like

Dan took us on an interesting journey of leveraging TDD as an enabler for Pairing, which not only gives us better collaboration but also quality code!

Test Driven Development (TDD)

We started with TDD. Created (or is it discovered?) by Kent Beck, refer to Test-Driven Development by Example for the full story. The basic idea is to write tests FIRST, then code — an inversion for most peoples thinking and workflow. Simplistically the process goes like this:

RED: Write a FAILING TEST
GREEN: Make it PASS
BLUE: can/should we REFACTOR?

In the workshop we learned this by mob programming the FIZZBUZZ game which was a lot of fun and allowed us to talk through and see the basics of TDD in action.

Dan at the helm & Juan on the keyboard as we Mob FIZZBUZZ

It was great to see how TDD can be used to build a solid self checking system for your code. During the mob programming exercise even I could read the failing tests and give some ideas on how to resolve.

Pairing

We then took our basic understanding of TDD and added pairing (On pair programming), then moved onto ping pong pair programming using TDD as follows:

Person a writes a test to fail
Person b writes code to pass
a & b together do we need to Refactor?
Person b writes the next test to fail
Personal a writes code to pass
a & b together do we need to Refactor?

There is a lot of nuance in how pair of developers work with this approach, its important not to let one dominate as the expert and tell the other what to do. Collaboration is good, directing isn’t helpful. Dan likened it to driving a car — the driver & navigator. The navigator has the maps out and makes commentary but doesn’t grab the wheel. Another hot tip from Dan — don’t pair for more than 5 hours a day!

Practicing with Kata

We put it all together by coding the game ‘Connect 4’ as a series of Katas in 1 hour sprints. Each of our four sprints had a varied challenge; TDD, pairing, slicing and 3 line functions.

Connect 4, anyone..?

For those of you not familiar with Kata (like me!) it’s a set of practices that help develop a new habit or skill and really reinforces one of my favourite jokes:

Q — Whats the difference between Theory and Practice?
A — Practice

This is the essence of learn by doing. At the end of every sprint we discussed challenges and learnings. It was great to see people move from fear to fun — you could see it in their faces as got deeply involved. Laughs and ah-ha moments were aplenty.

Deep in a Kata

Additional Learnings

Although the day was on TDD & Pairing there were some key takeaways at a more general level:

Not everything is a nail. It’s important to note that these techniques aren’t a be-all and end-all — they aren’t always going to be applicable. If TDD & Pairing is a hammer, sometimes you need a screwdriver (Legacy code anyone?).

Collaborative & Technical excellence is a Mindset and always applicable. The collaborative & quality mindset that these techniques instil are crucial and can be applied every time, all the time.

Think about the spec. before you start. Just because you are doing TDD doesn’t mean you literally start with a test. It’s important to do some level of minimum viable design or slicing to break problems down sensibly, and adapt these methods as you go.

Making it Real

As we wrapped the day, conversations centred on how to bring these practices back into a workplace and enact lasting change. Here’s what I’m going to do to promote collaborative & technical excellence… how about you?

Make time for practice using Code Katas. In teams we often talk about time set aside for learning, learning hours. We need to make this sacred and real. I’ll be working to make sure there is time to learn in a fun environment, check out these Katas. Coding Dojo looks like a great way to enable this.

Learn more about TDD, and its applicability to the work we do. The start of it all is Kent Beck and Test-Driven Development by Example. If you are wondering why its not prevalent check out TDD: Where did it all go wrong? (note this is a 1hr video). Another of Dan’s recommended sources here is J B Rainsberger.

Promote Technical Coaching. Probably the biggest enabler in creating lasting improvement — technical coaching is something I often find lacking and can always be expanded and improved . Dan suggested looking at Emily Bache (check out her amazing Youtube Channel) and her take on Samman Technical Coaching. In these links are long sets of various Katas team can tackle along with a whole approach for technical coaching.

Spread the word! Get more people interested in Technical and Collaborative excellence and Kata based practice to improve their craft. Get more people to the next Everest Academy TDD & Pairing workshop!

--

--