Download presentation
Presentation is loading. Please wait.
Published byJoanna Burns Modified over 5 years ago
1
Hard-Agile Effective Software Development in the 21st Century
“Agile is for wimps” Hard-Agile Effective Software Development in the 21st Century Alistair Cockburn
2
Developing software. consists of People. making Ideas concrete
Developing software consists of People making Ideas concrete in an Economic context
3
inventing, deciding, communicating,
People inventing, deciding, communicating, Solving a problem they don't yet understand which keeps changing Creating a solution they don't yet understand Expressing ideas in languages they don’t understand which keep changing To an interpreter unforgiving of error Making decisions with limited resources and every choice has economic consequences
4
Software development is a Cooperative Game
5
Games have positions, moves, strategies
Career Management Infinite Organization Survival Product Line Management Open-ended King-of-the-hill wrestling Poker Jazz music IT Systems Finite goal-directed Rock-Climbing Theater Journalism Exploration Software Development Swamp game Tennis Chess Competitive Cooperative
6
Two conflicting subgoals:
Deliver this software Set up for the next game Three moves: Invent Communicate Decide and the situations (almost) never repeat!
7
Adapt to your situation
C6 C20 C40 C100 D6 D20 D40 D100 E6 E20 E40 E100 L6 L20 L40 L100 Project Classification Scale: Comfort Essential moneys Life Discretionary Criticality X X Number of people coordinated 1 - 6 - 20 - 40 - 100
8
Face-to-face is the most effective - Try Video
2 people at whiteboard (Courtesy of Thoughtworks, inc.) 2 people on phone (No Question-Answer) Communication Effectiveness Videotape (Question-and-Answer) 2 people on chat Paper Richness of communication channel
9
Distance is expensive 12 people: = $100,000 / yr penalty Kim
Pat Programming in pairs Kim Pat 12 people: = $100,000 / yr penalty 12 people = $300,000 / yr penalty Kim Pat “Managing the Flow of Technology” “Distance Matters”
10
People issues determine a project’s speed
Can they easily detect something needs attention? (Good at Looking Around) Will they care enough to do something about it? (Pride-in-work; Amicability) Can they effectively pass along the information? (Proximity; face-to-face)
11
Software development is a Craft
12
Craft teaches us to pay attention to our skills and to the medium
Major crafts: 1 Deciding what to build 2 Managing (people and projects) 3 Modeling 4 Designing the external view 5 Large-scale design (architecting) 6 Fine-scale design (programming) 7 Validating the work
13
People learn skills in 3 stages
Shu: Learn a technique Ha: Collect techniques Ri: Invent / blend techniques
14
Use Lean Processes
15
Software = manufacturing if Inventory = Decisions!
I wish they’d decide what style they want! I wish they’d decide on the UI design already! A decision UI Designers Every line of code is a decision Users & Sponsors I wish they’d decide what functions they want! Programmers I wish they’d think a bit more carefully before coding! Business Analysts Testers
16
You can (almost) do away with one loop: buggy code
Programmers Testers (from Stefan Roock’s )
17
From Lean Manufacturing: watch your queues
Enough Users & Sponsors UI Designer A few Business Analysts Lots of Programmers Single, solitary Database designer Enough Users & Sponsors Many Business Analysts Not enough Programmers Some Testers Users & Sponsors absent UI Designers Business Analysts some Programmers Database designers Tester
18
From Lean Manufacturing: aim for continuous flow
# of design decisions Testers 100 lines of code show up for testing How long this line of code / screen / use case / decision sits in the testing queue Decisions arriving Decisions being validated or broken time
19
Design is Knowledge Acquisition
20
Waterfall is a late-learning strategy
Growth of knowledge with big-bang integration cost Knowledge comes at the “moment of truth”: final integration. Delivers nearly no knowledge (or risk reduction) time
21
We can pay to learn early in the project
Growth of knowledge with early, continuous integration Delivers knowledge (risk reduction) Development sequence indifferent (with respect to knowledge) cost time
22
Develop for business value once risks are down
Business value growing Knowledge growing (risk reduction) cost Growth of business value time
23
“Trim the Tail”: Deliver by value or date
Trim to deliver on-time (or early) Delay to get more or better
24
In the 21st century, software engineering will use craft, cooperative game & lean principles
Craft developing skills in a medium shu - ha - ri Cooperative game of invention and communication teamwork, communication, strategies Lean processes (“unvalidated decisions = inventory”) small queues, cross-trained people, varyied processes Design as knowledge acquisition early integration pay to learn trim the tail
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.