Slide 1

Slide 1 text

LEGACY ALREADY Better Software Firenze, 11 Nov 2013 @arkh4m ~ @mat_jack1 YOUR PROJECT IS (YOU JUST DON’T KNOW IT YET)

Slide 2

Slide 2 text

WE ARE JU & MATTEO. WE ARE HAPPY SOFTWARE ENGINEERS, WORKING AT WELAIKA & CANTIERE CREATIVO HELLO

Slide 3

Slide 3 text

LET’S TALK ABOUT LEGACY {

Slide 4

Slide 4 text

A gift by will, especially of money or other personal property Legacy, noun

Slide 5

Slide 5 text

Heritage | Eredità

Slide 6

Slide 6 text

A software which is no longer mantained or supported Legacy Software

Slide 7

Slide 7 text

Nightmare | Incubo

Slide 8

Slide 8 text

DEVELOPERS HATE LEGACY We’re no exception.

Slide 9

Slide 9 text

UNCLEAR JUST STUPID A BIG BALL OF MUD

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

THE OLD CODE IS A MESS, WE NEED TO REWRITE IT “ ”

Slide 12

Slide 12 text

LOVE TO WRITE NEW CODE HATE TO READ CODE WHY SO? Developers…

Slide 13

Slide 13 text

IT’S HARDER TO READ CODE THAN TO WRITE IT The Fundamental Law of Software — Joel Spolsky

Slide 14

Slide 14 text

IT’S MUCH HARDER TO LISTEN THAN IT IS TO SPEAK The Fundamental Law of Life

Slide 15

Slide 15 text

THE OLD CODE IS A MESS, WE NEED TO REWRITE IT “ ”

Slide 16

Slide 16 text

OLD SUCKS “ ”

Slide 17

Slide 17 text

CODE DOESN’T RUST

Slide 18

Slide 18 text

LEGACY IS GOOD

Slide 19

Slide 19 text

HAS BEEN USED HAS BEEN TESTED BUGS WERE FOUND AND FIXED Legacy Code

Slide 20

Slide 20 text

SOFTWARE IS USEFUL WHEN IT SOLVES PROBLEMS The Value of Software

Slide 21

Slide 21 text

WHEN SOFTWARE IS USED AND IT WORKS, IT IS GOOD Good Software

Slide 22

Slide 22 text

IN TIME, GOOD SOFTWARE CAN BECOME LEGACY

Slide 23

Slide 23 text

BAD SOFTWARE JUST DIES

Slide 24

Slide 24 text

LET’S HOPE OUR PROJECTS WILL BE “LEGACY” ONE DAY

Slide 25

Slide 25 text

SO LEGACY IS COOL?

Slide 26

Slide 26 text

NOT REALLY.

Slide 27

Slide 27 text

SOFTWARE IS VALUABLE WHEN IT IS EASY TO CHANGE The Value of Software, Part II — Robert Martin

Slide 28

Slide 28 text

LEGACY SOFTWARE IS HORRIBLY HARD TO CHANGE

Slide 29

Slide 29 text

A LEGACY TALE {

Slide 30

Slide 30 text

You are managing a healthy project, along with a seasoned developer.

Slide 31

Slide 31 text

You are managing a healthy project, along with a seasoned developer. You fully embraced the Agile Way™ with standup sessions, sprint plannings, TDD, continuos integration, etc.

Slide 32

Slide 32 text

You are managing a healthy project, along with a seasoned developer. You fully embraced the Agile Way™ with standup sessions, sprint plannings, TDD, continuos integration, etc. The developer is pushing features like crazy, the client is happy, everything’s great.

Slide 33

Slide 33 text

Out of nowhere, your developer leaves your project.

Slide 34

Slide 34 text

Out of nowhere, your developer leaves your project. You find two new developers, a junior and a senior. They are very excited to join your project.

Slide 35

Slide 35 text

Out of nowhere, your developer leaves your project. You find two new developers, a junior and a senior. They are very excited to join your project. After a week…

Slide 36

Slide 36 text

JUNIOR DEVELOPER Confessions of a

Slide 37

Slide 37 text

✤ The code is too hard to understand ✤ Features can't be added that easily ✤ Tests keep breaking all the time for misterious reasons

Slide 38

Slide 38 text

SENIOR DEVELOPER Confessions of a

Slide 39

Slide 39 text

✤ The code quality is too low ✤ Features can't be added that easily ✤ The test architecture is horrible and needs to be re-written

Slide 40

Slide 40 text

DIFFERENT PEOPLE, DIFFERENT HABITS

Slide 41

Slide 41 text

Ever notice that anyone going slower than you is an idiot, but anyone going faster is a maniac? George Carlin

Slide 42

Slide 42 text

EVERY DEVELOPER HAS HIS OWN STYLE, EXPERIENCE, PRIORITIES AND VALUES

Slide 43

Slide 43 text

MANY OF THESE HABITS COME FROM PERSONAL FLAVOUR, WHICH CAN BE ANNOYING FOR OTHER PEOPLE, BUT NOT NECESSARILY WRONG

Slide 44

Slide 44 text

ON THE OTHER HAND, THERE ARE INTRINSIC & MEASURABLE DEFECTS IN SOFTWARE

Slide 45

Slide 45 text

CODE SMELL High Complexity

Slide 46

Slide 46 text

CODE SMELL Code Duplication

Slide 47

Slide 47 text

CODE SMELL High Churn Rate

Slide 48

Slide 48 text

CODE SMELL Low Test Coverage

Slide 49

Slide 49 text

RAW DATA INVISIBLE PROBLEMS

Slide 50

Slide 50 text

MAKE DATA ACCESSIBLE MAKE PROBLEMS VISIBLE

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

WRAP-UP {

Slide 57

Slide 57 text

WE NEED WORKING SOFTWARE

Slide 58

Slide 58 text

BUT IF YOU ONLY CARE ABOUT WORKING SOFTWARE, YOU LOSE FOCUS ON THE PRODUCT QUALITY

Slide 59

Slide 59 text

WHAT WORKS NOW, MAY NOT WORK TOMORROW

Slide 60

Slide 60 text

MAKE A HABIT OF TRACKING YOUR PROJECTS’ HEALTH

Slide 61

Slide 61 text

USE AUTOMATED HASSLE-FREE TOOLS TO KEEP SMELLS UNDER CONTROL AND MAKE PROBLEMS EVIDENT

Slide 62

Slide 62 text

BUILD A BETTER LEGACY FOR YOUR PROJECTS

Slide 63

Slide 63 text

IMPROVE WORKING SOFTWARE, MAKE BETTER SOFTWARE

Slide 64

Slide 64 text

Ju Liu {Matteo Giaccone @arkh4m @mat_jack1 QUESTION TIME