Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

The desktop user interface

Slide 4

Slide 4 text

Block-based programming

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

“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

Slide 7

Slide 7 text

An experience with system metaphor

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Figurative metaphor is technical debt

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Figurative metaphor invokes conscious thought Cognitive metaphor shortcuts conscious thought

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Example Introducing agile development to upper management

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Reformulated as containment and facing

Slide 28

Slide 28 text

Example Informing the reorganisation of product development teams

Slide 29

Slide 29 text

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"

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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