Ease of maintenance is a feature
The article stresses that ease of maintenance is vital in software development, advocating for sustainable design to ensure resilience against team changes and to minimize operational friction.
Read original articleThe article emphasizes the importance of ease of maintenance in software development, arguing that it should be considered a key feature alongside scalability and speed. The author, Ronak Gothi, outlines the typical steps involved in maintaining software, such as cloning the source code, setting up the codebase, making changes, and deploying updates. He suggests that if these processes take more than an hour, the software may be overly complex and difficult to manage. Gothi highlights the need for software to be resilient against various challenges, including changes in ownership, developer turnover, and potential financial crises that could affect the availability of original authors. He warns that high maintenance demands can create friction, especially in teams that may be downsized or lack the necessary expertise. Ultimately, the article advocates for building software that is sustainable and easy to maintain over the long term.
- Ease of maintenance is crucial in software development.
- Complex software can hinder quick updates and changes.
- Software should be designed to withstand changes in team structure and expertise.
- High maintenance demands can create operational friction.
- Building sustainable software is essential for long-term success.
Related
Never Update Anything
The article critiques frequent software updates, citing time constraints, confusion over update types, and companies pushing paid upgrades. It highlights challenges and issues caused by updates, questioning their necessity.
Ask HN: Business logic is slowing us down
Developers face challenges balancing internal stakeholder demands and external user needs, often spending time on code maintenance. Recognizing this work is crucial for enabling focus on new feature development.
A Jenga tower about to collapse: Software erosion is happening all around us
Software erosion results from complex architectures and frequent changes, with developers spending 42% of time on maintenance. A "shift left" approach is crucial for integrating quality assurance early in development.
The 30-Year-Old Problem Still Haunting Developers
Software development faces persistent challenges like effectiveness, efficiency, and robustness, largely due to human factors. A holistic approach integrating people, processes, and technology is essential for improvement.
Why software only moves forward
Software development must continuously evolve to accommodate permanent data, especially in financial transactions. Developers should manage version mismatches and anticipate disruptions to maintain reliability and service quality.
My worst experiences universally have always been python projects. I don't think I've had a single time where I cloned a python project and had it just work.
Beyond just the code, I've had lots of mixed experiences with CI/CD being smooth. I unfortunately don't think I've been in a single shop where deployments or ci have been a good experience. They often feel very fragile and undocumented and hard for newcomers.
Something this old shouldn't have this property. Nothing "modern" even comes close. Look at the top languages, Python, JavaScript, and Java, and you don't even have to consider too much how abysmal these languages are in this regards.
Fast setup and revision are important but incomplete list of maintenance tasks; are metrics/logs predictably named and accessed? Can you perform manual experimentation without hard-to-configure client (ir: hit the server with a browser or run a cli)?
Also, "cycle time" or "revision time" are soo important, but I havent found a good way to do that with AI model development :( any tips here?
Easy to maintain is not only about keeping something alive with minimal effort over longer periods of time. It also plays a pivotal role for scalability in any direction. Adding more engineers/teams, adding more unforseeable features, iterating quickly in general, surviving more traffic/load, removing technical bottlenecks, ... everything is so much easier when the project is easy to work with and maintainable.
In ruby, for example, I can pretty trivially clone any open source gem and run the specs in < 5 minutes. Patching something and opening a PR in under an hour is definitely standard.
On the other hand, getting a development environment running for a company's proprietary web app is often a hassle. Mostly though this isn't because of the language or dependencies, it's because of:
- Getting all the dependent services up and running (postgres version X, redis Y, whatever else) with appropriate seed data.
- Getting access to development secrets
My company (infield.ai) upgrades legacy apps, so we deal with setting up a lot of these. We run them in individual siloed remote developer environments using devcontainers. It works OK once we've configured the service containers.[1] - The Innovation Delusion: How Our Obsession with the New Has Disrupted the Work That Matters Most - https://a.co/d/eInjwZD
Related
Never Update Anything
The article critiques frequent software updates, citing time constraints, confusion over update types, and companies pushing paid upgrades. It highlights challenges and issues caused by updates, questioning their necessity.
Ask HN: Business logic is slowing us down
Developers face challenges balancing internal stakeholder demands and external user needs, often spending time on code maintenance. Recognizing this work is crucial for enabling focus on new feature development.
A Jenga tower about to collapse: Software erosion is happening all around us
Software erosion results from complex architectures and frequent changes, with developers spending 42% of time on maintenance. A "shift left" approach is crucial for integrating quality assurance early in development.
The 30-Year-Old Problem Still Haunting Developers
Software development faces persistent challenges like effectiveness, efficiency, and robustness, largely due to human factors. A holistic approach integrating people, processes, and technology is essential for improvement.
Why software only moves forward
Software development must continuously evolve to accommodate permanent data, especially in financial transactions. Developers should manage version mismatches and anticipate disruptions to maintain reliability and service quality.