SlideShare a Scribd company logo
Extreme Programming
               Live
            WeActuallyBuildStuff
              Johannes Brodwall
          Exilesoft Chief scientist

                        @jhannes
Goal
         • To have fun now!
• For you to have fun now!
 • For you to have fun later
               (stretch goal)
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»?
Is it better to
 • Do the thing right?
• Do the right thing?
It is better to
• Do the thing right, then to
      • Do the right thing
                    • (first)
Ping pong
Ingredience #1:
Pair programming
Ingredience #2:
    Test driven
  development
Failing test

       Write code

  Failing test


Write code

Failing test
Ingredience #3:
    Refactoring
Failing test
        Write code
 Refactor code
   and tests
        Failing test
Write code
      Refactor code
        and tests
Failing test
Put together
Failing test

               Write code


               Failing test

Write code


Failing test
Failing test

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

                           Write code
                      Refactor code
                        and tests
                           Failing test
Write code
      Refactor code
        and tests
Failing test
Demonstration
What to watch for?
If you’re a project manager
If you’re an architect
If you’re a developer
If you’re neither
Please:
• Talk about what you see to the person
                  next to you (whisper)
                    •Tweet to @jhannes
Demonstration
(Guest starring Andrej Slivko)
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?
Questions?
Your experience?
Becoming a better
    programmer
Why become better
     programmer?
Seriously. Why?
Only 13.37% of effort
Getting better quality
Getting better quality
             Correctness
           Maintainability
But more importantly!
Think better
Think better
Think beyond the curly brackets
«The Alignment Trap»
How to get better
Practice
Deliberate Practice
        •   Slow down
             • Repeat
             • Reflect
Practice at work
Practice at home
Practice at home
 Watch this
 space!
Practice with friends
Vilnius Coding Dojo?
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
Conclusion
Conclusion
 Free your mind
Free your mind
    Practice our art
Thank you
               jbr@exilesoft.com

     http://johannesbrodwall.com
               http://exilesoft.com

        http://twitter.com/jhannes

More Related Content

What's hot

Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
Gil Zilberfeld
 
Code reviews
Code reviewsCode reviews
Code reviews
Robert Lee
 
top developer mistakes
top developer mistakes top developer mistakes
top developer mistakes
Hanokh Aloni
 
Things senior developers should know
Things senior developers should knowThings senior developers should know
Things senior developers should know
Hanokh Aloni
 
Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017
David Völkel
 
Useful automation
Useful automationUseful automation
Useful automation
Antonina_Burlachenko
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Peter Kofler
 
Coaching Anti-Pattens and common smells
 Coaching Anti-Pattens and common smells Coaching Anti-Pattens and common smells
Coaching Anti-Pattens and common smells
Sekhar Burra, CEC, P-CST
 
Agile Anti-patterns
Agile Anti-patternsAgile Anti-patterns
Agile Anti-patterns
Andrew Cox
 
Clean Code and Common Engineering Practices
Clean Code and Common Engineering PracticesClean Code and Common Engineering Practices
Clean Code and Common Engineering Practices
Ruth Sperer
 
Javascript Tests with Jasmine for Front-end Devs
Javascript Tests with Jasmine for Front-end DevsJavascript Tests with Jasmine for Front-end Devs
Javascript Tests with Jasmine for Front-end Devs
Chris Powers
 
Hiring Backend Engineers
Hiring Backend EngineersHiring Backend Engineers
Hiring Backend Engineers
Vaidas Pilkauskas
 
Effort estimation
Effort estimationEffort estimation
Effort estimation
Hanokh Aloni
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skills
XPeppers
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
Chris Powers
 
Waterfalls for Agile in a bag
Waterfalls for Agile in a bagWaterfalls for Agile in a bag
Waterfalls for Agile in a bagSteve Wells
 
