1 of 36

2 of 36

Software Entropy: The Theory of Broken WindowsChinonso Ani,

Software Engineer �@technonso

3 of 36

This talk is about

��

4 of 36

Managing �Chaos,

Complexity,

Scale

Legacy code

5 of 36

6 of 36

What is Software Entropy

Entropy (physics)

==

“disorder”

7 of 36

Why should you care:

Software >= Entropy.

Time >= Now

8 of 36

A codebase ... developers …�terrified of breaking it

9 of 36

Technical Debts that will bankrupt the future

10 of 36

What Is Technical Debt

Technical loan to be paid with interest later

11 of 36

Everything You Want to Do LaterIs DEBT

• Let’s Document Later�• Let’s Test Later�• Let’s Architect Later�• Let’s Refactor Later

12 of 36

Result of Debt

13 of 36

Support to Innovation ratio

14 of 36

HELP DESK

15 of 36

16 of 36

The Theory of Broken Windows

Based on Criminology

17 of 36

One broken window, left unrepaired means nobody cares

18 of 36

Serious structural damage begins…

So another window gets broken…

People start littering…

Graffiti appears…

19 of 36

20 of 36

Now >= Future�Entropy == Real

21 of 36

How to reduce software entropy?

Don’t leave “broken windows”

22 of 36

“�If you want people to do something… make it easy

23 of 36

Start with minimal technology

24 of 36

The psychology or culture at work on a project

25 of 36

Debt Management and Debt Avoidance

• Assess Complexity and Confusion

• 30% of the Sprint Should Be Devoted to Debt repayment

• Test Before You Implement

• Collect User Feedback

• Measure and Correlate Churn

26 of 36

The Special Case of �Legacy Code

27 of 36

What is Legacy code?

Inherited codebase

28 of 36

A codebase that developers avoid because they are terrified of breaking it

29 of 36

Why Legacy code is a problem?

* It works (until it breaks --- later)�

* Devs are attached to their source code

30 of 36

Legacy code is a challenge, make it a worthy challenge

31 of 36

How to tackle �Legacy code?

32 of 36

Break the assumptions around the code

33 of 36

Start newbies on Legacy code: Writing Tests!

34 of 36

Treat your codebase as open source

35 of 36

HOW TO OPEN-SOURCE YOUR CLOSED SOURCE

+ Transparency�+ Collaboration�+ Innovation

+ Security�+ Experience�+ Costs

36 of 36

Find me on FB/ TW/ IG

@technonso