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.

A9a52853754fe07c3824917c9b101330?s=128

Anthony Sciamanna

June 17, 2021
Tweet

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. The Five XP Values Communication Simplicity Feedback Courage Respect @asciamanna

    anthonysciamanna.com
  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
  10. XP Practices @asciamanna anthonysciamanna.com

  11. XP and… Combining XP practices with Scrum or Kanban /

    Lean is common @asciamanna anthonysciamanna.com
  12. XP & Scrum @asciamanna anthonysciamanna.com

  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
  14. Combining Scrum & XP @asciamanna anthonysciamanna.com

  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
  16. Scrum & XP Influence @asciamanna anthonysciamanna.com

  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
  18. XP Practices Deeper dive on a few XP Practices

  19. Test-Driven Development (TDD)

  20. TDD Cycle Image by Industrial Logic Senior Consultant - Tim

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

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

  23. I don’t care if people write tests first or last.

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

    Visible Artifacts @asciamanna anthonysciamanna.com
  25. Continuous Integration (CI)

  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
  27. What is NOT Continuous Integration? https://www.martinfowler.com/articles/continuousIntegration.html Feature Branching is not

    compatible with Continuous Integration @asciamanna anthonysciamanna.com
  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
  29. Updated TDD Cycle @asciamanna anthonysciamanna.com

  30. Pair Programming

  31. @asciamanna anthonysciamanna.com Pair Programming

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

  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
  34. Typing IS NOT the Bottleneck! @asciamanna anthonysciamanna.com

  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
  36. Selective Pair Programming “Most development tasks aren’t worth pairing on.

    We only pair when it is appropriate.” @asciamanna anthonysciamanna.com
  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
  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
  39. Simple Design

  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
  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
  42. The Future of XP is happening now!

  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
  44. Make People Awesome https://modernagile.org/ Modern Agile @asciamanna anthonysciamanna.com

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

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

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

  48. DevOps

  49. Rise of DevOps DevOps practices influenced by Lean, Agile, and

    Agile Engineering (XP) Practices @asciamanna anthonysciamanna.com
  50. @asciamanna anthonysciamanna.com

  51. Continuous Delivery / Continuous Deployment

  52. Continuous Delivery / Continuous Deployment Continuous Deployment & Continuous Delivery

    builds on the concepts of Continuous Integration @asciamanna anthonysciamanna.com
  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
  54. Mob / Ensemble Programming

  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
  56. Hunter Industries – Mob Programming 2012 @asciamanna anthonysciamanna.com

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

  58. Adoption has increased significantly since 2011 Results of my informal

    twitter survey @asciamanna anthonysciamanna.com
  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
  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
  61. Watch the baton not the runners @asciamanna anthonysciamanna.com

  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
  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
  64. @asciamanna http://bit.ly/comcast-xp-2021 anthonysciamanna.com