Live data from Hacker News

Let’s Get Excited About Maintenance

nytimes.com

71–80 of 116 posts

Re: Let’s Get Excited About Maintenance

#71

I mean, I think the best way to start with this is to use a word other than "maintenance." That's not really the most sexy word if you really want people to get behind it. Furthermore it just suggests that the work is keeping something as good as it was from the beginning. Filling in holes, giving it a coat of paint every now and then. What it really should be called is "refinement." The innovation ends up being incr…

My choice is 'survival'. Less easy for business-types to dismiss.

Re: Let’s Get Excited About Maintenance

#72
post #13

Earlier quoted context omitted.

I believe the right way to go is to focus on library code. If the long lived code is to prove exceptional it has to do so by being grabbed and bolted on to the new thing over and over, and that tends to favor an approach of libraries that assume very little, don't have many dependencies themselves, and opt for simple/robust API over being efficient. The API user can always recode the API for efficiency in their use c…

I don't argue your point here, but I'm seeing more and more developers that cut their teeth in the age of libraries that are terrified to touch library code. There's an assumption out there for some that library code is flawless, and there's an imposter syndrome type aversion to touching it, with the developer fearing the code was made in a certain way for a certain reason and that they're not skilled enough to work…

I suspect that the MS and Java tech stacks might factor into this a bit.

I can't speak for other languages, but in Go, the ability to navigate to the definition of any documented symbol via GoDoc has been most interesting for learning about how the sausage is made in certain areas. I don't have a comprehensive knowledge of all of Go yet, but I've learned that environment variables, for example, are backed by a `map[string]string`.

Perhaps something like that might help with the imposter syndrome about it?

Re: Let’s Get Excited About Maintenance

#73
We stepped out of the plane in New York and soon my Iranian wife called her mother. "Mom, the roads are about as bad as in Tehran!". Recently, we were in Tehran again: they had invested heavily in the maintenance of their infrastructure, making the roads better than in many American cities.

Re: Let’s Get Excited About Maintenance

#74
post #13

Earlier quoted context omitted.

I believe the right way to go is to focus on library code. If the long lived code is to prove exceptional it has to do so by being grabbed and bolted on to the new thing over and over, and that tends to favor an approach of libraries that assume very little, don't have many dependencies themselves, and opt for simple/robust API over being efficient. The API user can always recode the API for efficiency in their use c…

This tends to be mainstream opinion today: figure out the timeless essence at different scales, decompose it into abstractions, freeze their interfaces so that people can start relying on them, and so on. But it doesn't seem to have helped for forty years of trying to do it. The world changes too quickly, we aren't quite as good at designing libraries as we think, the world is filled with historical accidents in inte…

Libraries do take a while to get right, but I think we can only get them right by making them as libraries. All good libraries I've seen started out as part of a vertically-integrated piece of software, but if there's currently an immature library for x, using that immature library generally puts us further along the path to getting a mature library for x than writing your own vertically-integrated implementation of x.

I'd focus on making it easier to migrate between libraries, easier to improve interfaces, and so on. (I'd argue to a certain extent that's already happened, and that's part of why we're using more and smaller libraries).

Re: Let’s Get Excited About Maintenance

#75

Earlier quoted context omitted.

This tends to be mainstream opinion today: figure out the timeless essence at different scales, decompose it into abstractions, freeze their interfaces so that people can start relying on them, and so on. But it doesn't seem to have helped for forty years of trying to do it. The world changes too quickly, we aren't quite as good at designing libraries as we think, the world is filled with historical accidents in inte…

I agree. It's especially pungent in JavaScript, in which the average 'JavaScript developer' is playing some perverse game of library pokemon.

Further thought: this is a similar problem to creating too many standards. https://xkcd.com/927/

Re: Let’s Get Excited About Maintenance

#76
post #15

Earlier quoted context omitted.

