Remote Pair Programming Agile India 2014 Johannes Brodwall Exilesoft Chief Guest starring: Niruka Ruhunage.

Slides:



Advertisements
Similar presentations
Trick-or-Vote 2006 Canvass Training. WALKING & KNOCKING for DEMOCRACY! We will be knocking on doors to get out the vote. Its the best way, on the best.
Advertisements

CV Writing & Interview Techniques
Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief Guest starring: Dileepa Jayasuriya.
Extreme Planning: Agile turned to the max Exilesoft Johannes Brodwall Exilesoft Chief
Extreme Collaboration Johannes Brodwall Exilesoft Chief TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician.
Extreme Programming Live WeActuallyBuildStuff Johannes Brodwall Exilesoft Chief Guest starring: Chaminda Sooriyapperuma.
Coding dojo PocketMobile Johannes Brodwall, Chief scientist Exilesoft.
Jason Howard. Agenda I. How to download robotc II. What is tele-op used for? III. How to build a basic tele-op program IV. Getting the robot to drive.
Going from District to Area
Scrum. An evolutionary/iterative/incremental/agile software process The main roles in Scrum are: – Scrum team: Team of software developers – Scrum master.
Scrum CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile development By Sam Chamberlain. First a bit of history..
MODULE 5 Lesson 18. Objective Apply and explain alternate methods for subtracting from multiples of 100 and from numbers with zero in the tens place.
Getting from Point A to Point B….  Be a part of what is going on in class.  Get into the reading.  Pay attention.  Ask questions.  Participate in.
Trusted IT Group. The challenge: 40 active, concurrent IT projects  Unsatisfactory Project Delivery.
Pair Programming Testing 2, October 14, Administration  Project due Monday 2PM SHARP  Remember all parts of documentation (list of tests, project.
How to run an effective (and fun) standup. Notes from session at Agile Open NW By Ed Kraay.
Tutorial Video basic skills basic skills Next page -->
Why Worry – Just Write PUTTING THE HOUSE IN ORDER.
Line up By Melissa Dalis Professor Susan Rodger Duke University June 2011.
Get quality results faster: Agile Projects and your team Presenters: Laurie Barnas and Wendy Taylor, Associate Registrars, University of Victoria.
Agile Awareness Workshop 2008 Flavours of Agile II eXtreme Programming V I K A S H A Z R A T I June 14' 2008.
Agile Adoption GMAS Product / Practice Teams PMO Meeting – May 2014.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Johannes Brodwall Getting your project off the ground.
Remote Pair Programming Agile 2013 Johannes Brodwall Exilesoft Chief Guest starring: Niruka Ruhunage.
Experience Agile Programming SDC 2012, Göteborg Johannes Brodwall Steria Featuring: Ole Chr Rynning.
How Tia Lola Came to Visit Stay
1 IE in the Classroom The Internet Explorer Web Browser EDW647 Internet for Educators Roger Webster, Ph.D. Millersville University Department of Computer.
Introduction to eChalk For Students. What is eChalk? eChalk’s unique online learning environment provides your school with its own electronic “town square”
KAREN PHELPS Spontaneous Sponsoring. Your Home Presentations “A Valuable Source for Recruits”
Stephen Chief Strategy Officer Telerik
The Why, What, When, How, and How- to of Book Clubs
Pair Programming. XP Rule of Thumb “When something is difficult or painful, do it more often until it becomes easier.”
Extreme Planning: Agile turned to the max DevDay.LK Johannes
Successful Interviewing. Objective Students will be able to anticipate and articulate key job skills and be prepared for a real job interview.
JFK-103B1W9 and JFK-103B3W9 This program is going to be used to learn about:  Decision Making Skills  Communication Skills  Team Building Skills and.
Process is continuously improving Have Definition of Done (DoD) DoD achievable within each iteration Team respects DoD The bottom line Delivering working,
Indispensable tools for research at its best
Module 1 Lesson 9 Find related multiplication facts by adding and subtracting equal groups in array models.
Python Programming Using Variables and input. Objectives We’re learning to build functions and to use inputs and outputs. Outcomes Build a function Use.
Habit 5 Seek First to Understand, Then to be Understood
THE AGILE MENTALITY CHAPTER Topics  Why Use Agile and Scrum?  Agile Development –Manifesto for Agile Software Development  Scrum Methodology.
Welcome to IST331 S1 Main concepts today Introduction to team, processes The user Cognitive ergonomics, design Examples of things about the user that are.
Het einde van het beroep van tester - Wat Agile, DevOps en Scrum betekenen voor het testvak -
Theories of Agile, Fails of Security Daniel Liber CyberArk.
HOW AND WHY TO LOVE CUCUMBER By Dana Scheider. Is This Your Programming Experience?
Johannes Brodwall Chief Scientist Smidig arkitektur.
Coding Quest JavaBin Stavanger Johannes Brodwall Exilesoft Chief
TEAMWORK A FEW NOTES. THIS MAY BE YOUR MOST COMPREHENSIVE, REALISTIC TEAM PROJECT EXPERIENCE IN COLLEGE … 8 weeks A beginning and an end Consistent team.
Experience Agile Programming Agile Meetup, Sri Lanka Johannes Brodwall Steria Featuring: Shihan Iqbal.
Chapter 7 Continued Arrays & Strings. Arrays of Structures Arrays can contain structures as well as simple data types. Let’s look at an example of this,
Coding Dojo Sofware People 2012 Johannes Brodwall, Principal Architect Steria
#SummitNow Building a Quick Solution with Alfresco Workdesk 13. November 2013 Richard McKnight - Alfresco Christian Finzel - Alfresco.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
#msdevcon Community Track IMPLEMENTATION OF SCRUM Bernardin Katić Insa Investment Software AG.
Culture Snapshot Card Sort Analysis Video Questions.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
GroceryList++ Brian, Peter, Staci, Darrin, Anna.
Unit 7 Learning Objectives
Hello and welcome to today’s training.
Scrum and TargetProcess
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Johanna Rothman Agile Team Measurements Chapter 12
Pair Programming.
SharePoint services Provides team collaboration through SharePoint Sites and makes it easy for communities to work together on documents, tasks, contacts,
Presentation transcript:

Remote Pair Programming Agile India 2014 Johannes Brodwall Exilesoft Chief Guest starring: Niruka Ruhunage

How can a distributed team still collaborate closely?

How can a team collaborate well?

This talk is for you if you…

You work in a team, but...

Your team doesn ’ t feel like a team

Your distributed team doesn ’ t feel like a team

Who is using pair programming as their preferred approach?

After this talk

A receipe to have more fun with your team

But first

But first – a competition:

Competition: Find the blue sentence

1.What is a super team 2.Building a super team with pairing 3.Getting the benefits 4.Summary

Part I

What is a super team?

Sharing the burden

Rabbit hole!

Shared context

Sharing experience

Whops! No!

Working baseline

“That’s strange…”

“Eureka!”

20 minutes fix (where 10 was waiting)

Problem solved

The sad team

Planning Johannes Backend dev “Scrum” “Master” Johannes: You’ll create CRUD SOAP service for projects with applications Okay

Planning Johannes Backend dev “Scrum” “Master” How long will it take? Um…

Planning Backend dev 2 Johannes Backend dev “Scrum” “Master” It’s pretty easy with Hibernate Okay, 8 hours for each of Create… then !

Stand-up Designer Frontend dev Database dev Today, I will work on Create Project Johannes Backend dev Scrum master

Stand-up Designer Frontend dev Database dev No impediments Johannes Backend dev Scrum master

Behold – the uber coder

Exception! org.hibernate.PropertyValueException: not-null property references a null or transient value:....common.entities.Application._applicationsBackref org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEvent Listener.java:210) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

