SlideShare a Scribd company logo
1 of 46
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

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

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