Slide 1

Slide 1 text

Harry Potter and The Legacy Codebase 1 Friday, February 21, 14

Slide 2

Slide 2 text

Harry Potter and The Legacy Codebase 2 Friday, February 21, 14

Slide 3

Slide 3 text

3 Friday, February 21, 14

Slide 4

Slide 4 text

MINSWAN 4 Friday, February 21, 14

Slide 5

Slide 5 text

NIRD.us 5 Friday, February 21, 14

Slide 6

Slide 6 text

AdaDevelopersAcademy.org 6 Friday, February 21, 14

Slide 7

Slide 7 text

7 Friday, February 21, 14

Slide 8

Slide 8 text

8 Friday, February 21, 14

Slide 9

Slide 9 text

WHY YOU’RE HERE • House New Hire -- You’re a new developer joining an established team • House Reorg -- Hogwarts-Online reorg assigned this to you • House Feddup -- You’ve decided you’ve had enough and volunteered 9 Friday, February 21, 14

Slide 10

Slide 10 text

10 Friday, February 21, 14

Slide 11

Slide 11 text

LEGACY CODE ISN’T EVIL, IT’S JUST MISUNDERSTOOD 11 Friday, February 21, 14

Slide 12

Slide 12 text

IDEAL HABITAT • Software that has been superseded but is difficult to replace because everyone and everything relies on it • Code without tests • Code that you didn’t write • Code written before today 12 Friday, February 21, 14

Slide 13

Slide 13 text

13 Friday, February 21, 14

Slide 14

Slide 14 text

14 Friday, February 21, 14

Slide 15

Slide 15 text

CODE ARCHEOLOGY 101 15 Friday, February 21, 14

Slide 16

Slide 16 text

16 Friday, February 21, 14

Slide 17

Slide 17 text

CODE ARCHEOLOGY 101 • Achieve a better understanding of the overall architecture • Discover the root cause of a critical bug • Determine the best way to extend the functionality of a vestigial class • Investigate a previous approach to solving a current problem In this class you will learn how to... 17 Friday, February 21, 14

Slide 18

Slide 18 text

CODE ARCHEOLOGY 101 •Surveyance •Excavation •Analysis Each House will complete one of three tasks... 18 Friday, February 21, 14

Slide 19

Slide 19 text

BE BRAVE 19 Friday, February 21, 14

Slide 20

Slide 20 text

TO FALLEN COMRADES 20 Friday, February 21, 14

Slide 21

Slide 21 text

21 Friday, February 21, 14

Slide 22

Slide 22 text

22 Friday, February 21, 14

Slide 23

Slide 23 text

SURVEYANCE 23 Friday, February 21, 14

Slide 24

Slide 24 text

TAKE INVENTORY 24 Friday, February 21, 14

Slide 25

Slide 25 text

ASK DUMB QUESTIONS 25 Friday, February 21, 14

Slide 26

Slide 26 text

FLAG MYTHS 26 Friday, February 21, 14

Slide 27

Slide 27 text

Tricks ↓ Techniques ↓ Process ↓ Methodology ↓ Dogma 27 Friday, February 21, 14

Slide 28

Slide 28 text

class Basilisk < ActiveRecord::Base def remove_poison update!(ink_quantity: 0) end end 28 Friday, February 21, 14

Slide 29

Slide 29 text

class PoisonBarrel < ActiveRecord::Base def self.first_free_barrel(liters_needed) free = DEFAULT_CAPACITY - liters_needed InkBarrel.where("liters < ?", free) end def self.with_free_space(liters_needed) if self.first_free_barrel(liters_needed) return barrels.first else return PoisonBarrel.create! end end end 29 Friday, February 21, 14

Slide 30

Slide 30 text

class Basilisk < ActiveRecord::Base def remove_poison barrel = PoisonBarrel. with_free_space(poison_quantity) barrel.liters += poison_quantity barrel.save! update!(ink_quantity: 0) end end 30 Friday, February 21, 14

Slide 31

Slide 31 text

EXCAVATION 31 Friday, February 21, 14

Slide 32

Slide 32 text

32 Friday, February 21, 14

Slide 33

Slide 33 text

"FIRST, DO NO HARM" 33 Friday, February 21, 14

Slide 34

Slide 34 text

class Basilisk < ActiveRecord::Base def remove_poison warn "#remove_poison has been deprecated. “ + “Use #harvest_poison instead." harvest_poison end def harvest_poison store_poison_in(poison_container, poison_quantity) update!(poison_quantity: 0) end private def store_poison_in(container, poison_quantity) container.first_with_free_space(poison_quantity). update!(liters: poison_quantity) end end 34 Friday, February 21, 14

Slide 35

Slide 35 text

ANALYSIS / DOCUMENTATION 35 Friday, February 21, 14

Slide 36

Slide 36 text

DOCUMENT EVERYTHING 36 Friday, February 21, 14

Slide 37

Slide 37 text

MAKE A MAP 37 Friday, February 21, 14

Slide 38

Slide 38 text

FINAL EXAMS 38 Friday, February 21, 14

Slide 39

Slide 39 text

39 Friday, February 21, 14

Slide 40

Slide 40 text

★ glass artist ★ Vespa mechanic ★ lighting designer ★ author & teacher ★ player of games ★ software developer @kerrizor KERRI MILLER 40 Friday, February 21, 14

Slide 41

Slide 41 text

41 Friday, February 21, 14