You have obviously not been a developer for very long. I commonly use code that is 20 years old. Of course that code is well maintained C and C++ code. This is one reason the not acquiring or correcting technical debt is so important for the long term health of a company. Now I agree that data is king, but if you have to rewrite you code base every 5 years you are doomed.

I've been writing code for over 20 years now, longer in the industry than in academia now. The trend toward using the latest, shiny new thing seems to me to have accelerated, too. I would like to go back to a job where I work on code that includes decades old C and C++. Unfortunately those jobs tend to pay significantly less than others I can get.

I have used my share of shiny new things, I have created many shiny new things. But you can not build a society based on shiny new things. At a certain point the churn rate gets too high.

A friend of mine is working for an internet security company that seems to have the enlightened attitude towards software, everything is test driven and the majority is C++ and Java. This code will be around in 20 years, and will bring in millions of dollars of revenue with minimal maintenance.

Re: Let’s Get Excited About Maintenance

#77

(tangentially related to this article) I have recently come to realize that, at least in my world, source code older than five years is basically doomed. Developers simply refuse to work on it. The code that makes it to five years is extraordinary as most of it "dies" before reaching the eighteen month mark. As a result I have recently been shifting my view to support replace-ability vs maintainability whenever possi…

>Most current trends seem to be towards increasing baggage. (docker) I'd disagree, docker for example makes it easier to create infrastructure as code which in turn makes it easier to replace pieces of that infrastructure. Same with micro-services which allow you to eventually replace isolated pieces of your infrastructure. The more modular and isolated pieces of code and infrastructure are the easier they are to rep…

Docker is a step backwards in terms of how transparent/code-ey your infrastructure is - a docker container is very opaque and you easily end up duplicating things between multiple containers in slightly different ways, whereas e.g. puppet was much more friendly to DRY.

Re: Let’s Get Excited About Maintenance

#78
post #6

While maintenance is certainly undervalued, I don't think that means innovation is overrated.

I think there is a lot of fake innovation happening these days. I bet if the programmers of the 70s had had the same amount of computing resources available as we have now they would have built great systems even with the tools available then. Other than the cloud and more computing and network power I don't think software development has really moved forward much.

If as a system is small enough for a single programmer to hold in their head, you can remove a lot of layers and be maybe 10x more productive. Those '70s systems were all built like that. But eventually you reach the limits where a system is too big for that and you have to take the hit and build it collaboratively; it's also the only way to get systems that are maintainable in the long term.

Re: Let’s Get Excited About Maintenance

#79

(tangentially related to this article) I have recently come to realize that, at least in my world, source code older than five years is basically doomed. Developers simply refuse to work on it. The code that makes it to five years is extraordinary as most of it "dies" before reaching the eighteen month mark. As a result I have recently been shifting my view to support replace-ability vs maintainability whenever possi…

You haven't worked in a large company. :-) Much of the code behind your phone, the train system, chain restaurant ordering and any paper bill you get is likely 10+ years old. These companies undertake 5-year programs to replace ancient systems, and the 5-year programs frequently fail, and run late when they don't.

Yup, been through a couple of those. What tends to happen is the very senior engineers get architecture-itus and believe they'll actually be able to create this wonderful, flexible architecture that will withstand any future req change. Millions of dollars later, it's tossed in the trash and the old system is still selling, but customer retention is so high a focus at this point to stem the tide of exodus that all the developers do is put out fires now.

Re: Let’s Get Excited About Maintenance

#80

(tangentially related to this article) I have recently come to realize that, at least in my world, source code older than five years is basically doomed. Developers simply refuse to work on it. The code that makes it to five years is extraordinary as most of it "dies" before reaching the eighteen month mark. As a result I have recently been shifting my view to support replace-ability vs maintainability whenever possi…

I don't share the same sentiment. I routinely see active code being supported that 10 to 20 years old. Granted, it's no joy to work on, but it does get maintained.

I'm curious what kind of environment you work in where where most stuff stops being used after 18 months...

Post reply on HN