Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What we talk about when we talk about software,...

Nat Pryce
October 24, 2019

What we talk about when we talk about software, Agile Turkey Summit 2019

Programmers often use figurative metaphors to help others understand their novel designs. Research by cognitive linguists, such as George Lakoff, shows that metaphors are more fundamental to the way we think: the only way we can conceive of and communicate about abstract concepts is to relate them, by metaphor, to our physical selves. And you don't get much more abstract than software! We usually do not notice the metaphors we are using when describing software. However, careless use of metaphor can hinder how we design software, communicate about software design and organise ourselves to collaborate on software development. If we cannot avoid metaphor we must use it to our advantage and avoid its pitfalls. I'll share some of my own experiences of using metaphor in software systems and teams, both successful and unsuccessful.

Presented at the Agile Turkey Summit 2019.

Nat Pryce

October 24, 2019
Tweet

More Decks by Nat Pryce

Other Decks in Programming

Transcript

  1. What we talk about when we talk about software Evolving

    thoughts about metaphor, software & influence Nat Pryce [email protected] @natpryce github.com/npryce speakerdeck.com/npryce
  2. A layered architecture diagram Hardware Device Drivers Operating System Application

    Hardware Device Drivers Operating System Application Or? Which feels correct?
  3. Unix pipes tr -cs A-Za-z '\n' | tr A-Z a-z

    | sort | uniq -c | sort -rn | sed ${1}q
  4. “Each XP software project is guided by a single overarching

    metaphor. Sometimes the metaphor is "naive". ... Sometimes the metaphor needs a little explanation. The words used to identify technical entities should be consistently taken from the chosen metaphor.” eXtreme Programming Explained, Kent Beck, 1999 XP's system metaphor
  5. Figurative metaphor Metaphors We Live By, Lakoff and Johnson, 1980.

    “...in getting us to try to understand how it could be true, it makes possible a new understanding…”
  6. Cognitive metaphor We live ➢ in the physical world ➢

    in social groups We conceptualise anything more abstract as metaphor
  7. Example: MORE IS UP From The Guardian website, 15/05/2014: “OVO

    Energy raises prices 3%” “...soaring values have revived idea of selling part of property portfolio...” “...nation's top 10% owning 44% of household wealth...” “Ministry of justice figures show number of convictions fell by only 69...” “Labour's nosedive in the opinion polls…”
  8. Cognitive metaphor domains Up/Down, Facing towards/away Near/far Large/Small Inside/Outside, Boundary,

    Surface Extent, Covering, … Light/Heavy Bright/Dark Parent/Child, Siblings, ... ... Orientation Proximity Size Containment Surface Weight Shade Family ...
  9. A layered architecture diagram Hardware Device Drivers Operating System Application

    Hardware Device Drivers Operating System Application Or? Which feels correct?
  10. A layered architecture diagram Where would you draw the user

    interface? Hardware Device Drivers Operating System Application
  11. Mapping onto different target domains Up Down etc. More Less

    Happy Sad Pure Corrupt Abstract Concrete People Animals Controlling Controlled
  12. Vertical orientation ABSTRACT IS UP CONTROL IS UP PEOPLE IS

    UP HARDWARE IS DOWN (STATIC) DEPENDENCIES POINT DOWNWARDS ...
  13. Containment PROGRAMMING LANGUAGES ARE CONTAINERS CONTROL AT THE CENTER VULNERABLE

    IN THE CENTER “The code is written in Java” Encapsulation Leaky abstractions CPU & peripherals ...
  14. User-facing features Front-end developer Database back-end Externally facing services ...

    Orientation: facing towards something THE SYSTEM FACES THE USER THE SYSTEM FACES OTHER SYSTEMS
  15. Size Big Data “Big Iron” (mainframes) Software design diagrams could

    make better, more consistent use of size metaphors BIG IS IMPORTANT BIG IS POWERFUL
  16. How we describe a system influences how we plan to

    build it A linear metaphor led to • A development plan that implemented each business process stage in turn • An planned big-bang release of all functionality • Missed deadlines and eventual cancellation of the project Publication Payment Licensing Decision Review Reviewer invitation Quality check Manuscript Submission
  17. Metaphorical blinkers Image CC-BY-SA 2.0 Pete Markham Metaphors We Live

    By, Lakoff and Johnson, 1980. “In allowing us to focus on one aspect of a concept, a metaphorical concept can keep us from focusing on other aspects of the concept that are inconsistent with the metaphor.”
  18. Metaphors: size/strength, proximity Initially we drew components close to the

    users they serve. Then drew line thickness to show where changes will probably have to be made in both communicating services. Metaphorically: how strongly components are "pulled towards one another"
  19. Informing team (re)organisation Development teams (Green) should look after components

    that change at the same time. Product managers (Pink) should work across teams, and focus on the user journeys for specific segments of our user base.
  20. Summary ❖ Metaphor maps behaviour from one domain to another

    ❖ Metaphor can help but also hinder ❖ Figurative metaphor is technical debt ❖ Cognitive metaphor is inescapable ❖ Cognitive metaphor is understood unconsciously