Find out how we were able to adopt Extreme Programming (XP) in out distributed team! We are doing remote pair programming and remote meetings on a daily basis.
In this presentation, we showed some of the obstacles we faced and how we managed to resolve them!
4. E X T R E M E P R O G R A M M I N G
VA L U E S
Communication
Simplicity
Courage
Respect
Feedback
P R I N C I P L E S P R A C T I C E S
Mutual Benefits
Failure
Diversity
Quality
Opportunity
TDD
CI
10 Minutes Build
Incremental Design
Pair Programming
Questions? Ask us anything: https://pollev.com/ahmadatwi339
5. E N O U G H T I M E
T O M A K E Y O U R C O F F E E
S TAY I N T H E Z O N E
B A B Y S T E P S
Questions? Ask us anything: https://pollev.com/ahmadatwi339
1 0 M I N U T E S B U I L D
6. Questions? Ask us anything: https://pollev.com/ahmadatwi339
3 M I N U T E S B U I L D
7. T E S T D R I V E N D E V E L O P M E N T
TDD
circle of life
Questions? Ask us anything: https://pollev.com/ahmadatwi339
8. T E S T D R I V E N D E V E L O P M E N T
L E S S B U G S L E S S D E B U G G I N G C L E A N C O D E
Questions? Ask us anything: https://pollev.com/ahmadatwi339
9. T E S T D R I V E N D E V E L O P M E N T
90% of our code is covered
Does it work in all cases?
Do we have bugs?
Questions? Ask us anything: https://pollev.com/ahmadatwi339
10. PA I R P R O G R A M M I N G
Questions? Ask us anything: https://pollev.com/ahmadatwi339
11. PA I R P R O G R A M M I N G
Learn faster / Submit on the first day
Code quality increased
No impact on productivity
Bonded team
Tiring
Risky
Questions? Ask us anything: https://pollev.com/ahmadatwi339
Pairing agreements
12. R E T R O S P E C T I V E
With agile retrospectives the team
drives their own actions!
— Ben Lenders
Check-In
Throw-Back
Collect Insights & Discuss
Actions
ROTI
Questions? Ask us anything: https://pollev.com/ahmadatwi339
14. R E M O T E PA I R I N G
Questions? Ask us anything: https://pollev.com/ahmadatwi339
15. T I M E D I F F E R E N C E
G E T T I N G L O S T
G E T T I N G T I R E D
C O D E S H A R I N G
Questions? Ask us anything: https://pollev.com/ahmadatwi339
R E M O T E PA I R I N G
I will start this presentation with a simple question!
Who here goes to work by car? Who takes the bus? Who takes Skype? I take Skype every day to Paris
Today, Philippe & I will show how we adopted Extreme Programming in our distributed team.
During this presentation we will have 2 live demos, the first one on pair programming and the other one simulating how we run remote meetings on a daily basis.
The presentation is expected to last for 50 minutes with the last 10 minutes dedicated for answering your questions.
You are a software engineer working or willing to work for an international company? Then you might be interested in our session; as we will be sharing a real life examples of adopting XP in a remote setting.
We will cover some of the obstacle we faced and how we managed to solve them. On top of that, we will have 2 live demos one on remote pair programming and another on remote retrospectives!
Philippe:
Happiness and Productivity Hacker
Officially : Software Engineer
Currently : developer, architect, manager & agile coach in my risk engine team at Murex; self proclaimed change agent in the company; serial side project builder at night; devoted family guy.
Hi, I’m the remote buddy in this talk
Ahmad:
Is senior software engineer in the team at Murex Beirut.
Before joining the team, he spent some time working on server infrastructure at Murex
He is an active member of the development community, both inside and outside of Murex : Coding Dojo organizer, trainer, speaker and side project night howl
Outside of programming Ahmad is also a long time squash player
Murex: At the age of 30 Murex is the leader in the financial software market with offices all around the world (18 offices and counting).
The Product: Our team is building a capital market risk engine, we are part of the R&D department so in some cases we dedicate some time to explore new technologies
In this presentation we will be focusing on the XP Practices. That is why we named our presentation Extreme Practice
Philippe, do you want to add something ?
- Yes, I’d also add that it’s stress free ! Try it and you’ll never want to go back …
10 minutes is the recommended time for the build compilation (this time enough to have a short coffee break without actually wasting time)
Stay in the zone:
Don’t lose focus
Short feedback loop
Code in baby steps:
Submit more frequently
Easier to analyze when a bug is reported
TDD is a another practice of TDD which stands for Test Driven Development
3 Development states: as the name suggest, with TDD the development is driven by tests not the opposite way around.
It is based on 3 states:
First we start by writing a failing test for the feature we want to implement
Then we write the minimum code to make that test (and only the test) pass
When the code gets a bit mature we continuously refactor code to keep it clean and follow the best practices
Why?: Some developers might argue on the benefits of TDD, based on our experience we have noticed that TDD will result in:
Less bugs:
Small code written -> less bugs
Less debugging:
A well written test shouldn't require debugging
Debug a simple test instead of production scenario
Clean code with better design:
Design broken down per feature and test
Triggers code refactoring when finding difficulty writing a test
Any comments?
Yes, I hate the debugger anyway …
Here is a result of the TDD
Does it work in all cases?
Any kind of applications (small, huge, complex)
Hard with mathematical / algorithmic equations
Do we have bugs?
Yes.
Exploratory-testing
Client
Write a test for each bug
Our reported bugs has decreased
The third practice we will discuss in this presentation is “Pair Programming”.
Obviously it stands for having 2 developers writing code together
Two developers coding together
Driver: writing code
Navigator: continuously reviewing the code
Four Eyes Principle
Benefits: We have noticed that:
Learn Faster: Share knowledge
Code Quality: Continuous code review
Productivity:
Sharing the same knowledge across the team
Minimum impact when someone leaves
Less code duplication
Downside:
Tiring:
Driver explaining every step
Navigator focused on what Driver is doing
Risky: Not all developers like to pair
Agreements:
Respect each other
Listen to each other’s ideas and suggestions
Change pair every week
Remote-Pair if you’re sick
Comments: Yes, you forgot an important pairing agreement : « Don’t forget the wash before coming to work … »
What is it?
A team meeting held at the beginning of each iteration to review and evaluate the previous sprint
The main purpose of this meeting is to come up with tasks to improve the team’s process
Meeting Structure: We usually divide the meeting to multiple activities:
Check-In: Energizer to involve everyone
Throw Back:
Collect Data & Discussion:
Each throws his points (Good/Pain)
Group points
Vote
Actions:
Group discussion to come with actions for the Pain points or issues
Vote on actions
Move to back log
ROTI: Return over time invested
A quick review on how the session went
You will be part of it at the end
Almost 3 years ago I joined the team from the Beirut office. We didn’t want to change our way of work because we had already seen the benefits of it. So we decided to give the remote work a try.
There were two major activities to be adjusted
Pair Programming -> Remote Pair Programming
Meeting -> Remote Meetings
Collaboration tools to the rescue:
We installed headsets and cameras for all the team members
So we switch from from physical to virtual pairing:
We share the screens via Skype
And we moved to a continuous video conference status
Sharing screens was not the major problem if we have a good connection
Discussed the difficulties at the retrospectives and came up with solutions
Some of the problems were:
Time:
Office Hours, Lunch, Breaks etc.
Solution:
Share calendar
Share online document
At any point anyone is aware of the story’s status
Getting Lost:
Risk of losing the driver
Temptation to keep the keyboard
Solution:
Submit in small batches
Shelve code when not possible
Pomodoro technique
Code Sharing:
Can’t point your finger on the screen
Solution: try Floobits and Saros
Getting Tired:
Headaches from the headset
Loudspeakers wont work in open space
Solution: Ask for a short break when
Any Comments
- yes, a great thing about remote pairing is that you can come in flip flops in you wish, your pair won’t notice !
It is demo Time
Philippe & I will now do a live demo of how do we actually pair program.
So we will try to write code to solve the FizzBuzz problem
2 major difficulties
White Board:
White board in Paris:
Send our notes as Lync messages
Philippe would post them on white board
Thomas would take pics
Trello: became our online white board
Scrum master is not restricted to Paris office
No Video Conference
Story: Leave meeting any time
Phone calls over speakers
No visualization of the other office
Solution:
Visio conference rooms in Paris and Beirut
Dedicated screen for sharing and video
Do you remember Philippe? Philipppppe? you are still there?
- Yes, sorry, I was away for a minute … just wanted to see if you noticed ….
- After such a setup remote meeting weren’t restricted to retrospectives only! but we actually have remote lunch meetings from time to time!
It is demo Time
Philippe & I will now do a live demo on how we run a remote retrospective meeting.