Waterfalls for agile cambridge
Waterfalls for agile cambridgeWaterfalls for agile cambridge
Waterfalls for agile cambridge
Steve Wells
 
Agil como Bruce Lee
Agil como Bruce LeeAgil como Bruce Lee
Agil como Bruce Lee
Luiz Ribeiro
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
Mike Clement
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
Mike Clement
 

What's hot (20)

Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
 
Code reviews
Code reviewsCode reviews
Code reviews
 
top developer mistakes
top developer mistakes top developer mistakes
top developer mistakes
 
Things senior developers should know
Things senior developers should knowThings senior developers should know
Things senior developers should know
 
Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017
 
Useful automation
Useful automationUseful automation
Useful automation
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)
 
Coaching Anti-Pattens and common smells
 Coaching Anti-Pattens and common smells Coaching Anti-Pattens and common smells
Coaching Anti-Pattens and common smells
 
Agile Anti-patterns
Agile Anti-patternsAgile Anti-patterns
Agile Anti-patterns
 
Clean Code and Common Engineering Practices
Clean Code and Common Engineering PracticesClean Code and Common Engineering Practices
Clean Code and Common Engineering Practices
 
Javascript Tests with Jasmine for Front-end Devs
Javascript Tests with Jasmine for Front-end DevsJavascript Tests with Jasmine for Front-end Devs
Javascript Tests with Jasmine for Front-end Devs
 
Hiring Backend Engineers
Hiring Backend EngineersHiring Backend Engineers
Hiring Backend Engineers
 
Effort estimation
Effort estimationEffort estimation
Effort estimation
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skills
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
 
Waterfalls for Agile in a bag
Waterfalls for Agile in a bagWaterfalls for Agile in a bag
Waterfalls for Agile in a bag
 
Waterfalls for agile cambridge
Waterfalls for agile cambridgeWaterfalls for agile cambridge
Waterfalls for agile cambridge
 
Agil como Bruce Lee
Agil como Bruce LeeAgil como Bruce Lee
Agil como Bruce Lee
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 

Viewers also liked

Extreme Programming practices for your team
Extreme Programming practices for your teamExtreme Programming practices for your team
Extreme Programming practices for your teamPawel Lipinski
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
Jon McNestrie
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
Naresh Jain
 
Extreme programming (xp) | David Tzemach
Extreme programming (xp) | David TzemachExtreme programming (xp) | David Tzemach
Extreme programming (xp) | David Tzemach
David Tzemach
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
Bilal Shah
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
DataArt
 

Viewers also liked (7)

Extreme Programming practices for your team
Extreme Programming practices for your teamExtreme Programming practices for your team
Extreme Programming practices for your team
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
Extreme programming (xp) | David Tzemach
Extreme programming (xp) | David TzemachExtreme programming (xp) | David Tzemach
Extreme programming (xp) | David Tzemach
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 

Similar to WeActuallyBuildStuff - Extreme Programming Live

Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
Johannes Brodwall
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile Programming
Johannes Brodwall
 
Make a better with clean code
Make a better with clean codeMake a better with clean code
Make a better with clean code
Keattiwut Kosittaruk
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
Danny Preussler
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)
wolframkriesing
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
aqib javaid
 
Coding Introductory Lesson Upper Elementary
Coding Introductory Lesson Upper ElementaryCoding Introductory Lesson Upper Elementary
Coding Introductory Lesson Upper Elementary
Brittany Pike
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
Artem Tabalin
 
Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
Guy Royse
 
Let's test!
Let's test!Let's test!
Let's test!
Andrea Giuliano
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
AmalEldhose2
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
Peter Kofler
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assurance
Benjamin Baumann
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucks
Peter Gfader
 
Increasing code quality with code reviews (poetry version)
Increasing code quality with code reviews (poetry version)Increasing code quality with code reviews (poetry version)
Increasing code quality with code reviews (poetry version)David Stockton
 
