Techagilecoach Sample
Techagilecoach Sample
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Samman Technical Coaching . . . . . . . . . . . . . . . . . . . ii
Why would an organization engage in Samman Technical
Coaching? . . . . . . . . . . . . . . . . . . . . . . . . . iii
Why would you choose to coach using the Samman method? iv
Elevator pitch for Samman Technical Coaching . . . . . . . v
What is in this book . . . . . . . . . . . . . . . . . . . . . . . . vi
How this book relates to my other books . . . . . . . . . . . vii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . viii
Final Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
What is the most important thing to remember? . . . . . . . 7
CONTENTS
Rule of TDD”. You ask the group to call out five important things
to remember when doing Test-Driven Development. This is a quick
warmup to remind everyone what they already know about TDD,
and you write up what they say on the whiteboard. Nobody quite
expresses the golden rule although one person was close. You explain
the rule: Don’t create any production code without a failing test that
requires it! Next is the most fun part - writing code. Working in pairs
on a simple exercise, everyone tries to apply the golden rule. When
there are a few minutes left of the session, we stop coding to discuss
what happened. Several people found themselves writing the code
first by mistake. One person was doing well then wanted to create
new code in a refactoring step. Was that ok? A short discussion ensues.
At the end of the session everyone goes away with a sticky note or
a screenshot of the rule and homework to try the exercise again by
themselves.
Does this way of working sound interesting to you? It’s called the
Samman method and it’s a way of doing Technical Agile Coaching.
The rest of the book explains all about it.
• Learning Hour
• Ensemble Working
In the learning hour the coach uses exercises and active learning
techniques to teach the theory and practice of skills like Test-Driven
Development and Refactoring. In the Ensemble sessions the whole
Introduction iii
There is well respected research that shows exactly these effects. The
book Accelerate by Forsgren et al. explains the remarkable findings
from a multi-year study of software development organizations. They
studied many factors, and identified those that contribute most
strongly to business success. In particular they highlight the practice
of Continuous Delivery. That umbrella term includes several techni-
cal and organizational practices, including Test-Driven Development.
Introduction iv
In follow-up research¹ the same authors also found that technical debt
directly reduces developer productivity.
• It’s challenging and interesting. You never know what code the
team is going to put up on your screen, and you never know how
people will react when you ask them to work as an ensemble, do
TDD, refactoring etc. There is a lot of variety in the interactions
and the kinds of problems you face.
• You can have a bigger effect than you would in other roles. You
get to influence several teams over a few weeks of coaching.
Over months and years you influence several organizations.
• Teaching is inherently rewarding - witnessing someone start to
understand a new concept and recognize how they can apply it
in their work. That feeling when you see that happen. Gold.
Acknowledgments
The main ideas in this coaching method were originally developed
by Llewellyn Falco, and I continue to learn a huge amount from
him. This all started in 2018 when I did some pair-coaching with
Llewellyn and I was impressed with the results he was seeing with
his teams. (You can read about that story towards the end of the book
in the section “How I became a Technical Coach”). I have adapted
Llewellyn’s ideas for my situation and further developed several
aspects of the coaching method. I came up with the name “Samman
Coaching”.
I’d like to thank Llewellyn Falco for so freely sharing his knowledge
and methods with me. I’d like to thank all my colleagues at ProAgile
for all their support and inspiration. I’d also like to thank all the
early readers of this book who gave me feedback, including Samuel
Ytterbrink, Olof Bjarnason, Alexandre Cuva, Per Hammer, Grzegorz
Gałęzowski, Dave Nicolette, J.B. Rainsberger, Ester Daniel Ytterbrink,
Bill Wake, Jo Van Eyck, Joe Wright, Ted M. Young, Dianing Yudono,
Lars Eckart, Clare Macrae, Heidi Helfand, Philippe Bourgau, Sam
Cranford, Thomas Sundberg. I really value you taking the time to
help me write a better book.
The purpose of Samman
Coaching
A Samman coach aims for improved development practices in the
teams they work with. This chapter explains what those practices are
and what outcomes to expect from the coaching.
Development techniques
The choice of these particular development techniques shouldn’t be
controversial, they have been used for years by Agile practitioners
and in DevOps communities. There are many books and training
videos out there explaining how to do them. Samman coaching is
a more effective method for introducing them. The next sections go
through the main practices we aim to introduce and promote.
Continuous Integration
With the rise of Agile methods, Continuous Delivery and DevOps,
development schedules are being compressed and teams are expected
to deliver working increments of software more frequently. In my
experience, the way to confidently deliver a new version of the
software every 1-2 week iteration is to integrate and test the software
at least every day, so you always have something ready. If you
want deliveries even more frequently then you need a corresponding
decrease in the length of time between integrations. In general it
means the developers should work only for a few hours between
synchronizing and integrating their code together.
In many organizations the developers are used to working alone in a
branch for days or weeks before integrating their work. They don’t
know the incremental design and refactoring techniques you need to
be able to integrate more often than that. In the worst case everything
looks fine until shortly before the intended release date, when big-
bang integration happens with a string of bug-causing, schedule-
delaying merge conflicts.
that a different future is possible. The coach helps them gain the skills
needed to go there.
Expected outcomes
Firstly, we aim for awareness of what good unit tests look like, what
continuous integration actually is, that it’s possible to safely refactor
code you don’t initially understand. Next we aim for the insight
that successfully meeting deadlines and delivering high quality code
means learning iterative and incremental development techniques.
Teams gain new aspirations to be good at these things.
In my experience after perhaps 10-20 coaching days most teams will
have reached those insights. These are the first steps on the road to
improving the way that team works and the quality of the code they
deliver. After that, it’s about building skills and anchoring ways of
working in habits and culture.
I first learnt about the methods explained in this book through pair-
coaching with Llewellyn Falco. I was impressed with the results he
was seeing. The outcomes I observed were firstly a clear attitude
change. People wanted to learn these techniques, they saw them as
valuable. Secondly there was one team in particular where they had
become really skilled. Over the course of many days and weeks with
the coach they had changed the way they designed and built their
software. I remember sitting at the back of the room observing this
team working as an ensemble. They were working together smoothly
and productively, creating code and tests in small increments with
high quality.
Those are the outcomes you should see from Samman coaching.
Changes in attitude, increases in skill, improved code quality. Over
time, more productive development teams.
Measuring outcomes
Most people like to see hard evidence that something works before
they spend a lot of money on it. Or at least, they might let you start
The purpose of Samman Coaching xiii
This section of the book goes into some detail about what a Samman
technical coach actually does in the ensemble sessions, and why it’s
such an important part of your work.
Ensemble Primer
For those of you who have not experienced working in an ensemble,
a short introduction could be helpful here. Many programmers have
tried pair programming, and conceptually, working in an ensemble
is the same but with more people. You still have only one computer
being used to write code. Everyone present is responsible for the code
being produced, even though only one person at a time is typing.
However, for an ensemble to work smoothly you need more structure
and roles than you generally have in a pair. There are three main roles,
and you rotate roles frequently.
Typist
The typist is the person who has the keyboard and mouse. You use
the development tools and operate the computer. The important rule
here is that you are not allowed to decide what code to write or what
tests to perform. The typist listens carefully to everyone present, and
most particularly to the navigator. You enter the code the ensemble
has decided on, to the best of your ability. The navigator is usually the
spokesperson for the ensemble, but the typist may also follow advice
from other people. You can always ask questions to clarify what is
wanted and ask for more detail.
The typist should be in full control of the editor, the testing tools, the
debugger, the commandline, the refactoring shortcuts - everything
to do with operating the computer. Things like entering new code,
browsing through existing code, running tests and making commits.
Navigator
The navigator speaks for the ensemble and explains to the typist
what code they should enter into the computer. They speak in words,
Ensemble Primer 4
Team-members
Everyone who isn’t the typist is a co-navigator in the ensemble.
We all develop the software together. The aim is that the whole
ensemble should instruct the typist with one coherent voice. Usually
that means appointing someone to “be the navigator”. They lead the
work, they are talking and making the detailed decisions. Everyone
else is in a supporting role, quietly waiting for an opportunity to
contribute. With a more experienced ensemble, this leadership role
may not be explicitly appointed, it could simply pass fluidly between
members without any formal handovers. People chip in when they
have something valuable to contribute, and stay quiet otherwise.
Teammembers support both the typist and the navigator. If you know
a good keyboard shortcut the typist doesn’t seem to be using, you
can suggest it. If you can see a way to reduce duplication or improve
design, you can suggest it. The important thing is to choose carefully
when and how to make the suggestion. You don’t want to distract or
cause context-switching or confusion. If the typist and navigator are
getting along well doing something else, wait with your comment.
Choosing your moment to speak and knowing when it’s better to stay
silent is a really important skill. Having said that, it is important that
every member of the ensemble should follow what’s going on. You
should always feel free to ask questions so you understand the code
that’s being written. Just pick your moment wisely.
Ensemble Primer 5
Group Discussions
There will be periods when no code is being entered, and instead we
are discussing what to do. This is a normal part of coding work: we
need to agree on a goal, an approach, a design, a next test case… Many
discussions become more productive when you all stand around a
whiteboard or shared online document and can collaboratively sketch
your ideas. During these discussions you pause the ensemble roles
and let everyone take part equally. It’s wise to have a bias to action -
don’t discuss too long before returning to the ensemble and writing
some code together.
Facilitator
It’s worth remembering that working as an ensemble is a skill that
takes some time for a group to learn. It helps to have a facilitator
whose job it is to keep things working smoothly. This is usually
someone different from the typist or navigator since it’s hard to facil-
itate at the same time as doing one of those other roles. This person
will spend their time reminding people of the working agreements,
making sure roles rotate regularly, and helping the ensemble to reflect
and improve their work together.
As the ensemble gains experience the facilitator may need to inter-
vene less often. It may become a part-time position or disappear alto-
gether. To be honest, I haven’t worked with many really experienced
long-term ensembles and I’m speculating here.
Rotating roles
Most ensembles have some kind of timer that alerts the group when
it’s time to rotate roles. Many build their own - it’s a fun little piece of
software to implement. You can customize it with your own alerting
mechanism and decide exactly how intrusive it should be and what it
should suggest. Many such tools have a list of names and prompt the
next people that it’s their turn to be the navigator and typist. Other
groups have a more informal switching mechanism.
Ensemble Primer 6
turn into. If you’ve read this book then perhaps you’re interested
enough to check out the site and find out what’s happened since the
book came out.