Hacker News new | past | comments | ask | show | jobs | submit login

> Refactoring

I personally don't believe refactoring should ever be part of "maintenance".

Maintenance needs to avoid YAGNI and avoid the engineers natural desire for over-engineering and unnecessary perfect polishing and abstruse abstraction.

Refactoring is something that should be driven by new features (or worst case towards rewrite), and few have the skill to do it well.

I'm not arguing the sibling strawman that maintenance be "the fastest, sloppiest, filthiest duct-tape maintenance imaginable."

Excelling at maintenance is highly skillful work and often poorly rewarded.




Well, I certainly agree that engineers tend towards YAGNI and this must be avoided.

     Refactoring is something that should be driven by 
     new features (or worst case towards rewrite),
This overlooks a whole other class of factors that can drive maintenance: changes in the environment.

Assuming we're talking about a program that does something useful and isn't just a screensaver, it's probably ingesting data from the outside world. That data can change in a variety of ways. API partners and users can introduce changes on their end and will eventually find new and annoying edge cases. Or maybe the volume of data increases by 100x and changes must be made on your end.

Or maybe your software sort of rots as the security vulnerabilities pile up. Eventually you've got to make major version or point upgrades to the framework and/or various dependencies.

We want to handle these demands judiciously and as a rule, yeah, refactoring isn't generally going to be the answer but sometimes it is.


> I personally don't believe refactoring should ever be part of "maintenance".

Of course it shouldn’t, because software maintenance does not exist. Programs don’t degrade with use. All “maintenance” on software is, like new development, the implementation of new context->behavior combinations, and calling it something different is a result of applying an inappropriate physical-product metaphor.


    Of course it shouldn’t, because software maintenance 
    does not exist. Programs don’t degrade with use
This is some real pedantic gymnastics and you're not even correct.

The word "maintenance" doesn't imply some kind of physical product metaphor. Sorry. That's not what the word means.


> software maintenance does not exist

There are several activities in software that are similar to maintenance of physical products. e.g.

* that parsing library that you used 2 years ago and was in good working order then, is now outdated and has known vulnerabilities that are not present in the latest version, apply update.

* Those cloud-hosted databases that you use are an older version that the cloud vendor has deprecated and will some time withdraw support for, apply migration to a later one.




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: