Pro Yearly is on sale from $80 to $50! »

What we talk about when we talk about software

What we talk about when we talk about software

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 metaphor on software projects, both successful and unsuccessful.

Presented at NewCrafts 2018, Paris.

Video here: http://videos.ncrafts.io/video/275530146

5358df52bd2ef4f57da1b1cc8634cfd9?s=128

Nat Pryce

May 18, 2018
Tweet

Transcript

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

    thoughts about metaphor, technical debt & Conway's law Nat Pryce nat@natpryce.com @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 right?
  3. The desktop user interface

  4. Metaphor stretched ad absurdum

  5. Block-based programming Image CC-BY-SA 2.0 Wikipedia user Infofiltrage

  6. Unix pipes tr -cs A-Za-z '\n' | tr A-Z a-z

    | sort | uniq -c | sort -rn | sed ${1}q
  7. “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
  8. An experience with system metaphor

  9. In software, metaphor maps not just names but affordances from

    the familiar to the unfamiliar
  10. None
  11. 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…”
  12. Figurative metaphor has a sell-by date iOS 6 iOS 7

  13. Idioms: metaphors that have kicked the bucket Figurative metaphors can

    become common phrases in language When we forget the original meaning of the phrase, it loses its explanatory power. The phrase fossilises as an idiom
  14. Technical idioms Library Patch Log

  15. Figurative metaphor is technical debt

  16. Cognitive metaphor We live ➢ in the physical world ➢

    in social groups We conceptualise anything more abstract as metaphor
  17. 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…”
  18. Cognitive metaphor domains Up/Down, Close/Far, Facing towards/away Large/Small Inside/Outside, Boundary,

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

    Hardware Device Drivers Operating System Application Or? Which feels right?
  20. Where do you draw the user interface? Hardware Device Drivers

    Operating System Application User Interface
  21. Mapping onto different target domains Up Down etc. More Less

    Happy Sad Pure Corrupt Abstract Concrete People Animals Controlling Controlled
  22. Vertical orientation in UML Or? Shape Circle Rectangle Shape Circle

    Rectangle Which feels right?
  23. Vertical orientation ABSTRACT IS UP CONTROL IS UP PEOPLE IS

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

    IN THE CENTER “The code is written in Java” Encapsulation Leaky abstractions CPU & peripherals ...
  25. 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
  26. Size Big Data “Big Iron” (mainframes) Software design diagrams could

    make better use of BIG IS IMPORTANT BIG IS IMPORTANT BIG IS POWERFUL
  27. Example: size related to importance https://en.wikipedia.org/wiki/Sociogram

  28. Entailment and coherence Read: “Following the report, shares in XYZ

    Plc took a nosedive and were in freefall by close of trading.” Think: “I should bail out of my investment in XYZ Plc. before the stock hits rock bottom.”
  29. Database ORM Domain Model UI Or? Database ORM Domain Model

    UI Which feels right? Inadvertent entailment: layers, balance, size
  30. 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.”
  31. How we describe a system affects how we plan to

    build it Linear metaphor led to linear development and a big-bang release of all functionality Publication Payment Licensing Decision Review Reviewer invitation Quality check Manuscript Submission
  32. An alternative depiction Reformulate the solution in terms of containment

    & facing
  33. Conway's Law Any organization that designs a system (defined broadly)

    will produce a design whose structure is a copy of the organization's communication structure. – Melvin Conway
  34. Conway's Law rephrased If you have four groups working on

    a compiler, you'll get a four-pass compiler. – Eric S. Raymond
  35. Conway's Law rephrased If you have four groups working on

    a compiler, you'll get a four-pass compiler. – Eric S. Raymond
  36. Conway's Law rephrased If you have four groups working on

    a compiler, you'll get a four-pass compiler. – Eric S. Raymond
  37. Conway's Law rephrased If you have four groups working on

    a compiler, you'll get a four-pass compiler. – Eric S. Raymond A metaphor
  38. Metaphor precedes Conway's Law

  39. Summary ❖ Metaphor maps behaviour from one domain to another

    ❖ Metaphor helps and hinders ❖ Figurative metaphor is technical debt ❖ Cognitive metaphor is inescapable ❖ Metaphor precedes Conway's Law