Share
Embed
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
Transcript
64 slides
-
Extreme Programming Past, Present, and Future June 18, 2021 Anthony
Sciamanna Senior Consultant Industrial Logic -
• 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/ -
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 -
Lean and Agile Leadership “Don’t move information to authority, move
authority to the information.” - L. David Marquet @asciamanna anthonysciamanna.com -
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 -
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 -
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 -
The Five XP Values Communication Simplicity Feedback Courage Respect @asciamanna
anthonysciamanna.com -
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 -
XP and… Combining XP practices with Scrum or Kanban /
Lean is common @asciamanna anthonysciamanna.com -
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 -
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 -
TDD Cycle Image by Industrial Logic Senior Consultant - Tim
Ottinger @asciamanna anthonysciamanna.com -
I don’t care if people write tests first or last.
As long as they get written. “ ” - Anonymous Tech Lead @asciamanna anthonysciamanna.com -
Benefits of TDD Test Suite Software Design Developer Workflow Externally
Visible Artifacts @asciamanna anthonysciamanna.com -
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 -
What is NOT Continuous Integration? https://www.martinfowler.com/articles/continuousIntegration.html Feature Branching is not
compatible with Continuous Integration @asciamanna anthonysciamanna.com -
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 -
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 -
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 -
Selective Pair Programming “Most development tasks aren’t worth pairing on.
We only pair when it is appropriate.” @asciamanna anthonysciamanna.com -
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 -
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 -
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 -
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 -
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 -
Rise of DevOps DevOps practices influenced by Lean, Agile, and
Agile Engineering (XP) Practices @asciamanna anthonysciamanna.com -
Continuous Delivery / Continuous Deployment Continuous Deployment & Continuous Delivery
builds on the concepts of Continuous Integration @asciamanna anthonysciamanna.com -
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 -
“ ” 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 -
Adoption has increased significantly since 2011 Results of my informal
twitter survey @asciamanna anthonysciamanna.com -
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 -
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 -
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 -
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