Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Extreme Programming: Past, Present, and Future

Extreme Programming: Past, Present, and Future

Is XP Dead? We'll tackle this topic and others in the talk.

Extreme Programming (XP) was one of the first agile methods, created by Kent Beck. It was the dominant agile method in the late 90s and early 2000s before Scrum overtook it.

We'll discuss the history of XP, describe a few of the XP practices, and talk about the importance of the XP practices for modern agile software development teams and for the future of software development in general.

Anthony Sciamanna

June 17, 2021
Tweet

More Decks by Anthony Sciamanna

Other Decks in Programming

Transcript

  1. Extreme Programming
    Past, Present, and Future
    June 18, 2021
    Anthony Sciamanna
    Senior Consultant
    Industrial Logic

    View Slide

  2. • Passionate about Extreme Programming (XP), Lean Software Development, and Modern Agile.
    • Expertise in helping teams and development organizations improve how they work, the quality of their
    code, and their ability to deliver value to their customers.
    • Focusing on technical excellence, lean concepts, continuous improvement, continuous learning, and
    continuous delivery.
    Anthony Sciamanna
    Technical Agile & Lean Coach,
    Trainer, Blogger & Organizer of
    the PhillyXP user group.
    @asciamanna
    anthonysciamanna.com
    https://industriallogic.com/

    View Slide

  3. XP in a Nutshell
    @asciamanna
    anthonysciamanna.com
    Extreme Programming (XP) is an agile software development framework that aims to produce higher quality
    software, and higher quality of life for the development team. XP is the most specific of the agile frameworks
    regarding appropriate engineering practices for software development.
    Agile Alliance website
    • Software Development (agile) methodology based on 12-13 core
    practices and 5 values
    • Stresses customer satisfaction
    • Encourages frequent releases of high-quality code
    • Emphasizes teamwork / collaboration
    • Creates an environment enabling teams to become highly productive
    • Empowers teams – aligning authority with responsibility

    View Slide

  4. Lean and Agile Leadership
    “Don’t move information
    to authority, move
    authority to the
    information.”
    - L. David Marquet
    @asciamanna
    anthonysciamanna.com

    View Slide

  5. Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Late 1980s /
    Early 1990s
    A Very Brief History of Extreme Programming
    Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Kent Beck develops the foundations of XP during Smalltalk
    consulting projects (influenced by practices from the 60s &
    70s)
    @asciamanna
    anthonysciamanna.com

    View Slide

  6. Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Late 1980s /
    Early 1990s
    A Very Brief History of Extreme Programming
    Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Kent Beck develops the foundations of XP during Smalltalk
    consulting projects (influenced by practices from the 60s &
    70s)
    All practices come together on the C3 program with other
    Agile Manifesto co-authors (First XP Program)
    1996
    @asciamanna
    anthonysciamanna.com

    View Slide

  7. Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Late 1980s /
    Early 1990s
    A Very Brief History of Extreme Programming
    Discovered at Hunter Industries in 2011 by a team
    coached by Woody Zuill
    Kent Beck develops the foundations of XP during Smalltalk
    consulting projects (influenced by practices from the 60s &
    70s)
    All practices come together on the C3 program with other
    Agile Manifesto co-authors (First XP Program)
    1996
    Kent releases Extreme Programming Explained 1999
    @asciamanna
    anthonysciamanna.com

    View Slide

  8. The Five XP Values
    Communication
    Simplicity
    Feedback
    Courage
    Respect
    @asciamanna
    anthonysciamanna.com

    View Slide

  9. Safety & Respect
    https://ronjeffries.com/articles/2015-03-21-xp-revived/
    I created Extreme
    Programming to make the
    world safe for programmers
    again.
    - Kent Beck, author, consultant, and creator of Extreme
    Programming
    @asciamanna
    anthonysciamanna.com

    View Slide

  10. XP Practices
    @asciamanna
    anthonysciamanna.com

    View Slide

  11. XP and…
    Combining XP practices
    with Scrum or Kanban /
    Lean is common
    @asciamanna
    anthonysciamanna.com

    View Slide

  12. XP & Scrum
    @asciamanna
    anthonysciamanna.com

    View Slide

  13. Combining Scrum & XP
    I have been struck that the people who know XP through years of practice see how
    complimentary Scrum and Extreme Programming are. Both are iterative and incremental,
    both aim at improving the lives of the team members, and both focus on improving the
    quality of the product…
    People have told me that they see Scrum as the management approach to agile
    development and XP as the engineering practices that make it effective, both bonded
    together by complimentary practices and goals.
    -Ken Schwaber, Co-creator of Scrum, Are Agile Methodologies Really
    Different? For OOPSLA 2003


    http://www.coldewey.com/publikationen/conferences/oopsla2003/KenSchwaber.pdf
    @asciamanna
    anthonysciamanna.com

    View Slide

  14. Combining Scrum & XP
    @asciamanna
    anthonysciamanna.com

    View Slide

  15. Combining Scrum & XP
    https://medium.com/serious-scrum/safes-scrum-vs-scrum-according-to-the-scrum-guide-they-are-not-the-same-bea882add76d
    SAFe’s ScrumXP != Scrum + XP
    @asciamanna
    anthonysciamanna.com

    View Slide

  16. Scrum & XP Influence
    @asciamanna
    anthonysciamanna.com

    View Slide

  17. A Few Scrum & XP Influence Examples
    User Stories
    Story Points
    Planning Poker
    https://ronjeffries.com/articles/019-01ff/story-points/Index.html
    https://wingman-sw.com/articles/planning-poker
    Daily Standup
    Retrospectives
    @asciamanna
    anthonysciamanna.com

    View Slide

  18. XP Practices
    Deeper dive on a few XP Practices

    View Slide

  19. Test-Driven Development (TDD)

    View Slide

  20. TDD Cycle
    Image by Industrial Logic Senior Consultant - Tim Ottinger
    @asciamanna
    anthonysciamanna.com

    View Slide

  21. Three Laws of TDD
    (restated)
    @asciamanna
    anthonysciamanna.com

    View Slide

  22. TDD Is a Testing Practice
    @asciamanna
    anthonysciamanna.com

    View Slide

  23. I don’t care if people write tests first or last.
    As long as they get written.


    - Anonymous Tech Lead
    @asciamanna
    anthonysciamanna.com

    View Slide

  24. Benefits of TDD
    Test Suite
    Software
    Design
    Developer
    Workflow
    Externally Visible Artifacts
    @asciamanna
    anthonysciamanna.com

    View Slide

  25. Continuous Integration (CI)

    View Slide

  26. What is Continuous Integration?
    In software engineering, continuous integration (CI) is the practice of merging all
    developers' working copies to a shared mainline several times a day.
    - Wikipedia, restated from Martin Fowler’s article Continuous Integration (2006)
    https://www.martinfowler.com/articles/continuousIntegration.html
    @asciamanna
    anthonysciamanna.com

    View Slide

  27. What is NOT Continuous Integration?
    https://www.martinfowler.com/articles/continuousIntegration.html
    Feature Branching is
    not compatible with
    Continuous
    Integration
    @asciamanna
    anthonysciamanna.com

    View Slide

  28. What is NOT Continuous Integration?
    https://www.martinfowler.com/articles/continuousIntegration.html
    Having a build server &
    build pipeline is not the
    same as practicing CI/CD
    @asciamanna
    anthonysciamanna.com

    View Slide

  29. Updated TDD
    Cycle
    @asciamanna
    anthonysciamanna.com

    View Slide

  30. Pair Programming

    View Slide

  31. @asciamanna
    anthonysciamanna.com
    Pair Programming

    View Slide

  32. @asciamanna
    anthonysciamanna.com
    Pair Programming
    Ping Pong Pair
    Programming

    View Slide

  33. Pair Programming Misconception
    In software engineering, continuous integration (CI) is the practice of merging all
    developers' working copies to a shared mainline several times a day.
    - Wikipedia, restated from Martin Fowler’s article Continuous Integration (2006)
    Pair programming is two people doing the work
    of one. It can’t be more efficient than solo work.
    @asciamanna
    anthonysciamanna.com
    The Costs and Benefits of Pair Programming (2000) – Alistair Cockburn & Laurie Williams

    View Slide

  34. Typing IS NOT the
    Bottleneck!
    @asciamanna
    anthonysciamanna.com

    View Slide

  35. Feature Factories & Pair Programming
    @phillyxp
    “Two people doing the work of one?? That’s a waste of expensive resources!”
    Image courtesy of @johncutlefish
    An antiquated factory mindset where keeping developers 100%
    utilized outputting code is the goal
    @asciamanna
    anthonysciamanna.com

    View Slide

  36. Selective Pair Programming
    “Most development tasks aren’t worth pairing
    on. We only pair when it is appropriate.”
    @asciamanna
    anthonysciamanna.com

    View Slide

  37. Selective Pair Programming
    • Developers only pair in very specific situations
    • To onboard a new developer
    • When someone gets stuck
    • Effective pair programming is deceptively challenging
    • The less you do it the less useful it is to you
    Sometimes pair programming doesn't "take" -- most frequently
    when it's framed as one programmer helping out another who's
    struggling.
    -Tim Ottinger, Agile Coach and Author
    @asciamanna
    anthonysciamanna.com

    View Slide

  38. Selective Pair Programming Catch-22
    Developers think pairing
    all the time is too
    prescriptive
    Only pair for “special
    circumstances”
    Pairing occurs so
    infrequently developers
    never build pairing skills
    Without the skills to
    effectively pair developers
    fail to see its benefit in the
    day-to-day work
    @asciamanna
    anthonysciamanna.com

    View Slide

  39. Simple Design

    View Slide

  40. Kent Beck’s Four Rules of Simple Design
    In software engineering, continuous integration (CI) is the practice of merging all
    developers' working copies to a shared mainline several times a day.
    - Wikipedia, restated from Martin Fowler’s article Continuous Integration (2006)
    https://www.martinfowler.com/bliki/BeckDesignRules.html
    @asciamanna
    anthonysciamanna.com

    View Slide

  41. Is XP Dead?
    In software engineering, continuous integration (CI) is the practice of merging all
    developers' working copies to a shared mainline several times a day.
    - Wikipedia, restated from Martin Fowler’s article Continuous Integration (2006)
    @asciamanna
    anthonysciamanna.com

    View Slide

  42. The Future of XP is
    happening now!

    View Slide

  43. Modern Agile
    In software engineering, continuous integration (CI) is the practice of merging all
    developers' working copies to a shared mainline several times a day.
    - Wikipedia, restated from Martin Fowler’s article Continuous Integration (2006)
    https://modernagile.org/
    @asciamanna
    anthonysciamanna.com

    View Slide

  44. Make People Awesome
    https://modernagile.org/
    Modern Agile
    @asciamanna
    anthonysciamanna.com

    View Slide

  45. Deliver Value Continuously
    https://modernagile.org/
    Modern Agile
    @asciamanna
    anthonysciamanna.com

    View Slide

  46. Make Safety a Prerequisite
    https://modernagile.org/
    Modern Agile
    @asciamanna
    anthonysciamanna.com

    View Slide

  47. Experiment & Learn Rapidly
    https://modernagile.org/
    Modern Agile
    @asciamanna
    anthonysciamanna.com

    View Slide

  48. DevOps

    View Slide

  49. Rise of DevOps
    DevOps practices
    influenced by Lean, Agile,
    and Agile Engineering (XP)
    Practices
    @asciamanna
    anthonysciamanna.com

    View Slide

  50. @asciamanna
    anthonysciamanna.com

    View Slide

  51. Continuous Delivery /
    Continuous Deployment

    View Slide

  52. Continuous Delivery / Continuous Deployment
    Continuous Deployment &
    Continuous Delivery builds
    on the concepts of
    Continuous Integration
    @asciamanna
    anthonysciamanna.com

    View Slide

  53. TDD Foundational to CD
    Code commit
    Unit tests /
    microtests
    Integrate /
    Deliver to
    Staging
    Deploy to
    Production
    Acceptance tests
    Every commit must come with tests
    @asciamanna
    anthonysciamanna.com

    View Slide

  54. Mob / Ensemble
    Programming

    View Slide



  55. Mission Control Center, Houston, 1965
    Mob programming is a software development
    approach where the whole team works on the
    same thing, at the same time, in the same space,
    and at the same computer.
    - Woody Zuill
    @asciamanna
    anthonysciamanna.com

    View Slide

  56. Hunter Industries – Mob Programming 2012
    @asciamanna
    anthonysciamanna.com

    View Slide

  57. Hunter Industries – Mob Programming 2016
    @asciamanna
    anthonysciamanna.com

    View Slide

  58. Adoption has increased significantly since 2011
    Results of my informal twitter survey @asciamanna
    anthonysciamanna.com

    View Slide

  59. Benefits of Mob
    Programming
    https://www.flickr.com/photos/lwr/8011402187
    The benefits of Pair
    Programming amplified!
    Reduced WIP Higher Quality
    Less Handoffs Reduced Lead Times / Cycle Times
    Improved team communication & collaboration
    @asciamanna
    anthonysciamanna.com

    View Slide

  60. Individual Work Feels Faster But …
    • Increases WIP
    • Increases defects / rework
    • Increases time in meetings
    • Increases Handoffs
    • Increases non-value add activities
    Slows down the flow of work
    Work in Process Trap
    anthonysciamanna.com @asciamanna

    View Slide

  61. Watch the baton not
    the runners
    @asciamanna
    anthonysciamanna.com

    View Slide

  62. https://www.jamesshore.com/v2/books/aoad1
    Extreme Programming practices are vital for the modernization of agile software
    development teams. Essential to get to Continuous Deployment / Delivery,
    improve product delivery, software quality, and team happiness.
    @asciamanna
    anthonysciamanna.com

    View Slide

  63. https://www.meetup.com/PhillyXP
    Topics include: Modern Agile, Lean, Lean
    Software Development, Extreme
    Programming, Agile Engineering Practices,
    Experimentation, Continuous Delivery,
    DevOps, Agile Fluency, General agile concepts
    @asciamanna
    anthonysciamanna.com

    View Slide

  64. @asciamanna
    http://bit.ly/comcast-xp-2021
    anthonysciamanna.com

    View Slide