Top Banner
©Alistair Cockburn 2010 Effective Software Effective Software Development in the 21st Development in the 21st Century: Century: The New Face of Software The New Face of Software Engineeri:ng Engineeri:ng Dr. Alistair Cockburn http://Alistair.Cockburn.us
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

Effective Software Effective Software Development in the 21st Development in the 21st Century: Century:

The New Face of Software The New Face of Software Engineeri:ngEngineeri:ng

Dr. Alistair Cockburnhttp://Alistair.Cockburn.us

Page 2: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

2

People ...

Solving a problem

Creating a solution

To an interpreter unforgiving of error

Making decisionsevery decision has economic consequences

and resources are limited.

… they don’t understand which keeps changing

Com

municating

Deciding

Inve

ntin

g Expressing ideas

in a language … they don’t understand which keeps changing… they don’t understand which keeps changing

Page 3: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

3

Craft

Cooperative Game

Knowledge Acquisition

Flow Management

Self-Awareness (Personalities)

origami courtesy of Gery Derbier

Page 4: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

4

Craft

Page 5: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

5

People learn skills in 3 stages

Shu: Learn a technique

Ha: Collect techniques

Ri: Invent / blend techniques

Page 6: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

6

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

Page 7: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

7

The International Consortium for Agile is establishing a learning roadmap for each specialty.

Page 8: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

8

Cooperative Game

Page 9: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

9

Infinite Organization SurvivalCareer Management

Competitive Cooperative

Open-ended Jazz music

Finitegoal-directed

King-of-the-hillwrestling

Poker

Tennis

Chess

Rock-ClimbingTheater

JournalismExplorationSoftware

Development

Business

Product Line Management

IT Systems

Games have positions, moves, strategies

Page 10: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

10

Three moves:InventCommunicateDecide

Two conflicting subgoals:

Deliver this systemSet up for the next game

The situations (almost) never repeat!

Page 11: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

11

C6 C20 C40 C100

D6 D20 D40 D100

E6 E20 E40 E100

L6 L20 L40 L100

Project Classification Scale:

Number of people coordinated

1 - 6 - 20 - 40 - 100

Comfort

Essentialmoneys

Life

Discretionarymoneys

Criticality

X

X X

XX

Adapt to your situation

Page 12: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

12

Richness of communication channel

Com

mun

icat

ion

Eff

ectiv

enes

s

2 people on phone

2 peopleon chat (Q

uestion-and-Answer)

2 people atwhiteboard

(Courtesy of Thoughtworks, inc.)

Face-to-face is the most effective - Try Video

Paper(No Question-Answer)

Videotape

Page 13: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

13

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)

Page 14: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

14

Flow Management

Page 15: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

15

I wish they’d decide what style they want!

Users &Sponsors

Testers

BusinessAnalysts

I wish they’d decide what

functions they want!

A decision

I wish they’d decide on the UI design

already!

I wish they’d think a bit more carefully

before coding!

Programmers

Every line of

code is a decision

UI Designers

Design = manufacturing if Inventory = Decisions!

Page 16: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

16

Users &Sponsors

UI Designers

ProgrammersTesters

BusinessAnalysts

Convert jams

Users &Sponsors

UI Designers

ProgrammersTesters

BusinessAnalysts

to continuous flow.

Reduce decisions in motion & balance the flow

Page 17: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

17

Learn from your queues and backups

Enough Users & Sponsors

Many Business Analysts

Not enough Programmers Some

Testers

Enough Users & Sponsors

UI Designer

A few Business Analysts

Lots of Programmers

Single, solitary Databasedesigner

Page 18: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

18

Knowledge Acquisition

Page 19: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

19

Delivers nearly no knowledge(or risk reduction)

Big-Bang Design is a late-learning strategy

time

Knowledge comes atthe “moment of truth”: final integration.

cost

Growth of knowledge with big-bang integration

Page 20: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

20

Development sequence indifferent (with respectto knowledge)

Delivers knowledge

(risk reduction)

We can pay to learn early in the project

time

cost

Growth of knowledge with early, continuous integration

Applies to both business ("lean startups") & technical design

Page 21: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

21

Develop for business value once risks are down

time

Knowledge growing(risk reduction)

cost

Business value growing

Reduce risks:- Business- Social - Technical - Cost / Schedule

Page 22: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

22

Trim to deliver on-time (or early)

Delay to get moreor better

Payoff = Trim-the-Tail: Deliver by value or date

Page 23: Effective Software Development in the 21st Century

©Alistair Cockburn 2010

23

Craft Professions

skills in a medium

Cooperative Game communication teamwork strategies

Knowledge Acquisitionpay-to-learntrim-the-tail

Flow Managementunvalidated decisions

= inventory,lean processes

Self-Awareness (Personalities)the people, strategies, techniques

actually used

Designing in Teams

origami courtesy of Gery Derbier