Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

• 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/

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

XP Practices @asciamanna anthonysciamanna.com

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

XP & Scrum @asciamanna anthonysciamanna.com

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Combining Scrum & XP @asciamanna anthonysciamanna.com

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Scrum & XP Influence @asciamanna anthonysciamanna.com

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

XP Practices Deeper dive on a few XP Practices

Slide 19

Slide 19 text

Test-Driven Development (TDD)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

TDD Is a Testing Practice @asciamanna anthonysciamanna.com

Slide 23

Slide 23 text

I don’t care if people write tests first or last. As long as they get written. “ ” - Anonymous Tech Lead @asciamanna anthonysciamanna.com

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Continuous Integration (CI)

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Updated TDD Cycle @asciamanna anthonysciamanna.com

Slide 30

Slide 30 text

Pair Programming

Slide 31

Slide 31 text

@asciamanna anthonysciamanna.com Pair Programming

Slide 32

Slide 32 text

@asciamanna anthonysciamanna.com Pair Programming Ping Pong Pair Programming

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Typing IS NOT the Bottleneck! @asciamanna anthonysciamanna.com

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Simple Design

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

The Future of XP is happening now!

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

DevOps

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

@asciamanna anthonysciamanna.com

Slide 51

Slide 51 text

Continuous Delivery / Continuous Deployment

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

Mob / Ensemble Programming

Slide 55

Slide 55 text

“ ” 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

Slide 56

Slide 56 text

Hunter Industries – Mob Programming 2012 @asciamanna anthonysciamanna.com

Slide 57

Slide 57 text

Hunter Industries – Mob Programming 2016 @asciamanna anthonysciamanna.com

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Watch the baton not the runners @asciamanna anthonysciamanna.com

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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