ExceptionGoogle Stack overflow TweakDeployPoke

ExceptionGoogle Stack overflow TweakDeployPoke

ExceptionGoogle Stack overflow TweakDeployPoke

ExceptionGoogle Stack overflow TweakDeployPoke

Stand-up Designer Frontend dev Database dev Yesterday, I worked on Create Project Johannes Backend dev Scrum master

Stand-up Today, I will hopefully fix the exception and also do Delete Project Johannes Scrum master Designer Frontend dev Database dev Backend dev

Stand-up No impediments Johannes Scrum master Designer Frontend dev Database dev Backend dev

Stand-up Johannes Scrum master Designer Frontend dev Database dev Backend dev How could they help anway

Behold – the uber coder

Stand-up Johannes Scrum master Yesterday, I finally finished Delete after 3 days of «coding» Designer Frontend dev Database dev Backend dev I didn’t need the Delete service

Stand-up Johannes Scrum master Designer Frontend dev Database dev Backend dev I didn’t need the Delete service Yesterday, I finally finished Delete after 3 days of «coding»

STOP

Imagine you should carry 10 wooden beams Each is 3 meters and 30 kg

The fun team

Stand-up I’m ready for a new task. What’s on the board.. Johannes Scrum master

Stand-up «Let’s users administrate their projects» Johannes Scrum master

