Rewriting not recommended


Published on

Why you shouldn't rewrite an existing application from the ground up (English version).

Published in: Technology, Economy & Finance
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Rewriting not recommended

  1. 1. Rewritingnot recommended Dirk Haun
  2. 2. Google Summer of Code• Google pays students $4500 to work on Open Source projects• 175 projects involved• Deadline: April 7•
  3. 3. Rewriting ofApplications
  4. 4. Vita• Electronic Cash• PDAs & Smartphones• Service Level Management• Document Conversion• Open Source CMS
  5. 5. Agenda• Motivation• Dont do it!• Remedy• Prevention
  6. 6. Why do we want to rewrite something?• Rational: Problems with the architecture• Irrational: Programmers Ego
  7. 7. Motivation: Architecture• Started out with a clean design• Change requests after initial release➡ Loss of clarity➡ Solution(?): Rewrite!
  8. 8. Motivation: ArchitectureIdeally:• "Nicer" architecture• Easier to maintain• Learned from mistakes
  9. 9. Motivation: Ego• Old code just isnt "sexy"• Having to maintain other peoples code• Personal preferences vs. existing code
  10. 10. Agenda• Motivation• Dont do it!• Remedy• Prevention
  11. 11. Rewriting takes (more) time• What do you ship in the meantime?• Losing customers, market share, and money
  12. 12. How do you avoid a standstill?• Two teams? ‣ Where do all these people come from? ‣ "Moving Target"
  13. 13. How do you avoid a standstill?• Putting the old application in "Maintenance Mode"? ‣ Whats a bug?
  14. 14. Losing details• Reinstating the original functionality ‣ Do you really have everything documented? ‣ Workarounds for real-world problems
  15. 15. No software is an island• Software doesnt exist in a vacuum• Compatibility with 3rd-party applications• Your software as a part of a process
  16. 16. Can it really only get better?• Sometimes there isnt a better solution• Old mistakes ‣ Environment, Time pressure• New mistakes ‣ Learning process
  17. 17. Exceptions?• Change of technology• In-house tools• Refocussing
  18. 18. Agenda• Motivation• Dont do it!• Remedy• Prevention
  19. 19. Personally I believe that somesystems just require some love,and radical refactoring, tobreathe new life into them. -- Tim Penhey
  20. 20. Refactoring• (Re-)Identify modules• Identify problematic areas of the code ‣ Bottlenecks ‣ Cluttered code
  21. 21. Refactoring: Tests• Unit / Component Tests! ‣ For every bug➡ Benefits for current development• Rewrite modules, one after another
  22. 22. Benefits and side-effects• Better understanding of the current system• Better estimates for changes / fixes
  23. 23. Agenda• Motivation• Dont do it!• Abhilfen• Prevention
  24. 24. Specifications?• Better specifications? ‣ Yeah, sure ...• Cant do without them but get away from fully-fledged specifications• Be flexible! ‣ TDD, Agile
  25. 25. Planning is an importantlearning exercise, (...)Plans, on the other hand, areoverrated. -- Mary Poppendieck
  26. 26. Rotting Code• How did that happen? ‣ Pressure, Lack of time? ‣ Incompetence?• Cause study ‣ What can you do about it?
  27. 27. More communication!• Internal (project)• With customers / users• Development ↔ Marketing ↔ Customers
  28. 28. To summarize ...
  29. 29. Risks• Loss of ... ‣ Customers / Market Share / Money ‣ Functionality ‣ 3rd-party applications• repeating old mistakes• new architecture, new mistakes
  30. 30. Remedies• Refactoring instead of Rewriting• Test Driven Development, Agile• Cause studies: ‣ What went wrong the last time?• Improve communication
  31. 31. Resources• Joel on Software (Book and website)• Agile Software Development• Lean Software DevelopmentP.S. Keywords are links.
  32. 32. Credits• Photos via, thanks to: Hopkinsii, striatic, paul goyette, Kazze, adrenalin, ikelee, Auntie P., Regorio, frozenchipmunk, Kevin Labianco, fallsroad, photo.bugz, tim_d, lagiuspo, Nathan James, ladyphoenixx_1999, Grim Reaper With A Lawnmower, re-Verse, amuk2006, Pathfinder Linden, Gigglejuice, manukiPhotos and Flickr usernames are links.