Software Creation Communication
Download
Report
Transcript Software Creation Communication
Software Creation
Communication
Agile Principles applied to software
projects
Craft, Community, Pride, Learning, Creativity,
Communication, etc.
Efficiency
Etc., etc., etc.
Psychology
Sociology
Philosophy
Physics
Physics
Biology
Business
Computer Science
Silos of Knowledge
Agile Manifesto
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
http://agilemanifesto.org/
Authors of Agile Manifesto
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
Note: Most of this presentation is based upon the work of Alistair
Cockburn’s Agile Software Development
Is creating software…
Engineering?
Science?
Art?
Development?
Construction?
Something else?
Does it matter?
It does matter!
The way we think about anything is
constrained by
The mental frames we use
The language we use to describe it (connotations)
Frames trump facts. Frames will stay and the facts will
bounce off. -George Lakoff
Tax relief vs. tax deferment
Death tax vs. inheritance tax
Actions and results CAN differ depending on
your viewpoint!
Parsing Experience
When we experience something, we
parse it into separate, meaningful chunks
OR
?
When we parse according to one pattern
and later put the pieces back together,
we get a distorted, simplified result!
Conclusions…
Any complex shape can be parsed
according to different patterns
Our perception of “what is there”
proceeds in different directions
depending on how we separate elements
What we notice is biased by the
vocabulary we start with
Impossibility of Communication?
Information received is determined by what
happens inside the receiver, not just the
information the sender is trying to impart
Stimulus: Yell “Fire” in a crowded theater
Response A: someone hears, and exits safely
Response B: someone hears, and panics
Response C: someone is asleep, and doesn’t hear
Response D: someone doesn’t speak English, and
doesn’t understand
Impossibility of Communication?
Communication is NEVER perfect and
complete
The more a person is different from you,
the SMALLER the communication gap
he can jump
No matter how much you back it up,
there is ALWAYS someone who will not
understand.
Impossibility of Communication?
From Steve McConnell, Rapid Development
Conclusion…
We can never hope to completely specify the
requirement or the design
Experience,
Explicit Communication
Experience,
Explicit Communication
The Golden Rule: The task on a project is not
to try for complete communication, but to
manage the incompleteness
Levels of Listening
Level 1: Following
Level 2: Detaching
Need explicit procedures/instructions
Detailed manuals and documentation provide safety
RUP – Rational Unified Process
Can adapt procedures to the situation
Understands where procedures break down
The Art of Computer Programming
Level 3: Fluent
Irrelevant if following a procedure
Understands the desired end effect and will make it work
despite process or tools
The Pragmatic Programmer
Levels of Listening
The Zen of Level 3….
“Do whatever works”
“When you are really doing it, you are
unaware you are doing it”
“Use a technique so long as it is doing some
good”
To someone fluent – makes sense
To someone detaching – confusing
To someone following - useless
Conclusions…
Consider the level of your team
Is it following, detached, or fluent? Is it some
combination of the three?
The mystery is that we can’t get perfect
communication. The answer to the mystery is
that we don’t need perfect communication!
Remember the Golden Rule: manage the
incompleteness. That is, you just need to get
close enough, often enough.
Think Outside the Box
Let’s
compare software
development to…a group
writing epic poetry together!
Think Outside the Box
Who are the players?
The people who ordered the poem
Key poem designers
Began as a one person project, but the poet, in
usual fashion, promises MUCH more than she
can deliver!
So, adds other people fairly good at poetry, and
takes the role as ‘lead’ poet
Still can’t get it done, so now they get desperate
– they add friends and neighbors, beginners
NOT good at poetry!
Think Outside the Box
As more people are added, many of whom are
inexperienced, communication and coordination
becomes a HUGE problem
One person was good at descriptive passages, one
was good at the gory bits, etc.
The lead poet is now so busy coordinating and
checking, she no longer has time to write poetry!
A couple of people wrote pages and pages of material
describing the antagonists, way more than needed –
that is the part they liked writing about.
Another few people kept revising and revising, never
satisfied with their work
Think Outside the Box
As time progressed, the group got
desperate and added even MORE
people.
Communications were horrible, no one
had a current copy of the poem, and no
one knew the actual state of the poem
Conclusions…
What does this say about software
development?
Almost every project of any size has
temperamental geniuses and average or
below workers, hard requirements, and
communication pressures.
Why do we expect software development
to be any different from group epic
poetry writing?
So Then, What is Programming?
Normally thought of as…
But it is ALSO…
Solitary
Inspiration-based
Logical activity
A group engineering activity
Mathematical
A craft
A mystical act of creation
It’s creation is sensitive to tools, but its quality
is independent of tools