rubyconflt2012: legacy / long running projects

29
Legacy / long running projects RubyConfLT 2012

Upload: vidmantas-kabosis

Post on 25-Jan-2015

1.466 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: RubyConfLT2012: Legacy / long running projects

Legacy / long running projects

RubyConfLT 2012

Page 2: RubyConfLT2012: Legacy / long running projects

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

def

Long running: > 2 years

Page 4: RubyConfLT2012: Legacy / long running projects

def

Reality: long running =~ legacy

Page 5: RubyConfLT2012: Legacy / long running projects

important!

technology+

team

Page 6: RubyConfLT2012: Legacy / long running projects

important?

technology+

team

management

Page 7: RubyConfLT2012: Legacy / long running projects

technology: upgrade

worth total rewrite?=~

to be or not to be

Page 8: RubyConfLT2012: Legacy / long running projects

technology: rewrite

Page 9: RubyConfLT2012: Legacy / long running projects

technology: rewrite

unless...

Page 10: RubyConfLT2012: Legacy / long running projects

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

technology: rewrite

Good (famous) examples:● Mac OS -> OS X● Minix -> Linux● PHP 1 -> PHP 2

Page 12: RubyConfLT2012: Legacy / long running projects

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

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

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

technology: technical debt

Main diff from short period projects:

technical debt matters

Page 16: RubyConfLT2012: Legacy / long running projects

technology: technical debt

Main diff from short period projects:

technical debt matters

A LOT

Page 17: RubyConfLT2012: Legacy / long running projects

technology: technical debt

Impact on team & development speed

Page 18: RubyConfLT2012: Legacy / long running projects

hard part: team

As always with HR: difficult to measure

Page 19: RubyConfLT2012: Legacy / long running projects

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

team: motivation

side projects

IS-A-MUST

Page 21: RubyConfLT2012: Legacy / long running projects

team: motivation

side projects

IS-A-MUST

even if forced

Page 22: RubyConfLT2012: Legacy / long running projects

team: motivation

hackathons startup weekends

conferences

Page 23: RubyConfLT2012: Legacy / long running projects

team: motivation

scoped(freedom) to choose tech

Page 24: RubyConfLT2012: Legacy / long running projects

team: technical debt

pay your debt in time.

Page 25: RubyConfLT2012: Legacy / long running projects

team: motivation

collective code ownership

at least weak code ownership

Page 26: RubyConfLT2012: Legacy / long running projects

team: motivation

adequate attention to non-tech problem solving (universal)

Page 27: RubyConfLT2012: Legacy / long running projects

team: motivation

if a product has some fans (hopefully),

forward/communicate love letters to the team

Page 28: RubyConfLT2012: Legacy / long running projects

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!