Presentation is loading. Please wait.

Presentation is loading. Please wait.

Extreme Collaboration Johannes Brodwall Exilesoft Chief TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician.

Similar presentations


Presentation on theme: "Extreme Collaboration Johannes Brodwall Exilesoft Chief TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician."— Presentation transcript:

1 Extreme Collaboration Johannes Brodwall Exilesoft Chief scientist @jhannes TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician Junior/junior: Timer Junior/senior: Driver/trainer – optimize learning Junior/senior: Co-pilot/pilot – optimize progress

2 How can a team collaborate well?

3 This talk is for you if you…

4 You work in a team, but...

5 Your team doesn ’ t feel like a team

6 XP: Collective code ownership Pair programming Whole team Sustainable pace

7 Defining pair programming

8 Two people working on the same files

9 Who has tried pair programming?

10 Positive experiences

11 Negative experiences

12 Why no more?

13 After this talk

14 Commit to try

15 1.A sad team 2.A super team 3.Getting to great

16 Part I

17 The sad team

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

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

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

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

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

23 Behold – the uber coder

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

25 ExceptionGoogle Stack overflow TweakDeployPoke

26 ExceptionGoogle Stack overflow TweakDeployPoke

27 ExceptionGoogle Stack overflow TweakDeployPoke

28 ExceptionGoogle Stack overflow TweakDeployPoke

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

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

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

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

33

34 Behold – the uber coder

35

36 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

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

38 STOP

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

40 Part II

41 The fun team

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

43 Stand-up «Basic submit leave request» Johannes

44 Stand-up Hiran Johannes We haven’t worked together yet this week

45

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

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

48 I think Manoj has worked on this sort of thing before

49 Manoj Yeah, just look at the Person mapping file

50 That’s it! High five!

51 The difference

52 Everyone works everywhere

53 You get help with tech you don’t know

54 Everyone works everywhere You’re not blocked

55 Everyone works everywhere Integration becomes easier

56 Knowledge spreads

57 You don’t get stuck

58 Wrong path is stopped by pair

59 You don’t get stuck Silly mistakes spotted by pair

60 You don’t get stuck Silly mistakes spotted by pair

61 Your job as a pair

62 “Are we focusing on the goal”

63 “Did you notice …?”

64 “Is there a better way?”

65 “Are we working as the team agreed?”

66 Part II

67 Superfying with Pair programming

68 Make sharing into a goal

69 Dileepa Johannes Chintaka Thomas Sergey Arunas Who is acting worst?

70 Dileepa Johannes Chintaka Sergey Arunas Thomas Who is acting best?

71 Dileepa Johannes Chintaka Thomas Sergey Arunas

72 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 ✓ Which task is suspicious?

73 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 ✓ Which team member is helping most?

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

75 Task assignment

76 TODODOINGDONE Hiran Johannes Sankalpa Waruni Milina Johannes Hiran Waruni Johannes Waruni Milina Sankalpa Johannes Waruni Milina Sankalpa Hiran Milina Sankalpa

77 TODODOINGDONE WAITING AWAY

78 TODODOINGDONE WAITING AWAY

79 TODODOINGDONE WAITING AWAY

80 TODODOINGDONE WAITING AWAY

81 TODODOINGDONE WAITING AWAY

82 TODODOINGDONE WAITING AWAY One avatar per brain One assigned task per brain Never mind JIRA

83 You will get more done (But not next sprint)

84 PS: It’s not only for developers

85 Getting there

86 Practice with kata

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

88 Ping-pong

89 Fun events

90

91 Try an experiment

92 Pair 2 hours per day for a week

93 Expect exhaustion

94 For the first month

95 Conclusion

96 What

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

98 Why

99 Working solo limits your vision of the code base and the problem

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

101 How

102 Create a pair programming circle Practice pairing Commit to pairing 2 hours per day for a week

103 Do you accept the challenge? Pair for 2 hours per day for a week

104 Your job as a pair “Are we focusing on the goal?” “Did you notice …?” “Is there a better way?” “Are we working in the way the team agreed?”

105 Tools and tricks Pair programming circle Knowledge matrix Floating assignments Expect exhaustion

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

107 I want your feedback: How likely are you to recommend this session to a co- worker on a scale from 1 (lowest) to 10 (highest)? Optional: What's the reason for your number?


Download ppt "Extreme Collaboration Johannes Brodwall Exilesoft Chief TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician."

Similar presentations


Ads by Google