holistic product development

46
Cross-Functional Teams + Emergent Design = Holistic Product Development Gary Pedretti, Erik Weber, Pradeepa Narayanaswamy, Dan Piessens

Upload: gary-pedretti

Post on 17-Jan-2015

990 views

Category:

Technology


1 download

DESCRIPTION

In the world of agile, there is theory and then there is practice. We like to talk about self-organizing teams, asynchronous execution, BDD, TDD, and emergent architecture. We also talk about cross-functional teams: how analysts, testers, architects, technical writers, and UX designers belong on the same team, right next to programmers. It all sounds nice in theory, but how does this work in reality? What do these people actually do? How do they interact? What does it look like? Is there really a pragmatic way to make this work? In this simulation, a cross-functional team will actually build a piece of software. Every specialist will have a hand in the process. Every specialist will also act as a generalist. Everyone will add value. And as a team, we’ll get something DONE. This is your opportunity to see agile development in practice, and to bridge the gap between what agilists say and what teams do. And it’s not as new or as difficult as you think – affinity between testers, BA’s, coders, and other team members has really been at the root of effective development practices all along. Let’s just finally acknowledge that it works, demonstrate its capabilities, and encourage it going forward. This IS agile development.

TRANSCRIPT

Page 1: Holistic Product Development

Cross-Functional Teams + Emergent Design = Holistic Product Development

Gary Pedretti, Erik Weber, Pradeepa Narayanaswamy, Dan Piessens

Page 2: Holistic Product Development

Who are we? Gary Pedretti• Solutions Manager in Centare’s Agile Practice• 15 years in the software industry with highly cross-functional

experience – DBA, Developer, BA, Application Architect• Scrum: Development Team member, Scrum Master, Coach,

Certified Scrum Trainer for Scrum.org• http://blog.GaryPedretti.com/ • Twitter: @GaryPedretti• http://www.linkedin.com/in/garypedretti • MCPD 4.0 Web, MCTS 4.0 WCF/Web/Data Access, MCDBA MSSQL 2000, PSM, PSD .NET, PSD Java, CSM, MCPD 3.5 ASP.NET, MCTS 3.5 WCF/ASP.NET/ADO.NET, MCTS SharePoint 2003

Infrastructure, MCPD 2.0 Enterprise, MCTS 2.0 Distributed/Web/Windows, MCSD 1.1, MCAD 1.1, MOUS

Page 3: Holistic Product Development

Who are we? Erik Weber

• Solutions Manager in Centare’s Agile Practice• Healthcare, Finance, Green Energy• Huge Conglomerates, Small Employee Owned, Fortune 500 • Scrum Coach & Trainer for Scrum.org• Passionate about Agile• Twitter: @ErikJWeber

Page 4: Holistic Product Development

Who are we? Pradeepa Narayanaswamy

• Senior Consultant in Centare’s Agile Practice• 12 years in the software industry: Programmer, Analyst, Web

Designer, Tester, QAT Lead, Agile Consultant, etc.• Extremely passionate about Agile• Specialized in Agile Testing• LinkedIn: www.linkedin.com/in/pradeepanarayanaswamy/• Twitter: @nPradeepa

Page 5: Holistic Product Development

Who are we? Dan Piessens

• Staff Consultant for Centare• Over 12 years of development experience developing and

designing software in agile teams• Microsoft Patterns & Practices Champion 2008 through 2013• Twitter: @dpiessens

Page 6: Holistic Product Development

THE VISION OF AGILE SOFTWARE DEVELOPMENT

Working Software ASAP, Cross-Functional Teams, Emergence

Page 7: Holistic Product Development

What is Agility?ag·ile \ˈa-jəl, -ˌjī(-ə)l\ adjective

• 1: marked by ready ability to move with quick easy grace <an agile dancer>

• 2: having a quick resourceful and adaptable character <an agile mind>

Synonyms: graceful, featly, feline, gracile, light, light-footed (also light-foot), lightsome, lissome (also lissom), lithe, lithesome, nimble, spry

http://www.merriam-webster.com/dictionary/agile

Page 8: Holistic Product Development

What is Agility in Software Development?

A group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.

http://en.wikipedia.org/wiki/Agile_software_development

Page 9: Holistic Product Development

Welcome to 1999!

Page 10: Holistic Product Development

The Gold Standard – Working Software ASAP

• Allows for faster feedback from real end users, and the ability to respond to that feedback

• Aligns with businesses’ concerns– They never cared about “done but not tested”– Must be able to deliver value, earn revenue, etc.

• Eliminates the “80% done” phenomenon– You’re never sure you’re done until you are done

Page 11: Holistic Product Development

Agile Manifesto• “Working software over comprehensive

documentation”

The Gold Standard – Working Software ASAP

Page 12: Holistic Product Development

The 12 Principles Behind the Manifesto• “Working software is the primary measure of

progress”• “Early and continuous delivery of valuable

software”• “Deliver working software frequently”

The Gold Standard – Working Software ASAP

Page 13: Holistic Product Development

The Gold Standard – How? Slices, Not LayersLayers = delayed value Slices = value every Sprint

© 1993 - 2013 Scrum.org, All Rights Reserved

Page 14: Holistic Product Development

What Follows? Cross-Functional Teams

• Whatever skills necessary to complete a slice• Coders and testers working together• But also: BAs, UI Designers, UX, Technical

Writers, Ops/Infrastructure, DevOps, etc. – all working together

Page 15: Holistic Product Development

Cross-Functional Teams

Agile Manifesto• Individuals and interactions over processes

and tools

Page 16: Holistic Product Development

Cross-Functional Teams

The 12 Principles Behind the Manifesto• “Business people and developers must work

