Slide 1

Slide 1 text

preparing to mess with Texas 1 …

Slide 2

Slide 2 text

Hello! I’m Mike Lehan CTO StuRents.com Software engineer @m1ke 2

Slide 3

Slide 3 text

Your Software is Mission Critical

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

“ People were noticing that there was something about these systems that had an impact on their lives. The Age of Algorithmic Anxiety, Kyle Chayka for The New Yorker 6

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Move fast and break things. Unless you are breaking stuff, you are not moving fast enough. Mark Zuckerberg

Slide 11

Slide 11 text

We are the people who build software 11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

Why “Mission Critical”? 13

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

“But I don’t build autopilots” 16

Slide 17

Slide 17 text

Our world is dominated by software Much of our ability to operate critical infrastructure depends on technology ▫ Healthcare ▫ Finance ▫ Defence ▫ Transportation 17

Slide 18

Slide 18 text

Our world is dominated by software So does our ability to conduct day to day life… ▫ Interacting with government ▫ Paying our bills ▫ Buying food ▫ Education 18

Slide 19

Slide 19 text

Our world is dominated by software … and to completely ignore it ▫ Cat gifs ▫ Social media ▫ Twenty seven different streaming services 19 ▫ More cat gifs

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

So, what’s the problem? 21 People Anxiety Loss Stress Development Mistakes made in software development Operation Errors in live usage of the software

Slide 22

Slide 22 text

“ A computer lets you make more mistakes, faster, than any invention in human history – with the possible exceptions of handguns and tequila. Mitch Ratcliffe, Technology Review April 1992 22

Slide 23

Slide 23 text

23

Slide 24

Slide 24 text

Some clarifications ▫ How we build software can have unintended negative impact ▫ Not about whether the intent of the software is good or bad 24 ▫ Grey area between badly written software, and bad business practices

Slide 25

Slide 25 text

It’s our responsibility to get this right. How do we do that? 25

Slide 26

Slide 26 text

Testing 1

Slide 27

Slide 27 text

27 The “mission critical” way FAA DO-178C (aircraft software certification) “processes (and their concrete activities) must have well defined entry and exit criteria, according to DO-178C, and a project must show that it is respecting those criteria as it performs the activities in the process”

Slide 28

Slide 28 text

“Say what you are going to do before you do it” 28

Slide 29

Slide 29 text

29 Test driven development ▫ Write a test for the expected outcome ▫ Write some code to pass the test ▫ Make the code “nicer” whilst ensuring the test still passes (refactoring) What about legacy projects?

Slide 30

Slide 30 text

30

Slide 31

Slide 31 text

31

Slide 32

Slide 32 text

32 Ways to improve coverage ▫ Collecting metrics ▫ PR targets (start out using baselines) ▫ Avoid covering brittle features ▫ … a different approach - static analysis

Slide 33

Slide 33 text

33 The “mission critical” way Astree - verification of absence of runtime error “Astree proved absence of runtime errors in A380 software in 2004, prior to maiden flight in 2005” By verifying all paths of a program, we can guarantee freedom from errors

Slide 34

Slide 34 text

34 Psalm

Slide 35

Slide 35 text

35

Slide 36

Slide 36 text

So, what’s the benefit? 36 People Can rely on software that always does the right thing Development Tests ensure code changes don’t break applications Operation Systems build trust by being more resilient

Slide 37

Slide 37 text

Design 2

Slide 38

Slide 38 text

38 The “mission critical” way (once again) FAA DO-178C (aircraft software certification) “Once an activity within a process has been defined, it is generally expected that the project respect that documented activity within its process”

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

Design shouldn’t just stop when we get to the code 41

Slide 42

Slide 42 text

“ To create a supple, knowledge- rich design calls for a versatile, shared team language, and a lively experimentation with language that seldom happens on software projects. Domain Driven Design, Eric Evans 42

Slide 43

Slide 43 text

Make the impossible, inexpressible 43

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

45

Slide 46

Slide 46 text

46

Slide 47

Slide 47 text

47

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

49

Slide 50

Slide 50 text

So, what’s the benefit? 50 People Have their needs met by software that understands them Development Good design means we know why we build what we build Operation Well designed software understands the use case

Slide 51

Slide 51 text

Time Money Diversity Management 3

Slide 52

Slide 52 text

Time Money Diversity Management 3 Time Money Diversity Management Humans

Slide 53

Slide 53 text

“ A recent study published by the AI Now Institute of New York University concluded that a “diversity disaster” has resulted in flawed AI systems that perpetuate gender and racial biases. Why Diversity In AI Is So Important, Maria Klawe for Forbes 53

Slide 54

Slide 54 text

54 Factors often beyond our control ▫ Who manages us? ▫ Who’s buying it? ▫ How will they react to it? ▫ How can we influence this?

Slide 55

Slide 55 text

55

Slide 56

Slide 56 text

56 Diverse teams ▫ Complex software is multi-faceted; and teams that build it should be as well ▫ Blind spots in development lead to flaws in design & implementation - representative teams address this ▫ The complexity and ingenuity of humans, solving problems for other humans

Slide 57

Slide 57 text

57 diverseandequal.com

Slide 58

Slide 58 text

58 Developers solve problems ▫ Using code is just one way to do it ▫ Apply software principles more broadly: ▫ Is it reproducible? ▫ Does it “work on my machine”? ▫ Have you turned it off and on again?

Slide 59

Slide 59 text

In Conclusion

Slide 60

Slide 60 text

“ Software is eating the world. Marc Andreessen, 2011 60

Slide 61

Slide 61 text

61 Our software is mission critical ▫ Testing - prioritise doing tests, even if they are imperfect ▫ Design - consider your approach, codify your solutions ▫ Humans - think about the people who use, influence and create your software ▫ Be humble - learn new ways to do things, make good plans, hold them lightly

Slide 62

Slide 62 text

62

Slide 63

Slide 63 text

“ The trouble was the familiar one: too much power, too little knowledge. The fault was mine… “Damage” by Wendell Berry 63

Slide 64

Slide 64 text

64 Thanks! Agree/disagree/ambivalent? Let me know: @m1ke joind.in/talk/d2d83