working compassionately with legacy code, rubyconf 2015
TRANSCRIPT
![Page 1: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/1.jpg)
Working Compassionately with Legacy Code
@amar47shah
![Page 2: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/2.jpg)
![Page 3: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/3.jpg)
Avalokiteśvara by Wonderlane Flickr CC BY-NC 2.0
![Page 4: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/4.jpg)
Meditation Banyan by Christine Boose Flickr CC BY-NC-ND 2.0
![Page 5: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/5.jpg)
![Page 6: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/6.jpg)
hippie dog by istolethetv Flickr CC BY 2.0
![Page 7: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/7.jpg)
hippie dog by istolethetv Flickr CC BY 2.0 / text added
![Page 8: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/8.jpg)
LEARNING
![Page 9: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/9.jpg)
Brant Bjork by Ben Keeler Young Men’s Nation
![Page 10: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/10.jpg)
![Page 11: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/11.jpg)
![Page 12: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/12.jpg)
![Page 13: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/13.jpg)
rail climb Beth Jusino Flickr CC BY-NC 2.0
![Page 14: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/14.jpg)
Forgotten by Matthew Hester Flickr CC BY-NC-ND 2.0
![Page 15: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/15.jpg)
NASA
![Page 16: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/16.jpg)
The whirling disc of NGC 4526 by Stuart Rankin Flickr CC BY 2.0
![Page 17: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/17.jpg)
developers as second-class citizens
users as a despised and outcast underclass
![Page 18: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/18.jpg)
“Kill it and start over.”
![Page 19: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/19.jpg)
Blueprints by Sam Howzit Flickr CC BY 2.0
![Page 20: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/20.jpg)
![Page 21: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/21.jpg)
Smashville car by WBUR Boston Flickr CC BY-NC-ND 2.0
![Page 22: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/22.jpg)
Out Of Order by David Mach by duncan c Flickr CC BY-NC 2.0
![Page 23: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/23.jpg)
If you see something, say nothing by pedrik Flickr CC BY 2.0
![Page 24: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/24.jpg)
• no automated tests
• end-of-life Rails and Ruby versions
• 1500-line models, 300-line methods
• vulnerable to SQL injection
• authorization loopholes
![Page 25: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/25.jpg)
“pretty solid”
![Page 26: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/26.jpg)
New Flame sinking off Gibraltar by amateur_photo_bore Flickr CC BY-NC-ND 2.0
![Page 27: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/27.jpg)
Self portrait - Flamethrowers, facepaint and fantoms by MattysFlicks Flickr CC BY 2.0
![Page 28: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/28.jpg)
Reject. by Lucas Moratelli Flickr CC BY-NC 2.0
![Page 29: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/29.jpg)
* d51a256 - asdf * 56b5cfa - asdf * c12135f - adsf * 253e4ee - asdf * af9120b - asdf * 6b4a7b3 - asdf * a0b93d5 - asdf * ecb1fa5 - asdf * 4b19cda - asdf * 58cc3f7 - adsf * 7ffd540 - asdf * 6942f4f - adf * 8823caf - adsf * 9843c03 - adf * 3695f76 - adf * 4cb1131 - adf * 182430f - asdf * f2e9bd4 - adsf * ef5c68d - adsf * d386229 - adsf * 357b445 - adf
git commit -am asdf
![Page 30: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/30.jpg)
![Page 31: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/31.jpg)
![Page 32: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/32.jpg)
![Page 33: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/33.jpg)
index show new edit create update destroy
![Page 34: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/34.jpg)
$ ls app/services
groan_stifler.rb mirage_spotter.rb sand_from_eyes_wiper.rb
Desert by Moyan Brenn Flickr CC BY 2.0
![Page 35: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/35.jpg)
![Page 36: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/36.jpg)
![Page 37: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/37.jpg)
code is my boyfriend
Coding by the fire by tux0racer Flickr CC BY 2.0
![Page 38: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/38.jpg)
IMG_4876 by Aaron Goodman Flickr CC BY-ND 2.0
![Page 39: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/39.jpg)
Dark by Transformer18 Flickr CC BY 2.0
![Page 40: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/40.jpg)
Control
![Page 41: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/41.jpg)
Trust
![Page 42: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/42.jpg)
Chemical Tanker, Aug 11 by Louis Vest Flickr CC BY-NC 2.0
![Page 43: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/43.jpg)
Have You Ever Seen A Sadder Looking Dog? by Stewart Black Flickr CC BY 2.0
![Page 44: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/44.jpg)
Albert Einstein - Caricature by DonkeyHotey Flickr CC BY 2.0
![Page 45: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/45.jpg)
mural of the man inside Fatlace - japantown, san francisco by eric molina CC BY 2.0
![Page 46: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/46.jpg)
Pomodoro Kitchen Timer for Action Logging by Andy Roberts Flickr CC BY 2.0
TDD Hat by George Dinwiddie blog.gdinwiddie.com CC BY-SA 3.0Productivity: Getting Personal Kanban to Done by Dennis Hamilton Flickr CC BY 2.0
![Page 47: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/47.jpg)
Cognitive Restructuring
1. Identify automatic thoughts
2. Isolate cognitive distortions
3. Apply reason
4. Develop rebuttal
![Page 48: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/48.jpg)
rm -rf / by Zakwitnij!pl Ejdzej & Iric Flickr CC BY-SA 2.0Self portrait - Flamethrowers, facepaint and fantoms by MattysFlicks Flickr CC BY 2.0
![Page 49: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/49.jpg)
Darlin Do You Gamble by Thomas Hawk Flickr CC BY-NC 2.0Reject. by Lucas Moratelli Flickr CC BY-NC 2.0
![Page 50: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/50.jpg)
![Page 51: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/51.jpg)
–Jan Dudulskihttp://codetunes.com/2014/fixing-legacy-code/
“code is person-agnostic”
![Page 52: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/52.jpg)
Healthy homemade school lunches by Jennifer Chait Flickr CC BY-SA 2.0
![Page 53: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/53.jpg)
Boring by Cheryl Colan Flickr CC BY-NC 2.0
![Page 54: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/54.jpg)
Boring by Strevo Flickr CC BY-SA 2.0
![Page 55: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/55.jpg)
Onaturligt by Marcus Linder Flickr CC BY-NC 2.0
![Page 56: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/56.jpg)
Planking Arnhem by Marco Derksen Flickr CC BY-NC 2.0
![Page 57: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/57.jpg)
You need to know all of this —>
(sorry you can’t read it)
Rails Competencies Poster by Code Fellows, LLC CC BY-NC-SA 3.0
![Page 58: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/58.jpg)
120621-O-ZZ999-005 by U.S. Pacific Fleet Flickr CC BY-NC 2.0
![Page 59: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/59.jpg)
Stopwatch by William Warby Flickr CC BY 2.0
![Page 60: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/60.jpg)
Wet Pipin by Mattieu Guionnet Flickr CC BY-NC-ND 2.0
![Page 61: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/61.jpg)
Onaturligt by Marcus Linder Flickr CC BY-NC 2.0
![Page 62: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/62.jpg)
Potter in Bangalore, India by Muhammad Mahdi Karim Wikimedia Commons Free Art License
![Page 63: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/63.jpg)
mandala - making & destroying Vernon Hyde Flickr CC BY-NC-ND 2.0
![Page 64: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/64.jpg)
Chevron's Toxic Legacy in Ecuador's Amazon by Rainforest Action Network Flickr CC BY-NC 2.0
![Page 65: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/65.jpg)
Larry Powers (Ugly Americans) by Jim H. Flickr CC BY-SA 2.0
![Page 66: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/66.jpg)
what can i change?
![Page 67: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/67.jpg)
how much will i tolerate?
![Page 68: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/68.jpg)
Zhuzha - Spy Cat by Mark Vegas Flickr CC BY-SA 2.0
![Page 69: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/69.jpg)
Meditation Banyan by Christine Boose Flickr CC BY-NC-ND 2.0
![Page 70: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/70.jpg)
MINSWAN
![Page 71: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/71.jpg)
MINSWAN
![Page 72: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/72.jpg)
letters by Beth Cortez-Neavel Flickr CC BY 2.0
![Page 73: Working Compassionately with Legacy Code, RubyConf 2015](https://reader031.vdocuments.site/reader031/viewer/2022011722/58ee28b11a28abe46f8b457b/html5/thumbnails/73.jpg)