SlideShare a Scribd company logo
The Art of Software Maintenance.
“What's new?” is an interesting and broadening eternal question, but
one which, if pursued exclusively, results only in an endless parade of
trivia 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 whose
answers tend to move the silt downstream.


                                                       Robert M. Pirsig
                              Zen and the Art of Motorcycle Maintenance
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
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
   -   Secure
What is good software ?




   -   Functional
   -   Reliable
   -   Usable
   -   Aesthetic
   -   Accessible
   -   Efficient
   -   Secure
   -   Maintainable
What is good software ?




   -   Functional
   -   Reliable
   -   Usable
   -   Aesthetic
   -   Accessible
   -   Efficient
   -   Secure
   -   Maintainable
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 out
the 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. Four
shalt thou not count, nor either count thou two,
excepting that thou then proceed to three. Five is right
out. Once the number three, being the third number, be
reached, then lobbest thou thy Holy Hand Grenade of
Antioch towards thou foe, who being naughty in my
sight, shall snuff it."


                          Monty Python and the Holy Grail
Every good bug report needs exactly three things.


- Steps to reproduce,
- What you expected to see, and
- What you saw instead.



                                        Joel Spolskey
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
Kathy Sierra,
Creating Passionate Users
Progress, far from consisting in change, depends on
retentiveness. When change is absolute there remains no
being to improve and no direction is set for possible
improvement: and when experience is not retained, as among
savages, infancy is perpetual. Those who cannot remember
the past are condemned to repeat it.


                                        George Santayana
                                           Life of Reason
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 of
important operations we can perform without thinking.


                                 Alfred North Whitehead
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 Wadhwa
http://www.mrinalwadhwa.com
References




Books
  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
References


Articles

 All Programming is Maintenance Programming
 The Noble Art of Maintenance Programming
 12 Steps to Better Code


 Don't Live with Broken Windows
 Technical Debt
 Technical Debt
 Paying Down Your Technical Debt


 Featuritis vs. the Happy User Peak


 The First Rule of Programming: It's Always Your Fault
 Painless Bug Tracking
References

Articles

 The F5 Key Is Not a Build Process
 The Road To Build Enlightenment
 Daily Builds Are Your Friend
 The Build Server: Your Project's Heart Monitor
 The “Works on My Machine” Syndrome

 I Pity The Fool Who Doesn't 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: It's Just Writing

 Mercurial Tutorial

More Related Content

Viewers also liked

Metaphysics’ Secrets
Metaphysics’ SecretsMetaphysics’ Secrets
Metaphysics’ Secrets
group9142
 
Growth hacking is unsexy
Growth hacking is unsexyGrowth hacking is unsexy
Growth hacking is unsexy
Rashmi Sinha
 
Software maintenance
Software maintenance Software maintenance
Software maintenance
Rajeev Sharan
 
El Cos Humà
El Cos HumàEl Cos Humà
El Cos Humà
Irisat
 
Bloc: les videocònsoles
Bloc: les videocònsolesBloc: les videocònsoles
Bloc: les videocònsoles
Irisat
 

Viewers also liked (19)

Spiritual metaphysics & astral travel in dreams
Spiritual metaphysics & astral travel in dreamsSpiritual metaphysics & astral travel in dreams
Spiritual metaphysics & astral travel in dreams
 
Kierkegaard
KierkegaardKierkegaard
Kierkegaard
 
Metaphysics 101 Higher MInd Consciousness
Metaphysics 101 Higher MInd ConsciousnessMetaphysics 101 Higher MInd Consciousness
Metaphysics 101 Higher MInd Consciousness
 
Aristotele La Metafisica
Aristotele La MetafisicaAristotele La Metafisica
Aristotele La Metafisica
 
Aristotele
AristoteleAristotele
Aristotele
 
What Is New Thought Metaphysics
What Is New Thought MetaphysicsWhat Is New Thought Metaphysics
What Is New Thought Metaphysics
 
Metaphysics’ Secrets
Metaphysics’ SecretsMetaphysics’ Secrets
Metaphysics’ Secrets
 
Aristotle MetaPhysics
Aristotle MetaPhysicsAristotle MetaPhysics
Aristotle MetaPhysics
 
Martin Heidegger[1]
Martin Heidegger[1]Martin Heidegger[1]
Martin Heidegger[1]
 
Growth hacking is unsexy
Growth hacking is unsexyGrowth hacking is unsexy
Growth hacking is unsexy
 
Software maintenance
Software maintenance Software maintenance
Software maintenance
 
Metaphysics
MetaphysicsMetaphysics
Metaphysics
 
2 Major fields of philosophy METAPHYSICS AND EPISTEMOLOGY ONLY
2 Major fields of philosophy METAPHYSICS AND EPISTEMOLOGY ONLY2 Major fields of philosophy METAPHYSICS AND EPISTEMOLOGY ONLY
2 Major fields of philosophy METAPHYSICS AND EPISTEMOLOGY ONLY
 
Martin heidegger
Martin heideggerMartin heidegger
Martin heidegger
 
Chapter 9 software maintenance
Chapter 9 software maintenanceChapter 9 software maintenance
Chapter 9 software maintenance
 
El Cos Humà
El Cos HumàEl Cos Humà
El Cos Humà
 
Custom Components In Flex 4
Custom Components In Flex 4Custom Components In Flex 4
Custom Components In Flex 4
 
Presentation2
Presentation2Presentation2
Presentation2
 
