Download presentation
Presentation is loading. Please wait.
Published byEthel Clarke Modified over 9 years ago
1
Coding Quest JavaBin Stavanger Johannes Brodwall Exilesoft Chief scientist @jhannes
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
Stand-up Designer Frontend dev Database dev No impediments Johannes Backend dev Scrum master
7
Behold – the uber coder
8
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)
9
ExceptionGoogle Stack overflow TweakDeployPoke
10
ExceptionGoogle Stack overflow TweakDeployPoke
11
ExceptionGoogle Stack overflow TweakDeployPoke
12
ExceptionGoogle Stack overflow TweakDeployPoke
13
Stand-up Designer Frontend dev Database dev Yesterday, I worked on Create Project Johannes Backend dev Scrum master
14
Stand-up Today, I will hopefully fix the exception and also do Delete Project Johannes Scrum master Designer Frontend dev Database dev Backend dev
15
Stand-up No impediments Johannes Scrum master Designer Frontend dev Database dev Backend dev
16
Stand-up Johannes Scrum master Designer Frontend dev Database dev Backend dev How could they help anway
18
Behold – the uber coder
20
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
21
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»
22
STOP
23
Imagine you should carry 10 wooden beams Each is 3 meters and 30 kg
24
The fun team
25
Stand-up I’m ready for a new task. What’s on the board.. Johannes Scrum master
26
Stand-up «Let’s users administrate their projects» Johannes Scrum master
27
Stand-up I haven’t done any Hibernate tasks before. Who can I pair with? Johannes Scrum master I can work together with you
29
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)
30
That link doesn’t really seem relevant. Are we getting anywhere? Time to ask for help?
31
I think Dileepa has worked on this sort of thing before
32
Dileepa Yeah, just look at the Person HasMany Roles mapping
33
That’s it! High five!
34
Pair programming styles
35
Debate club “No, this variable should be called fooNumber, not fooNum”, “But it’s a common abbreviation”
36
Dedicated driver “I’ll write the parser” “I’ll design the algorithm”
37
Driver-navigator “I don’t know how to solve this, so I’ll sit at the keyboard”
38
Ping-pong
39
Ingredient #1: Pair programming
42
Ingredient #2: Test driven development
43
Failing test Write code Failing test Write code Failing test
44
Ingredient #3: Refactoring
45
Failing test Write code Failing test Write code Failing test Refactor code and tests
46
Put together
47
Failing test Write code Failing test Write code Failing test
48
Write code Failing test Write code Failing test Refactor code and tests
49
Failing test Write code Failing test Write code Failing test Refactor code and tests
50
Kata: Number to roman
51
1 => I 2 => II 4 => IV 5 => V 10 => X 50 => L 100 => C 500 => D 1000 => M 1999 => MCMXCIX
52
Make sharing into a goal
53
Dileepa Johannes Chintaka Thomas Sergey Arunas
54
Dileepa Johannes Chintaka Thomas Sergey Arunas
55
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 ✓
56
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 ✓
57
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 ✓
58
Building your skills
59
Expect exhaustion
60
Just do it
61
Conclusion
62
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)
63
How
64
Ask for help – don’t work alone Try ping pong programming for two hours Be open, share and listen
65
You can start as soon as you get back to work
66
jbr@exilesoft.com djy@exilesoft.com http://JohannesBrodwall.com http://exilesoft.com http://twitter.com/jhannes Thank you
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.