together daily throughout the project.”

Page 17: Holistic Product Development

Cross-Functional Teams – How?• An attitude of optimizing for throughput (working

software), not capacity (keeping everyone busy in their specialty)

• Culture of learning and sharing – moving towards “generalizing specialists”

• Attitude: “Whatever it takes to get this done”• Group ownership of product, work, and “done”

Page 18: Holistic Product Development

What Else Follows? Emergence• Admitting that you cannot or will not have all

of the requirements up front means that you will learn things along the way

• Requirements, Architecture, UI Design, Tests, Documentation – all can emerge

Page 19: Holistic Product Development

Emergence

Agile Manifesto• “Responding to change over following a plan”

Page 20: Holistic Product Development

Emergence

The 12 Principles Behind the Manifesto• “Welcome changing requirements, even late

in development”• “The best architectures, requirements, and

designs emerge from self-organizing teams.”

Page 21: Holistic Product Development

Emergence – How?• An Iteration != Mini-Waterfall• Asynchronous execution of all development

tasks – no more sequential, phase-gated steps• Each activity is encouraged to inform the others– Testing informs coding, coding informs architecture,

analysis informs testing, etc.

Page 23: Holistic Product Development

Scrum.org PSF Course• Non Sequential execution is key• Everyone pitches in regardless of

individual skill specialty• The Development Team is held to account as a

unit

RequirementsDesignCodeTest

© 1993 - 2013 Scrum.org, All Rights Reserved

Page 24: Holistic Product Development

To Do: Validate Credit Card NumbersI want customers’ credit card numbers to be validated so that they don't have any surprises when ordering products.

• We accept MasterCard, Visa, and American Express• Should validate length of number as 15 digits • Should validate prefix of number• This validation should be reusable from other applications

Page 25: Holistic Product Development

THE TEAM DEMONSTRATION

Page 26: Holistic Product Development

Observations?

Page 27: Holistic Product Development

Observations?

• The team delivered something “done” and shippable!!!• Requirements changed – sometimes they are wrong! Gasp!• New requirements were discovered – but thin-slicing and time

pressure resulted in many of them (including the Luhn algorithm) going to the “To Do” list

• Time pressure forces people to navigate the grey areas to some reasonable middle ground– Negotiating requirements – “reusable from other applications” requirement

was negotiated away from a service, and to something that could be harvested later

– Amount of testing that is reasonable – thinking of testing as risk management

Page 28: Holistic Product Development

Observations?

Practices:• Emergent Design/Architecture• TDD• BDD Tools (sorry Liz), ATDD (SpecFlow, Gherkin)• Swarming/Pairing – pairing across specialties• Structuring for Testing Pyramid

Page 29: Holistic Product Development

This Happens Without “Role Playing”

• Two-minute video…

Page 30: Holistic Product Development

HOW ABOUT SOME “WHY?”Enough with the What and the How

Page 31: Holistic Product Development

The Gold Standard – Working Software ASAP – Why?

• Fast Feedback– Opportunity to respond– Validate assumptions, requirements, value – validate learning

• Aligns with business and fosters trust– Delivers value– Earns revenue

• Sets an expectation for a single understanding of “done”

Page 32: Holistic Product Development

Cross-Functional Teams – Why?

• It’s how we get to working software, ASAP• Systems Thinking and optimizing for

throughput, not capacity

Page 33: Holistic Product Development

Emergence – Why?• Requirements will never be– known completely– expressed well– up-to-date

• “Requirements = Assumptions” – Jeff Gothelf• We know that we will always learn things along

the way

Page 34: Holistic Product Development

Emergence – Why?• If you like predictive project plans, I have a guy

for you…

Page 35: Holistic Product Development

Winston Royce Told Us This Was Crazy in 1970!!

Managing the Development of Large Software Systems – Dr. Winston W. Royce

Page 36: Holistic Product Development

And He Told Us This Is Still “Risky and Invites Failure”!!!

Managing the Development of Large Software Systems – Dr. Winston W. Royce

Page 37: Holistic Product Development

And He Said Reality Looked More Like This

Managing the Development of Large Software Systems – Dr. Winston W. Royce

Page 39: Holistic Product Development

CALL TO ACTIONDo this today!

Page 40: Holistic Product Development

Let’s Walk It Backwards This Time

• Expect, allow, and foster Emergence• Build Cross-Functional Teams• Get Working Software ASAP

Page 41: Holistic Product Development

Expect, Allow, and Foster Emergence• Communication with the business, requirements, testing, domain

knowledge – learn about Behavior Driven Development (BDD) – Liz Keogh http://lizkeogh.com/

• Architecture and modeling - http://www.agilemodeling.com/ • User Experience (UX) – Lean UX byJeff Gothelf• Automated deployment, CD, DevOps, “Production Hygiene” – The Phoenix Projectby Gene Kim

Page 42: Holistic Product Development

Build Cross-Functional Teams• You’re not pulling people away from their boss or

department to put them in “your area”• You’re suggesting the company build teams horizontally

across departments, not vertically within departments• Focus on “Competencies, not Roles” – Jeff Gothelf• Just encourage things we already did anyway (Tester <-

> BA and Architect <-> Coder connections, etc.)

Page 43: Holistic Product Development

Build Cross-Functional Teams

…at least don’t be a Jerk

Complete Cross-FunctionalityAll GeneralistsPure Teamwork

Condescending Jerks

Page 44: Holistic Product Development

Get Working Software ASAP• Challenge yourselves – it can be done…in 30 Days or Less

• Get cross-functional training for patternsand practices

Page 45: Holistic Product Development

Get Working Software ASAP• What will the challenges be in your

organization?

• Questions?