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

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

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

    View full-size slide

  2. A layered architecture diagram
    Hardware
    Device Drivers
    Operating System
    Application Hardware
    Device Drivers
    Operating System
    Application
    Or?
    Which feels correct?

    View full-size slide

  3. The desktop user interface

    View full-size slide

  4. Block-based programming

    View full-size slide

  5. Unix pipes
    tr -cs A-Za-z '\n' |
    tr A-Z a-z |
    sort |
    uniq -c |
    sort -rn |
    sed ${1}q

    View full-size slide

  6. “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

    View full-size slide

  7. An experience with system metaphor

    View full-size slide

  8. In software, metaphor maps
    not just terms but affordances
    from the familiar to the unfamiliar

    View full-size slide

  9. 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…”

    View full-size slide

  10. Figurative metaphor has a sell-by date
    iOS 6 iOS 7

    View full-size slide

  11. Figurative metaphor is
    technical debt

    View full-size slide

  12. Cognitive metaphor
    We live
    ➢ in the physical world
    ➢ in social groups
    We conceptualise anything
    more abstract as metaphor

    View full-size slide

  13. 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…”

    View full-size slide

  14. 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
    ...

    View full-size slide

  15. A layered architecture diagram
    Hardware
    Device Drivers
    Operating System
    Application Hardware
    Device Drivers
    Operating System
    Application
    Or?
    Which feels correct?

    View full-size slide

  16. Figurative metaphor invokes conscious thought
    Cognitive metaphor shortcuts conscious thought

    View full-size slide

  17. A layered architecture diagram
    Where would you draw the user interface?
    Hardware
    Device Drivers
    Operating System
    Application

    View full-size slide

  18. Did I predict your answer?
    Hardware
    Device Drivers
    Operating System
    Application
    User Interface

    View full-size slide

  19. Mapping onto different target domains
    Up
    Down
    etc.
    More
    Less
    Happy
    Sad
    Pure
    Corrupt
    Abstract
    Concrete
    People
    Animals
    Controlling
    Controlled

    View full-size slide

  20. Vertical orientation
    ABSTRACT IS UP
    CONTROL IS UP
    PEOPLE IS UP
    HARDWARE IS DOWN
    (STATIC) DEPENDENCIES POINT
    DOWNWARDS
    ...

    View full-size slide

  21. Containment
    PROGRAMMING LANGUAGES ARE CONTAINERS
    CONTROL AT THE CENTER
    VULNERABLE IN THE CENTER
    “The code is written in Java”
    Encapsulation
    Leaky abstractions
    CPU & peripherals
    ...

    View full-size slide

  22. 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

    View full-size slide

  23. Size
    Big Data
    “Big Iron” (mainframes)
    Software design diagrams
    could make better, more
    consistent use of size
    metaphors
    BIG IS IMPORTANT
    BIG IS POWERFUL

    View full-size slide

  24. Example
    Introducing agile development to upper
    management

    View full-size slide

  25. 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

    View full-size slide

  26. 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.”

    View full-size slide

  27. Reformulated as containment and facing

    View full-size slide

  28. Example
    Informing the reorganisation of product
    development teams

    View full-size slide

  29. 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"

    View full-size slide

  30. 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.

    View full-size slide

  31. 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

    View full-size slide

  32. https://www.mendeley.com/community/sw-metaphor

    View full-size slide