Stand-up I haven’t done any Hibernate tasks before. Who can I pair with? Johannes Scrum master I can work together with you

Exception! org.hibernate.PropertyValueException: not-null property references a null or transient value:....common.entities.Application._applicationsBackref org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEvent Listener.java:210) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

That link doesn’t really seem relevant. Are we getting anywhere? Time to ask for help?

I think Dileepa has worked on this sort of thing before

Dileepa Yeah, just look at the Person HasMany Roles mapping

That’s it! High five!

The difference

Everyone works everywhere Knowledge is disseminated You’re never alone

Part II

Superfying with Pair programming

Pair programming styles

Debate club “No, this variable should be called fooNumber, not fooNum”, “But it’s a common abbreviation”

Dedicated driver “I’ll write the parser” “I’ll design the algorithm”

Driver-navigator “I don’t know how to solve this, so I’ll sit at the keyboard”

Ping-pong

Ingredient #1: Pair programming

Ingredient #2: Test driven development

Failing test Write code Failing test Write code Failing test

Ingredient #3: Refactoring

Failing test Write code Failing test Write code Failing test Refactor code and tests

Put together

Failing test Write code Failing test Write code Failing test

Write code Failing test Write code Failing test Refactor code and tests

Failing test Write code Failing test Write code Failing test Refactor code and tests

Demonstration (Guest starring Niruka Ruhunage)

Kata: Number to text

8192 => eight thousand one hundred and ninety two 125,017 => one hundred and twenty five thousand and seventeen

What does it feel like?

Part III

From here to there

Make sharing into a goal

Dileepa Johannes Chintaka Thomas Sergey Arunas

Dileepa Johannes Chintaka Thomas Sergey Arunas

ArunasJohannesDileepaChinthakaSergeyThomas Add new company ✓✓✓✓✓ Display contacts on map ✓✓✓ Filter contacts in list ✓✓ Authenticate user by company ✓✓✓✓ Store password securely ✓✓ Usernames with Norwegian letters are rejected ✓

ArunasJohannesDileepaChinthakaSergeyThomas Add new company ✓✓✓✓✓ Display contacts on map ✓✓✓ Filter contacts in list ✓✓ Authenticate user by company ✓✓✓✓ Store password securely ✓✓ Usernames with Norwegian letters are rejected ✓

ArunasJohannesDileepaChinthakaSergeyThomas Add new company ✓✓✓✓✓ Display contacts on map ✓✓✓ Filter contacts in list ✓✓ Authenticate user by company ✓✓✓✓ Store password securely ✓✓ Usernames with Norwegian letters are rejected ✓

Overcoming obstacles

JIRA

With a true team, no member owns more than their current task

TODODOINGDONE WAITING AWAY

You will get more done (But not in the first or second sprint)

Distance

Skype (or any voice sharing) GoToMeeting (or flexible screen sharing) Dropbox (or any file sharing)

Skill and tact

Experiment with switching patterns Try out ping-pong “Could we try it this way first?”

Building your skills

Practice with kata

Failing test Write code Failing test Write code Failing test Refactor code and tests

1.Create a dropbox account 2.Share a folder with a friend 3.Put a coding project there 4.Create a screen share session 5.Call up your friend

Fun events

Expect exhaustion

Try an experiment

Who is already pairing?

Just do it

Ask for help Don’t wait for Perfect tool Perfect oppunity

Conclusion

What

Two people at one codebase No member owns a task beyond the day Team rotates pairing

Why

“Rockstar programmer” model doesn’t scale

Less Overproduction (unused functions in API) Less Waiting (for the only person who knows X) Less Motion (as everyone gets more skilled) Fewer Defects (as two pair of eyes see better) Less Over-processing (from double responsibility) Less Inventory (as team works more focused) Less Transportation (handoffs inside a story)

How

Ask for help – don’t work alone Try ping pong programming for two hours Be open, share and listen

Competition: What was the blue sentence?

A team creates together what no member could do alone

You can start as soon as you get back to work

Thank you