Bloc: les videocònsoles
Bloc: les videocònsolesBloc: les videocònsoles
Bloc: les videocònsoles
 

More from Mrinal Wadhwa

Introduction to Rich Internet Applications, Flex, AIR
Introduction to Rich Internet Applications, Flex, AIRIntroduction to Rich Internet Applications, Flex, AIR
Introduction to Rich Internet Applications, Flex, AIR
Mrinal Wadhwa
 

More from Mrinal Wadhwa (10)

SF IoT Meetup - Decentralized Identifiers & Verifiable Claims
SF IoT Meetup - Decentralized Identifiers & Verifiable ClaimsSF IoT Meetup - Decentralized Identifiers & Verifiable Claims
SF IoT Meetup - Decentralized Identifiers & Verifiable Claims
 
Edge Computing and Machine Learning for a better Internet of Things
Edge Computing and Machine Learning for a better Internet of ThingsEdge Computing and Machine Learning for a better Internet of Things
Edge Computing and Machine Learning for a better Internet of Things
 
Considerations for a secure internet of things for cities and communities
Considerations for a secure internet of things for cities and communitiesConsiderations for a secure internet of things for cities and communities
Considerations for a secure internet of things for cities and communities
 
Austin Smart City Readiness Workshop - Viability and Sustainability of IoT Sm...
Austin Smart City Readiness Workshop - Viability and Sustainability of IoT Sm...Austin Smart City Readiness Workshop - Viability and Sustainability of IoT Sm...
Austin Smart City Readiness Workshop - Viability and Sustainability of IoT Sm...
 
Better Parking. Better Communities.
Better Parking. Better Communities.Better Parking. Better Communities.
Better Parking. Better Communities.
 
Bits, Bytes and Blobs
Bits, Bytes and BlobsBits, Bytes and Blobs
Bits, Bytes and Blobs
 
Transport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal WadhwaTransport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal Wadhwa
 
An Introduction To Rich Internet Apllications
An Introduction To Rich Internet ApllicationsAn Introduction To Rich Internet Apllications
An Introduction To Rich Internet Apllications
 
Flex 4 Component Lifecycle
Flex 4 Component LifecycleFlex 4 Component Lifecycle
Flex 4 Component Lifecycle
 
Introduction to Rich Internet Applications, Flex, AIR
Introduction to Rich Internet Applications, Flex, AIRIntroduction to Rich Internet Applications, Flex, AIR
Introduction to Rich Internet Applications, Flex, AIR
 

Recently uploaded

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 

The Art of Software Maintenance

  • 1. The Art of Software Maintenance.
  • 2. “What's new?” is an interesting and broadening eternal question, but one which, if pursued exclusively, results only in an endless parade of trivia 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 whose answers tend to move the silt downstream. Robert M. Pirsig Zen and the Art of Motorcycle Maintenance
  • 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. What is good software ?
  • 5. What is good software ? - Functional
  • 6. What is good software ? - Functional - Reliable
  • 7. What is good software ? - Functional - Reliable - Usable
  • 8. What is good software ? - Functional - Reliable - Usable - Aesthetic
  • 9. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible
  • 10. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient
  • 11. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure
  • 12. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure - Maintainable
  • 13. What is good software ? - Functional - Reliable - Usable - Aesthetic - Accessible - Efficient - Secure - Maintainable
  • 14. Maintenance, isn’t that what the interns are for ?
  • 15.
  • 16. Even in such a trivial example, we can find so many things we would like to improve ...
  • 18. Bug bases are great for tracking features too.
  • 19. Features / Bugs must always be assigned to someone.
  • 20. And the Lord spake, saying, "First shalt thou take out the 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. Four shalt thou not count, nor either count thou two, excepting that thou then proceed to three. Five is right out. Once the number three, being the third number, be reached, then lobbest thou thy Holy Hand Grenade of Antioch towards thou foe, who being naughty in my sight, shall snuff it." Monty Python and the Holy Grail
  • 21. Every good bug report needs exactly three things. - Steps to reproduce, - What you expected to see, and - What you saw instead. Joel Spolskey
  • 22. 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
  • 24. Progress, far from consisting in change, depends on retentiveness. When change is absolute there remains no being to improve and no direction is set for possible improvement: and when experience is not retained, as among savages, infancy is perpetual. Those who cannot remember the past are condemned to repeat it. George Santayana Life of Reason
  • 25.
  • 27. Consider Distributed Version Control like git or mercurial.
  • 28.
  • 29. DRY - Don’t repeat yourself Andrew Hunt and David Thomas, The Pragmatic Programmer
  • 31. Civilization advances by extending the number of important operations we can perform without thinking. Alfred North Whitehead
  • 35. Testing, that’s the QA team’s job right ?
  • 37. Test Early. Test Often. Test Automatically.
  • 40. Readability / Coding Conventions
  • 42. ?
  • 44. References Books 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
  • 45. References Articles All Programming is Maintenance Programming The Noble Art of Maintenance Programming 12 Steps to Better Code Don't Live with Broken Windows Technical Debt Technical Debt Paying Down Your Technical Debt Featuritis vs. the Happy User Peak The First Rule of Programming: It's Always Your Fault Painless Bug Tracking
  • 46. References Articles The F5 Key Is Not a Build Process The Road To Build Enlightenment Daily Builds Are Your Friend The Build Server: Your Project's Heart Monitor The “Works on My Machine” Syndrome I Pity The Fool Who Doesn't 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: It's Just Writing Mercurial Tutorial