Presentation is loading. Please wait.

Presentation is loading. Please wait.

Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief Guest starring: Dileepa Jayasuriya.

Similar presentations


Presentation on theme: "Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief Guest starring: Dileepa Jayasuriya."— Presentation transcript:

1 Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

2 How can a distributed team still collaborate closely?

3 How can a team collaborate well?

4 This talk is for you if you…

5 You work in a team, but...

6 Your team doesn ’ t feel like a team

7 Your distributed team doesn ’ t feel like a team

8 After this talk

9 Three things to become a super productive team

10 But first

11 But first – a competition:

12 Competition: Find the blue sentence

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

14 Part I

15 What is a super team?

16 Sharing the burden

17

18

19

20 Rabbit hole!

21 Shared context

22 Sharing experience

23 Whops! No!

24

25 Working baseline

26

27 “That’s strange…”

28 “Eureka!”

29 20 minutes fix (where 10 was waiting)

30 Problem solved

31 The sad team

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

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

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

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

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

37 Behold – the uber coder

38 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)

39

40

41

42

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

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

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

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

47

48 Behold – the uber coder

49

50 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

51 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»

52 STOP

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

54 The fun team

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

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

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

58

59 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)

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

61 I think Dileepa has worked on this sort of thing before

62 Dileepa Yeah, just look at the Person HasMany Roles mapping

63 That’s it! High five!

64 The difference

65 Everyone works everywhere Knowledge is disseminated You’re never alone

66 Part II

67 Superfying with Pair programming

68 Pair programming styles

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

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

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

72 Ping-pong

73 Ingredient #1: Pair programming

74

75

76 Ingredient #2: Test driven development

77 Failing test Write code Failing test Write code Failing test

78 Ingredient #3: Refactoring

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

80 Put together

81 Failing test Write code Failing test Write code Failing test

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

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

84 Demonstration (Guest starring Dileepa Jayasuriya)

85 Kata: Number to text

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

87 What does it feel like?

88 Part III

89 From here to there

90 Make sharing into a goal

91 Dileepa Johannes Chintaka Thomas Sergey Arunas

92 Dileepa Johannes Chintaka Thomas Sergey Arunas

93 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 ✓

94 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 ✓

95 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 ✓

96 Overcoming obstacles

97 JIRA

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

99 TODODOINGDONE WAITING AWAY

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

101 Distance

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

103 Skill and tact

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

105 Building your skills

106 Fun events

107

108 Expect exhaustion

109 Just do it

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

111 Conclusion

112 What

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

114 Why

115 “Rockstar programmer” model doesn’t scale

116 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)

117 How

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

119 Competition: What was the blue sentence?

120 A team creates together what no member could do alone

121 You can start as soon as you get back to work

122 jbr@exilesoft.com djy@exilesoft.com http://JohannesBrodwall.com http://exilesoft.com http://twitter.com/jhannes Thank you


Download ppt "Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief Guest starring: Dileepa Jayasuriya."

Similar presentations


Ads by Google