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
  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/
  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
  4. Lean and Agile Leadership “Don’t move information to authority, move

    authority to the information.” - L. David Marquet @asciamanna anthonysciamanna.com
  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
  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
  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
  8. 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
  9. XP and… Combining XP practices with Scrum or Kanban /

    Lean is common @asciamanna anthonysciamanna.com
  10. 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
  11. 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
  12. TDD Cycle Image by Industrial Logic Senior Consultant - Tim

    Ottinger @asciamanna anthonysciamanna.com
  13. I don’t care if people write tests first or last.

    As long as they get written. “ ” - Anonymous Tech Lead @asciamanna anthonysciamanna.com
  14. Benefits of TDD Test Suite Software Design Developer Workflow Externally

    Visible Artifacts @asciamanna anthonysciamanna.com
  15. 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
  16. 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
  17. 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
  18. 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
  19. Selective Pair Programming “Most development tasks aren’t worth pairing on.

    We only pair when it is appropriate.” @asciamanna anthonysciamanna.com
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. Rise of DevOps DevOps practices influenced by Lean, Agile, and

    Agile Engineering (XP) Practices @asciamanna anthonysciamanna.com
  26. Continuous Delivery / Continuous Deployment Continuous Deployment & Continuous Delivery

    builds on the concepts of Continuous Integration @asciamanna anthonysciamanna.com
  27. 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
  28. “ ” 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
  29. Adoption has increased significantly since 2011 Results of my informal

    twitter survey @asciamanna anthonysciamanna.com
  30. 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
  31. 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
  32. 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
  33. 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