SlideShare a Scribd company logo
Extreme Programming
Live
JavaZone 2013
Johannes Brodwall
Exilesoft Chief scientist
@jhannes
How do you become a
better programmer
After this talk
• You may find desire to train with TDD
• You may pair program sometimes
• You may think of some ways to improve the
way you work
1. Waddayamean
«extreme
programming»
2. What to look for
3. Demonstration
4. Discussion
5. Conclusion
«Extreme
programming»?
It is better to
• Do the thing right, then to
• Do the right thing
• (first)
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
Refactor code
and tests
Put together
Failing test
Write code
Failing test
Write code
Failing test
Failing test
Write code
Failing test
Write code
Failing test
Refactor code
and tests
Refactor code
and tests
Failing test
Write code
Failing test
Write code
Failing test
Refactor code
and tests
Refactor code
and tests
Demonstration
What to watch for?
What to watch for?
• How do we work together?
• How do we use tests to understand?
• How do we «grow» the code?
Please:
• Talk about what you see to the person
next to you (whisper)
•Tweet to @jhannes and @erlingwl
Demonstration
(Guest starring Roy Fernando)
Kata: Minesweeper
What did you see?
What did you see?
• How often did we switch ”driver”?
• Effects of pairing?
• What did the ”non-driver” do?
•How do you expect it to be different?
What do you think?
•Pairing two seniors?
•Pairing two juniors?
• Pairing senior and talent?
• Pairing senior and junior?
What did you see?
• How many tests?
•Was the step size right?
• What was the first test?
• How did we decide next test?
• What was the final test?
What did you see?
•Did we refactor the right amount?
• How long was the code red?
• Strengths in final design
•Weaknesses in final design
•Enough comments?
XP values
XP values
Simplicity
Communication
Feedback
Communication
Questions?
Your experience?
Becoming a better
programmer
Why become better
programmer?
Getting better quality
Getting better quality
Correctness
Maintainability
Productivity
But more importantly!
Think better
Think better
Think beyond the curly brackets
How to get better
Practice
Deliberate Practice
• Slow down
• Repeat
• Reflect
Practice at work
Practice at work
• Tests lets you solve it faster
Practice at home
Practice at home
Learn
more here
Practice with friends
What have you learned
• TDD makes you productive
• TDD consists of small steps
• TDD requires practice
• Pair programming is fun
• Pair programming helps you keep flow
+
TDD & different
different Levels of
quality
Conclusion
Conclusion
Free your mind
Free your mind
Practice our art
jbr@exilesoft.com
erling@cvpartner.com
http://johannesbrodwall.com
http://exilesoft.com
http://twitter.com/jhannes
http://twitter.com/erlingwl
Thank you

More Related Content

What's hot

Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
Marek Kirejczyk
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updated
Agha Dostain
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
guest446c0
 
User Stories
User StoriesUser Stories
User Stories
James Peckham
 
Specification by example
Specification by exampleSpecification by example
Specification by example
Asier Barrenetxea
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
Mike Clement
 
Scrum And The Enterprise
Scrum And The EnterpriseScrum And The Enterprise
Scrum And The Enterprise
James Peckham
 
Review June2015 Dec2015
Review June2015 Dec2015Review June2015 Dec2015
Review June2015 Dec2015
Ikuru Kanuma
 
Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
Jason Nocks
 
Kens Scrum Presentation
Kens Scrum PresentationKens Scrum Presentation
Kens Scrum Presentation
James Peckham
 
Avoiding Resume Pitfalls
Avoiding Resume PitfallsAvoiding Resume Pitfalls
Avoiding Resume Pitfalls
STC-Philadelphia Metro Chapter
 
Agile xp crash_course_2010_05_21
Agile xp crash_course_2010_05_21Agile xp crash_course_2010_05_21
Agile xp crash_course_2010_05_21
Balint Erdi
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
Alan Christensen
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
Lemi Orhan Ergin
 
Building Better Products, June 2015
Building Better Products, June 2015Building Better Products, June 2015
Building Better Products, June 2015
Jason Fraser
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
DicodingEvent
 
Agile testingandautomation
Agile testingandautomationAgile testingandautomation
Agile testingandautomation
jeisner
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Rehgan Avon
 
A Rapid e-Learning Primer for Technical Communicators
A Rapid e-Learning Primer for Technical CommunicatorsA Rapid e-Learning Primer for Technical Communicators
A Rapid e-Learning Primer for Technical Communicators
STC-Philadelphia Metro Chapter
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
Danny van Kasteel
 

What's hot (20)

Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updated
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
User Stories
User StoriesUser Stories
User Stories
 
Specification by example
Specification by exampleSpecification by example
Specification by example
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
 
Scrum And The Enterprise
Scrum And The EnterpriseScrum And The Enterprise
Scrum And The Enterprise
 
Review June2015 Dec2015
Review June2015 Dec2015Review June2015 Dec2015
Review June2015 Dec2015
 
Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
 
Kens Scrum Presentation
Kens Scrum PresentationKens Scrum Presentation
Kens Scrum Presentation
 
Avoiding Resume Pitfalls
Avoiding Resume PitfallsAvoiding Resume Pitfalls
Avoiding Resume Pitfalls
 
Agile xp crash_course_2010_05_21
Agile xp crash_course_2010_05_21Agile xp crash_course_2010_05_21
Agile xp crash_course_2010_05_21
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Building Better Products, June 2015
Building Better Products, June 2015Building Better Products, June 2015
Building Better Products, June 2015
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Agile testingandautomation
Agile testingandautomationAgile testingandautomation
Agile testingandautomation
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
A Rapid e-Learning Primer for Technical Communicators
A Rapid e-Learning Primer for Technical CommunicatorsA Rapid e-Learning Primer for Technical Communicators
A Rapid e-Learning Primer for Technical Communicators
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
 