Learning by contributing to Open-Source Software
 Learning by contributing to Open-Source Software Learning by contributing to Open-Source Software
Learning by contributing to Open-Source Software
ESUG
 
Code quality as a built-in process
Code quality as a built-in processCode quality as a built-in process
Code quality as a built-in process
Elad Maimon
 
Test Driven Development with Laravel
Test Driven Development with LaravelTest Driven Development with Laravel
Test Driven Development with Laravel
Tyler Johnston
 
The Elements of Style
The Elements of StyleThe Elements of Style
The Elements of Style
Derek Graham
 
Peer review
Peer reviewPeer review
Peer review
Charuta Joshi
 

Similar to WeActuallyBuildStuff - Extreme Programming Live (20)

Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 
Experience Agile Programming
Experience Agile ProgrammingExperience Agile Programming
Experience Agile Programming
 
Make a better with clean code
Make a better with clean codeMake a better with clean code
Make a better with clean code
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
 
Coding Introductory Lesson Upper Elementary
Coding Introductory Lesson Upper ElementaryCoding Introductory Lesson Upper Elementary
Coding Introductory Lesson Upper Elementary
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
 
Let's test!
Let's test!Let's test!
Let's test!
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assurance
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucks
 
Increasing code quality with code reviews (poetry version)
Increasing code quality with code reviews (poetry version)Increasing code quality with code reviews (poetry version)
Increasing code quality with code reviews (poetry version)
 
Learning by contributing to Open-Source Software
 Learning by contributing to Open-Source Software Learning by contributing to Open-Source Software
Learning by contributing to Open-Source Software
 
Code quality as a built-in process
Code quality as a built-in processCode quality as a built-in process
Code quality as a built-in process
 
Test Driven Development with Laravel
Test Driven Development with LaravelTest Driven Development with Laravel
Test Driven Development with Laravel
 
The Elements of Style
The Elements of StyleThe Elements of Style
The Elements of Style
 
Peer review
Peer reviewPeer review
Peer review
 

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
 
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
 
Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (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
 
Extreme Programming Live - JavaZone
Extreme Programming Live - JavaZoneExtreme Programming Live - JavaZone
Extreme Programming Live - JavaZone
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
 
Agile Contracts
Agile ContractsAgile Contracts
Agile Contracts
Johannes Brodwall
 
Smidig ansvarsprosjekt
Smidig ansvarsprosjektSmidig ansvarsprosjekt
Smidig ansvarsprosjekt
Johannes Brodwall
 
Kiev Coding Dojo
Kiev Coding DojoKiev Coding Dojo
Kiev Coding Dojo
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 backlogJohannes Brodwall
 

More from Johannes Brodwall (20)

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
 
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)
 
Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)Remote pair programming (BuildStuffLt)
Remote pair programming (BuildStuffLt)
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
 
Extreme Programming Live - JavaZone
Extreme Programming Live - JavaZoneExtreme Programming Live - JavaZone
Extreme Programming Live - JavaZone
 
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
 
Agile Contracts
Agile ContractsAgile Contracts
Agile Contracts
 
Smidig ansvarsprosjekt
Smidig ansvarsprosjektSmidig ansvarsprosjekt
Smidig ansvarsprosjekt
 
Kiev Coding Dojo
Kiev Coding DojoKiev Coding Dojo
Kiev Coding Dojo
 
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
 

WeActuallyBuildStuff - Extreme Programming Live

Editor's Notes

  1. Note to translator: I willexplainthe game of minesweeper whileshowingthis slide.The game initiallypresents a fieldwheretherearehidden minesWhentheplayerclickson a cell, eitherhe «steps» on a mine or he reveals thecellIf he «stepson a mine», the game is over, player losesIf he reveals thecell, thecelltellshowmany mines arenext to it
  2. Note to translator: Here, Iwill ask the English speakingmembersoftheaudience to give feedback onwhattheysaw. I will hand outchocolates to those to answer. 