Ease of maintenance is a feature

As a person in tech, I see that there is a lot of emphasis on scalability, speed, the next shiny doll that everyone wants to implement in their code, put it on their resume. But little emphasis is given on ease of maintenance. 

I say ease of maintenance is a feature.

Ease of maintenance is how long it takes for someone to

  1. Clone the source code
  2. Set up the codebase while also installing all the relevant dependencies
  3. Boot the codebase on a local machine
  4. Make that one-line change
  5. Do a small smoke test to ascertain everything is working correctly
  6. Push the changes to git or other versioning system
  7. Watch the CI/CD pipeline run and see the changes live
    • In some cases, this may also mean manually triggering a deploy because CD is not automated.

If it takes you more than an hour to go through all the above steps, you are not maintaining the software, you are fighting against a complex, "shiny" piece of tech that's so good it takes ages to ship even a small one-line change.

Software should be built to future-proof against the following scenarios:

  • Software ownership changes
  • Developers move on
  • That "shiny" piece of tech may not be maintained a year from now
  • There is a financial crisis, and the original code author is not available anymore
  • The team is too busy with other growth areas, but high maintenance is high friction.
  • The team is downsized from 100 engineers to 10 engineers, and not everyone would have experience with the codebase.
  • Certain skills are so rare it's impossible/beyond budget to hire talent for those skills.

Software should be built to last forever.