Software Development
Practices Patterns:
from Pair to Mob Programming
Herez Moise Kattan |herez at ime dot usp dot br
herez at acm dot org |herez at herez dot com dot br
Parafraseando Mario Quintana:
Enquanto alguns Frameworks passarão…
A pesquisa passarinho…
#NoFrameworks
Research Method
Pair
Programming
Principles and benefits
for your team
Pair Programming
Software Development technique in which two
developers work together on the same problem on the
same machine.
It is much
more than to
sit together!
Pilot
Worried about the
writing code,
language syntax, etc
The possession
of the keyboard
is related with
an increase of
commitment
Co-pilot
Broader view of
context, class,
software, next steps
and etc ...
Real time
feedback
What do I get
benefits by using
pair programming?
Reinforcing practices
that require discipline
such as automated
testing and refactoring
Prevents developers
from losing focus and
being distracted by
other things Pair rotation is also
important to prevent
losing focus of the
co-pilot
Transfer Knowledge
Real-time Code Review
The co-pilot should take
care for not lose focus or
just watch what the other
is doing!
The senior pilot should not the only one with
the possession of keyboard without giving the
other the opportunity to participate!
The first step is to
discuss how
functionality should
be implemented.
Often, just explaining your
idea to somebody else, it
gets changes for better!
The pilot should try to explain
the code he is creating due
cognitive learning or receiving
feedback
The co-pilot should express his
opinion at opportune moments,
avoiding to break the concentration
of the pilot.
Developers can (and should)
change positions when they
find it more productive!
I will not lose my
privacy to check my
emails and my
messages?
I will not lose my
privacy to check my
emails and my
messages?
The developers lose their
privacy to read messages,
emails, websites of personal
interest
But, on the other hand, it
helps to stay focused on the
job and the task!
One option is to provide a
more personal place of use
where developers have
time for this type of task
Have consideration
with your pair!
Watch out for
hygiene, education,
and communication!
But do I have to keep
pairing with the same
person on my team?
But do I have to keep
pairing with the same
person on my team?
The Ideal is to make a
rotation between the
pairs. You can change
it every day, task or
even in a few hours!
Always pairing between
the same people can
cause islands of
knowledge!
But with pair programming,
I do not lose productivity in
some cases e.g when both
in the pair are seniors
programmers?
But with pair programming,
I do not lose productivity in
some cases e.g when both
in the pair are seniors
programmers?
Programming and review
simultaneous in Pairs is one
pair programming extension
Simultaneous Style Pair Programming
2 people
1 task
The responsibility
for the task is also
of the pair! But
they will do
simultaneously!
They decide how to
split into chores!
They can decide to do tasks with
Pair Programming or simultaneous
style Pair Programming!
In the simultaneous style pair
programming, the code review is
done by the other person
No need to pair all the
time to get the
benefits of the
technique!
Is it possible to have more than
two people on the same problem
at the same time?
Mob Programming
The whole team sits in front
of a machine and a projector
and works on the same
problem
Help the introverts, stimulating the interaction,
making the environment ideal for them.
Suitable for problems requiring
expertise from other people!
It is a great way to
disseminate knowledge to
the entire team
It is a way to overcome very
difficult challenges or make
very important decisions,
giving each team member the
opportunity to contribute
Thank You!
Herez Moise Kattan | herez at ime dot usp dot br
herez at acm dot org | herez at herez dot com dot br

Software Development Practices Patterns: from Pair to Mob Programming