MetaphorsWeProgramBy

From SPA Wiki

Jump to: navigation, search

In this session, we explored the use of metaphor in software development and related practices. A longer description of the intent and process used can be found on the session description page 1. The contents and process of the workshop are founded on a focus group run at EuroPLoP 2006 2.

MetaphorsWeProgramBy2.jpg

Status: This page currently (June 2007) contains about all of the raw outputs of the session.


Contents

Sheets from groups:

Software project as a ship:

  • "Your oil tanker of a waterfall project cannot change course easily"
  • "your coracle of an agile project is spinning around getting nowhere"

Toilet cleaner <-> sanitation engineer


A metaphor works when it supports my argument at the expense of yours

A metaphor stops working when it becomes a job title

A metaphor doesn't work when it locks you in and limits your thinking


Metaphor context & purpose - focus -

Orchestra pace, discipline, rhythm

Antartic hard project, heroic connotations, team must be right and commited

Film production collaboration, driven by shared vision (storyboard), many roles


Graph of metaphor purpose vs audience

MetaphorsWeProgramBy1.gif


Cards from groups:

Software development as film production

   Pink cards

Sequel (version 2) Costume (user interfaces) Supporting actors (dev team, infrastructure team) Movie star (prima donna, essential but need careful management) Visual effects (components, performance) Storyboard (use case, scenario, model) Pre-screen trial viewing (beta) Release date/premier Producer (stakeholder, sponsor) Film editor (Release/?? Processes) Director (technical lead)

   Notes
       This is expounded by Allan Cooper in 'The Inmates Are Running the Asylum"
       or "About Face" (can't remember which one. This seems to fit well with the
       rhythm of the software development cycle but is not widely used.

Software team as antartic explorers

   Pink cards

Provisions (specialised, must be carried) Icebergs on the way (Hard to even get to the start) On your own (Guerilla, skunkworks, SWAT) Specialised equipment: crampons, sledges Long periods of darkness (!) (changing requirements) South pole vs south magnetic pole (difficult navigation, unclear goals) Self preservation (cost of) (can't worry about others) Poor visibility (hard to see where you are, difficult to plan) Lack of women Strong leader essential (or no progress & freeze to death) Difficult terrain/environment (easy to get lost, high cost of errors) Eat huskies Small team size (can't do logistics for large team) Reliability of equipment (vs huskies) Physically fit (must be experienced, high failure rate for ???)

Software teams as an orchestra (take 1)

   Pink cards

Conductor (project manager) Players - specialists (SQL, Java guy, JavaScript guy, opers??) Audience (customer) Soloist(s) (consultant) Staves and notes (notation) Arrangement (score for a performance) Musical score (expressed in notation) Critics/reviewer (auditors/regulators) Performance hall (makes the money out of the performance) Performance (execution) Lead violinist (chief programmer)

Software teams as orchestras (take 2)

   Blue/green cards
       Specialization (some loud, some soft, some high, some low)
       Anonimity (badly paid)
       Players work their way up the 'desks' in their section, promoted
          to front desk eventually
       Concert hall (acoustics)
       Require large amounts of arts funding because not profitable
       Requires mathematical skill - counting
       Appropriate tools well-maintained
       Tuning up before a performance
       Multi-skilled percussionists can play many instruments
       Team organized into sections in which everyone has the same speciality
       Most players have a very limited scope for improvisation and
          creative input
       Frequent practise for less frequent, high-pressure (delivery)
          performance
       Playing out of tune
       "Soloist" who "monopolises" the concert
       The "users" have to remain silent until the end of the performance
       Aiming for perfection
       Conductor (who gives the illusion of being in charge)
       Continual practice of basic skills
   Pink cards
       Orchestras have skilled players - software developers are
           often incompetent
       Is the performance the software product or the development process?

Software teams as orchestras (take 3)

   Blue/green cards
       The whole is greater than the sum of the parts, emergent behaviour
       Everyone owns their instrument
       Co-location
       Travel
       Tickets
       Conductor
       Working in a different place every day
       Audience
       Individual practice
       Rehersal
       Score/music
       Ranking, e.g. 1st violin
       Mix of sitting and standing for work
       Moving instruments (in vans or on planes)
       Concert hall
       Manager
       Specialisms
       Baton
       Different lengths of involvement (in a concert or for a run of concerts)
       Tuning
       Rehersal space
       Temprament
       Artistic
       Programme
       Range/variety of instruments
       Set layout
       Dress code
       Interaction
   Pink cards


Software system as a ship

   Blue/green cards
       Sailors (developers) never get sea sick no matter how rough it is
       Users as passengers - can get (sea) sick of the system
       Heavy loads but slow
       Takes a very long time to stop or change direction
  1. 0 ft. wave (bad timing)
       Different kinds of ships/boats - tanker, speed boat, passenger liner,
          custom built or off-the-shelf
       Captain in charge of everyone in the ship
       Small problems can be fixed at sea - big problems require repairs
           at port ... or you sink
       Life jackets
       Plotting course
       Work to a schedule, weather disrupts
       Distress signals S.O.S
       Ships use 'pilots' to get started or to manouver in difficult areas
       Regular preventative maintenance
   Pink cards
       Sinking is usually permanent

Software development as politics

   Blue/green cards
       Prime minister has responsibility (& power?)
       Spin doctors manipulate reporting of what is going on
       Complete changes of direction following elections
       Dictatorship - socialist planning and control vs
           anarchy - little control over the process
       Select committees with focused responsibilities and expertise
       Checks and balances - executive, legislative, judiciary
       Cabinet - each in charge of a ministry
       Competing political systems
       Law making
       Prime minister's question time
       Budget cycle departments
       Back benchers
       Whips - tell people what to do - what opinion to have
           (enterprise architects)
       Scandal, public eye, media
   Pink cards
       Parliament seldom refactors the laws

Software project as a journey

   Blue/green cards
       Planning
       Tourism vs work (working on project fun or a chore)
       Purpose
       Velocity
       Destination (completed project)
       bookings/tickets (things to organise before start of project)
       connections
       synchronisation (project management: a number of tasks being carefully synchronised)
       timetables (project plan)
       movement
       mode of travel
       starting point (requirements)
       refreshments
       cost
       companions (project team)
       strangers
       discovery (the unexpected)
       accommodation (office space)
   Pink cards
       Good journeys
       bad journeys

Software development as gardening

   Green cards
       Nurturing (mentoring and coaching)
       Silage
       Compost (turning debris into something useful - "leftovers" from one project used
           elsewhere, e.g. code/tools/ideas)
       Moving plants to improve them
       Organic (grow the team in-situ)
       Staking and tying
       Journal (software documentation)
       Irrigation (preparing the garden or environment for gardening)
       Tending (team management, (code) review)
   Pink cards
       Gardening can be considered a chore
       Gardens are only suitable (thrive in) some environments

Software development as gardening (take 2)

   Green cards
       Weeding (remove bad practices, remove bad people?)
       Feeding (on the job training, paying/rewarding staff)
       Greenhouses/cloche (nurturing talent, hot-housing talent, speeding up development by
           improving the environment)
       Harvesting and picking (outputs)
       Propagating %2b sewing (introduce new people, introduce new ideas)
       Lawn mowing (straightforward, easy stuff)
       Designing
       Growing (software developing from beginning to end, project lifecycle)
       Killing plants (stifling ideas/innovation, bad code/broken build/failed test)
       Pruning (refactoring code, ...top heavy teams to encourage productivity / new growth)
   Pink cards
       Does this have a place?
       Is the garden the system or the team?

Other thoughts

   Software development as a cavalry charge
   Bad project as a train wreck
   Bad project as a death march
   Software development as civil engineering x 2
   Software development as film production
   Classes and objects as animals
   Software development team as a sports team, e.g. football x 3
   Program as a building
   Migration: biplane -> 747
   Operating systems as onions
   Stacks/layering
   Stacks/queues
   Software development as architecture/building
   Software development as archaeology
   Execution environment as a platform
   Software as a culture
   Requirements as mutual education (AL: I like this one)
   Software as a deliverable
   Software as a piece of music or poetry
   Software as art
   Software dvelopment toolbox
   Web sites as locations
   Software evolution
   Software as an aeroplane
   Software development as mining
   Software development as authoring
   Software education
   Software as a terrorist network (!)
   Computer virus/worms/vaccine

Concluding thoughts from groups (three or so words)
  • Useful with pitfalls
  • Powerful and dangerous
  • Useful to communicate complex ideas
  • Difficult to perfect
  • Tool for thinking
  • Illuminating misleading
  • Fun and thought provoking
  • Though provoking - so what
  • Often needs explaining
  • Bear in mind
  • Use more carefully
  • Hard to avoid

Other random notes

Stale metaphor - bootstrap, OK to break down

3 stories at different levels - build round this


Participants