Slide 1

Slide 1 text

How to put your Docker image on a diet Peter Fisher BSC MBCS Host of the How To Code Well channel Author of Docker In Motion Freelance web & mobile applications developer youtube.com/howtocodewell 40% off code dockphpsc From Manning Publications Software Complexities

Slide 2

Slide 2 text

Software Complexities Peter Fisher BSC MBCS Software Complexities

Slide 3

Slide 3 text

Peter Fisher BSC MBCS Software Complexities Try and answer why Ask who/what is to blame The key to simplicity

Slide 4

Slide 4 text

Peter Fisher BSC MBCS Software Complexities The Developer The Client The End User Who/what is to blame The Technology

Slide 5

Slide 5 text

Peter Fisher BSC MBCS Software Complexities The Developer The Client The End User Who/what is to blame The Technology BLAME ALL THE THINGS

Slide 6

Slide 6 text

Peter Fisher BSC MBCS Software Complexities Why is software development complex?

Slide 7

Slide 7 text

Peter Fisher BSC MBCS Software Complexities Software is invisible Software cannot be visualised

Slide 8

Slide 8 text

Peter Fisher BSC MBCS Software Complexities Software is constantly changing

Slide 9

Slide 9 text

Peter Fisher BSC MBCS Software Complexities Why is complexity so bad?

Slide 10

Slide 10 text

Peter Fisher BSC MBCS Software Complexities Complexity leads to Communication issues Product flaws, cost and delays

Slide 11

Slide 11 text

Peter Fisher BSC MBCS Software Complexities Complexity leads to Difficulty enumerating Less understanding of the possible states

Slide 12

Slide 12 text

Peter Fisher BSC MBCS Software Complexities Complexity leads to Ugly code Hard to integrate, maintain and extend

Slide 13

Slide 13 text

Peter Fisher BSC MBCS Software Complexities Complexity leads to The unknown Security breaches, re writes and over abstraction

Slide 14

Slide 14 text

Peter Fisher BSC MBCS Software Complexities Complexity leads to Fickle business decisions Loss of data integrity, high barrier of entry and increased personnel turnover

Slide 15

Slide 15 text

Peter Fisher BSC MBCS Software Complexities Complexity is the most common difficulty but not all complexity is inevitable

Slide 16

Slide 16 text

Peter Fisher BSC MBCS Software Complexities The Mythical Man-Month No Silver Bullet Frederick P Brooks Jr

Slide 17

Slide 17 text

Peter Fisher BSC MBCS Software Complexities Essential complexity Vs Accidental complexity

Slide 18

Slide 18 text

Peter Fisher BSC MBCS Software Complexities Essential complexity

Slide 19

Slide 19 text

Peter Fisher BSC MBCS Software Complexities Nice to haves are only nice if they enhance the core functionality

Slide 20

Slide 20 text

Peter Fisher BSC MBCS Software Complexities Write down your essential features Include a justification for each essential feature Will 80% of the system function without the essential feature? - If so then it isn’t essential!

Slide 21

Slide 21 text

Peter Fisher BSC MBCS Software Complexities Every time a feature is added the level of complexity is increased across the entire development life cycle of the project

Slide 22

Slide 22 text

Peter Fisher BSC MBCS Software Complexities - Testing (code level, UAT, Load, Integration etc..) - Documentation - Training - Designing - Development - Maintenance Features require

Slide 23

Slide 23 text

Peter Fisher BSC MBCS Software Complexities Have a meeting every time a essential feature is added

Slide 24

Slide 24 text

Peter Fisher BSC MBCS Software Complexities Celebrate every time a essential feature is removed

Slide 25

Slide 25 text

Peter Fisher BSC MBCS Software Complexities Menu A has 100 options Menu B has 15 options Which one is more complicated to the customer, waiter and chef?

Slide 26

Slide 26 text

Peter Fisher BSC MBCS Software Complexities How many essential features do you think Twitter has?

Slide 27

Slide 27 text

Peter Fisher BSC MBCS Software Complexities If you are starting a project from scratch then ONLY the essential features should be included in the first release

Slide 28

Slide 28 text

Peter Fisher BSC MBCS Software Complexities Accidental complexity

Slide 29

Slide 29 text

Peter Fisher BSC MBCS Software Complexities Steaming pile of source code Box fresh shiny toy - Magpie like New Project Legacy Project

Slide 30

Slide 30 text

Peter Fisher BSC MBCS Software Complexities New Project - You make ALL the accidents - High risk of over generalising the requirements - Keep It Simple Stupid

Slide 31

Slide 31 text

Peter Fisher BSC MBCS Software Complexities - If you can, try to Decouple, Downsize and Defuse the complexity from the wider system - “If it isn’t broke don’t fix it” This doesn’t make sense in software development Legacy Project

Slide 32

Slide 32 text

Peter Fisher BSC MBCS Software Complexities Accident + Time = Steaming Pile Of Source Code A + T = S + =

Slide 33

Slide 33 text

Peter Fisher BSC MBCS Software Complexities The keys to simplicity

Slide 34

Slide 34 text

Peter Fisher BSC MBCS Software Complexities Brooks, F., 1995. The Mythical Man-Month: Essays on Software Engineering. 2nd ed. University of North Carolina at Chapel Hill: Addison-Wesley. “Software entities are more complex for their size than perhaps any other human construct, because no two parts are alike”

Slide 35

Slide 35 text

Peter Fisher BSC MBCS Software Complexities Don’t Repeat Yourself Don’t Over Abstract Don’t Over Generalise

Slide 36

Slide 36 text

Peter Fisher BSC MBCS Software Complexities Code that glues two systems together is often easier to write and maintain compared to writing a monolith from scratch

Slide 37

Slide 37 text

Peter Fisher BSC MBCS Software Complexities Buy versus build

Slide 38

Slide 38 text

Peter Fisher BSC MBCS Software Complexities Software should be grown not built

Slide 39

Slide 39 text

Peter Fisher BSC MBCS Software Complexities Brooks, F., 1995. The Mythical Man-Month: Essays on Software Engineering. 2nd ed. University of North Carolina at Chapel Hill: Addison-Wesley. “We still make syntax errors, to be sure; but they are fuzz compared to the conceptual errors in most systems. If this is true, building software will always be hard. There is inherently no silver bullet.”

Slide 40

Slide 40 text

Peter Fisher BSC MBCS Software Complexities Getting simplicity right is complicated

Slide 41

Slide 41 text

Peter Fisher BSC MBCS Software Complexities Thank you. give feedback https://joind.in/talk/4503f