Viewers also liked

Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)
Johannes Brodwall
 
Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)
Johannes Brodwall
 
Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)
Johannes Brodwall
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
Johannes Brodwall
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live
Johannes Brodwall
 
Agile Contracts
Agile ContractsAgile Contracts
Agile Contracts
Johannes Brodwall
 
Construction Failure
Construction FailureConstruction Failure
Construction Failure
Thananchayan Theivendra
 
Direito Administrativo - Desapropriação
Direito Administrativo - DesapropriaçãoDireito Administrativo - Desapropriação
Direito Administrativo - Desapropriação
PreOnline
 

Viewers also liked (8)

Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)
 
Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)Remote Pair Programming (Agile India)
Remote Pair Programming (Agile India)
 
Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)Getting your project off the ground (BuildStuffLt)
Getting your project off the ground (BuildStuffLt)
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live
 
Agile Contracts
Agile ContractsAgile Contracts
Agile Contracts
 
Construction Failure
Construction FailureConstruction Failure
Construction Failure
 
Direito Administrativo - Desapropriação
Direito Administrativo - DesapropriaçãoDireito Administrativo - Desapropriação
Direito Administrativo - Desapropriação
 

More from Johannes Brodwall

Build Your Stuff with Privacy by Design
Build Your Stuff with Privacy by DesignBuild Your Stuff with Privacy by Design
Build Your Stuff with Privacy by Design
Johannes Brodwall
 
The new new mobile web
The new new mobile webThe new new mobile web
The new new mobile web
Johannes Brodwall
 
2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming
Johannes Brodwall
 
Bare-Bones Software Architecture
Bare-Bones Software ArchitectureBare-Bones Software Architecture
Bare-Bones Software Architecture
Johannes Brodwall
 
Agile Architecture in Odessa
Agile Architecture in OdessaAgile Architecture in Odessa
Agile Architecture in Odessa
Johannes Brodwall
 
Bare-knuckle web development
Bare-knuckle web developmentBare-knuckle web development
Bare-knuckle web development
Johannes Brodwall
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
Johannes Brodwall
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
Johannes Brodwall
 
Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012
Johannes Brodwall
 
Smidig Stykkpriskontrakt
Smidig StykkpriskontraktSmidig Stykkpriskontrakt
Smidig Stykkpriskontrakt
Johannes Brodwall
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile Programming
Johannes Brodwall
 
Smidig ansvarsprosjekt
Smidig ansvarsprosjektSmidig ansvarsprosjekt
Smidig ansvarsprosjekt
Johannes Brodwall
 
Kiev Coding Dojo
Kiev Coding DojoKiev Coding Dojo
Kiev Coding Dojo
Johannes Brodwall
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
Johannes Brodwall
 
2011 09-17 tampere - the practicing programmer
2011 09-17 tampere - the practicing programmer2011 09-17 tampere - the practicing programmer
2011 09-17 tampere - the practicing programmer
Johannes Brodwall
 
Use Scenarios for your product backlog
Use Scenarios for your product backlogUse Scenarios for your product backlog
Use Scenarios for your product backlog
Johannes Brodwall
 
Extending Continuous Integration
Extending Continuous IntegrationExtending Continuous Integration
Extending Continuous Integration
Johannes Brodwall
 

More from Johannes Brodwall (17)

Build Your Stuff with Privacy by Design
Build Your Stuff with Privacy by DesignBuild Your Stuff with Privacy by Design
Build Your Stuff with Privacy by Design
 
The new new mobile web
The new new mobile webThe new new mobile web
The new new mobile web
 
2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming2013 08-07 agile 2013 - remote pair programming
2013 08-07 agile 2013 - remote pair programming
 
Bare-Bones Software Architecture
Bare-Bones Software ArchitectureBare-Bones Software Architecture
Bare-Bones Software Architecture
 
Agile Architecture in Odessa
Agile Architecture in OdessaAgile Architecture in Odessa
Agile Architecture in Odessa
 
Bare-knuckle web development
Bare-knuckle web developmentBare-knuckle web development
Bare-knuckle web development
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
 
Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012Agile Contracts - AgilePrague2012
Agile Contracts - AgilePrague2012
 
Smidig Stykkpriskontrakt
Smidig StykkpriskontraktSmidig Stykkpriskontrakt
Smidig Stykkpriskontrakt
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile Programming
 
Smidig ansvarsprosjekt
Smidig ansvarsprosjektSmidig ansvarsprosjekt
Smidig ansvarsprosjekt
 
Kiev Coding Dojo
Kiev Coding DojoKiev Coding Dojo
Kiev Coding Dojo
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 
2011 09-17 tampere - the practicing programmer
2011 09-17 tampere - the practicing programmer2011 09-17 tampere - the practicing programmer
2011 09-17 tampere - the practicing programmer
 
Use Scenarios for your product backlog
Use Scenarios for your product backlogUse Scenarios for your product backlog
Use Scenarios for your product backlog
 
Extending Continuous Integration
Extending Continuous IntegrationExtending Continuous Integration
Extending Continuous Integration
 

Extreme Programming Live - JavaZone

Editor's Notes

  1. Note to translator: I will explain the game of minesweeper while showing this slide. The game initially presents a field where there are hidden mines When the player clicks on a cell, either he «steps» on a mine or he reveals the cell If he «steps on a mine», the game is over, player loses If he reveals the cell, the cell tells how many mines are next to it
  2. Note to translator: Here, I will ask the English speaking members of the audience to give feedback on what they saw. I will hand out chocolates to those to answer. 