The Art of Software Maintenance.
“Whats new?” is an interesting and broadening eternal question, butone which, if pursued exclusively, results only in an e...
And what is good, Phaedrus,And what is not good --Need we ask anyone to tell us these things?                             ...
What is good software ?
What is good software ?   - Functional
What is good software ?   - Functional   - Reliable
What is good software ?   - Functional   - Reliable   - Usable
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic   -   Accessible
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic   -   Accessible   -   Efficient
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic   -   Accessible   -   Efficient   - ...
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic   -   Accessible   -   Efficient   - ...
What is good software ?   -   Functional   -   Reliable   -   Usable   -   Aesthetic   -   Accessible   -   Efficient   - ...
Maintenance, isn’t that what the interns are for ?
Even in such a trivial example, we can find so many         things we would like to improve ...
Bugs Management Database
Bug bases are great for tracking features too.
Features / Bugs must always be assigned to someone.
And the Lord spake, saying, "First shalt thou take outthe Holy Pin. Then, shalt thou count to three, no more,no less. Thre...
Every good bug report needs exactly three things.- Steps to reproduce,- What you expected to see, and- What you saw instea...
Perfection is achieved, not when there is nothing left to  add, but when there is nothing left to take away….             ...
Kathy Sierra,Creating Passionate Users
Progress, far from consisting in change, depends onretentiveness. When change is absolute there remains nobeing to improve...
Source Code Control
Consider Distributed Version Control like git or mercurial.
DRY - Don’t repeat yourself          Andrew Hunt and David Thomas,               The Pragmatic Programmer
Ubiquitous Automation
Civilization advances by extending the number ofimportant operations we can perform without thinking.                     ...
Embrace the command line.
One Step Builds
Testing
Testing, that’s the QA team’s job right ?
Ruthless Testing.
Test Early. Test Often. Test Automatically.
Continuous Integration
Documentation
Readability / Coding Conventions
Orthogonality
?
Mrinal Wadhwahttp://www.mrinalwadhwa.com
ReferencesBooks  The Pragmatic Programer  Head First Software Development  Facts and Fallacies of Software Engineering  So...
ReferencesArticles All Programming is Maintenance Programming The Noble Art of Maintenance Programming 12 Steps to Better ...
ReferencesArticles The F5 Key Is Not a Build Process The Road To Build Enlightenment Daily Builds Are Your Friend The Buil...
The Art of Software Maintenance
The Art of Software Maintenance
The Art of Software Maintenance
Upcoming SlideShare
Loading in …5
×

The Art of Software Maintenance

5,825 views

Published on

Yesterday, I gave a presentation to an aspiring team of software developers on processes and practices that they must adopt as their team grows and matures.

The presentation tried to use Robert M. Pirsig's exploration of quality in the classic book "Zen and the Art of Motorcycle Maintenance" as a tool to explore -- what is good quality software and things you should do as teams and individuals when trying to produce good quality software.

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
5,825
On SlideShare
0
From Embeds
0
Number of Embeds
3,922
Actions
Shares
0
Downloads
0
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

The Art of Software Maintenance

  1. 1. The Art of Software Maintenance.
  2. 2. “Whats new?” is an interesting and broadening eternal question, butone which, if pursued exclusively, results only in an endless parade oftrivia and fashion, the silt of tomorrow.I would like, instead, to be concerned with the question “What is best?”a question which cuts deeply rather than broadly, a question whoseanswers tend to move the silt downstream. Robert M. Pirsig Zen and the Art of Motorcycle Maintenance
  3. 3. And what is good, Phaedrus,And what is not good --Need we ask anyone to tell us these things? Robert M. Pirsig Zen and the Art of Motorcycle Maintenance
  4. 4. What is good software ?
  5. 5. What is good software ? - Functional
  6. 6. What is good software ? - Functional - Reliable
  7. 7. What is good software ? - Functional - Reliable - Usable
  8. 8. What is good software ? - Functional - Reliable - Usable - Aesthetic
  9. 9. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible
  10. 10. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient
  11. 11. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure
  12. 12. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure - Maintainable
  13. 13. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure - Maintainable
  14. 14. Maintenance, isn’t that what the interns are for ?
  15. 15. Even in such a trivial example, we can find so many things we would like to improve ...
  16. 16. Bugs Management Database
  17. 17. Bug bases are great for tracking features too.
  18. 18. Features / Bugs must always be assigned to someone.
  19. 19. And the Lord spake, saying, "First shalt thou take outthe Holy Pin. Then, shalt thou count to three, no more,no less. Three shall be the number thou shalt count,and the number of the counting shalt be three. Fourshalt thou not count, nor either count thou two,excepting that thou then proceed to three. Five is rightout. Once the number three, being the third number, bereached, then lobbest thou thy Holy Hand Grenade ofAntioch towards thou foe, who being naughty in mysight, shall snuff it." Monty Python and the Holy Grail
  20. 20. Every good bug report needs exactly three things.- Steps to reproduce,- What you expected to see, and- What you saw instead. Joel Spolskey
  21. 21. Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away…. Antoine de St. Exupery, Wind, Sand, and Stars
  22. 22. Kathy Sierra,Creating Passionate Users
  23. 23. Progress, far from consisting in change, depends onretentiveness. When change is absolute there remains nobeing to improve and no direction is set for possibleimprovement: and when experience is not retained, as amongsavages, infancy is perpetual. Those who cannot rememberthe past are condemned to repeat it. George Santayana Life of Reason
  24. 24. Source Code Control
  25. 25. Consider Distributed Version Control like git or mercurial.
  26. 26. DRY - Don’t repeat yourself Andrew Hunt and David Thomas, The Pragmatic Programmer
  27. 27. Ubiquitous Automation
  28. 28. Civilization advances by extending the number ofimportant operations we can perform without thinking. Alfred North Whitehead
  29. 29. Embrace the command line.
  30. 30. One Step Builds
  31. 31. Testing
  32. 32. Testing, that’s the QA team’s job right ?
  33. 33. Ruthless Testing.
  34. 34. Test Early. Test Often. Test Automatically.
  35. 35. Continuous Integration
  36. 36. Documentation
  37. 37. Readability / Coding Conventions
  38. 38. Orthogonality
  39. 39. ?
  40. 40. Mrinal Wadhwahttp://www.mrinalwadhwa.com
  41. 41. ReferencesBooks The Pragmatic Programer Head First Software Development Facts and Fallacies of Software Engineering Software Conflict 2.0: The Art and Science of Software Engineering Peopleware: Productive Projects and Teams The Mythical Man-Month: Essays on Software Engineering Code Complete The Design of Design: Essays from a Computer Scientist Clean Code: A Handbook of Agile Software Craftsmanship Test Driven Development: By Example
  42. 42. ReferencesArticles All Programming is Maintenance Programming The Noble Art of Maintenance Programming 12 Steps to Better Code Dont Live with Broken Windows Technical Debt Technical Debt Paying Down Your Technical Debt Featuritis vs. the Happy User Peak The First Rule of Programming: Its Always Your Fault Painless Bug Tracking
  43. 43. ReferencesArticles The F5 Key Is Not a Build Process The Road To Build Enlightenment Daily Builds Are Your Friend The Build Server: Your Projects Heart Monitor The “Works on My Machine” Syndrome I Pity The Fool Who Doesnt Write Unit Tests Twelve Benefits of Writing Unit Tests First Code Tells You How, Comments Tell You Why Discipline Makes Strong Developers The Law of Leaky Abstractions Programming by Coincidence Coding: Its Just Writing Mercurial Tutorial

×