![Page 1: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/1.jpg)
Legacy / long running projects
RubyConfLT 2012
![Page 2: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/2.jpg)
def
"A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available." (Wikipedia)
![Page 3: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/3.jpg)
def
Long running: > 2 years
![Page 4: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/4.jpg)
def
Reality: long running =~ legacy
![Page 5: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/5.jpg)
important!
technology+
team
![Page 6: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/6.jpg)
important?
technology+
team
management
![Page 7: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/7.jpg)
technology: upgrade
worth total rewrite?=~
to be or not to be
![Page 8: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/8.jpg)
technology: rewrite
![Page 9: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/9.jpg)
technology: rewrite
unless...
![Page 10: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/10.jpg)
technology: rewrite
● 50% rule● clear legacy system requirements● new technology mature enough & team ready● benefits/costs ratio● customer understands what's going on (...)
![Page 11: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/11.jpg)
technology: rewrite
Good (famous) examples:● Mac OS -> OS X● Minix -> Linux● PHP 1 -> PHP 2
![Page 12: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/12.jpg)
technology: rewrite
Good (famous) examples:● Mac OS -> OS X● Minix -> Linux● PHP 1 -> PHP 2 ● UBB -> vBulletin● Netscape -> Mozilla● ...
![Page 13: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/13.jpg)
technology: rewrite
● integration tests● prioritize!● be ready to support legacy system● simplify● migrate data early● rewrite piece-by-piece● usually takes longer than expected
![Page 14: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/14.jpg)
technology: technical debt
"Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice."[1]
[1] http://martinfowler.com/bliki/TechnicalDebt.html
![Page 15: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/15.jpg)
technology: technical debt
Main diff from short period projects:
technical debt matters
![Page 16: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/16.jpg)
technology: technical debt
Main diff from short period projects:
technical debt matters
A LOT
![Page 17: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/17.jpg)
technology: technical debt
Impact on team & development speed
![Page 18: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/18.jpg)
hard part: team
As always with HR: difficult to measure
![Page 19: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/19.jpg)
team: motivation
● lack of "hot" tech stuff● high level of sh*t (everything needs to be
fixed!..)● lack of challenge in well known field● routine, routine, routine
![Page 20: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/20.jpg)
team: motivation
side projects
IS-A-MUST
![Page 21: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/21.jpg)
team: motivation
side projects
IS-A-MUST
even if forced
![Page 22: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/22.jpg)
team: motivation
hackathons startup weekends
conferences
![Page 23: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/23.jpg)
team: motivation
scoped(freedom) to choose tech
![Page 24: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/24.jpg)
team: technical debt
pay your debt in time.
![Page 25: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/25.jpg)
team: motivation
collective code ownership
at least weak code ownership
![Page 26: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/26.jpg)
team: motivation
adequate attention to non-tech problem solving (universal)
![Page 27: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/27.jpg)
team: motivation
if a product has some fans (hopefully),
forward/communicate love letters to the team
![Page 28: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/28.jpg)
return
1. technology matters as much as it matters to the TEAM
2. changes are and must be inevitable3. way of recharging the batteries must be
developed to get rid of long run exhaustion4. ...5. profit!
![Page 29: RubyConfLT2012: Legacy / long running projects](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c4201a4a7959e8508b4603/html5/thumbnails/29.jpg)
end
+Vidmantas Kabošis @vidmantas [email protected] slides: bit.ly/legacy-long-running-projects
Questions?