←back to thread

413 points martinald | 8 comments | | HN request time: 0s | source | bottom
Show context
simonw ◴[] No.46198601[source]
The cost of writing simple code has dropped 90%.

If you can reduce a problem to a point where it can be solved by simple code you can get the rest of the solution very quickly.

Reducing a problem to a point where it can be solved with simple code takes a lot of skill and experience and is generally still quite a time-consuming process.

replies(17): >>46198698 #>>46198714 #>>46198740 #>>46198844 #>>46198931 #>>46198964 #>>46199323 #>>46199413 #>>46199922 #>>46199961 #>>46200723 #>>46200892 #>>46201013 #>>46202508 #>>46202780 #>>46202957 #>>46204213 #
loandbehold ◴[] No.46198714[source]
Most of software work is maintaining "legacy" code, that is older systems that have been around for a long time and get a lot of use. I find Claude Code in particular is great at grokking old code bases and making changes to it. I work on one of those old code bases and my productivity increased 10x mostly due to Claude Code's ability to research large code bases, make sense of it, answer questions and making careful surgical changes to it. It also helps with testing and debugging which is huge productivity boost. It's not about its ability to churn out lots of code quickly: it's an extra set of eyes/brain that works much faster that human developer.
replies(9): >>46198859 #>>46198917 #>>46200183 #>>46201563 #>>46202088 #>>46202652 #>>46204053 #>>46204144 #>>46204151 #
1. locknitpicker ◴[] No.46202652[source]
> Most of software work is maintaining "legacy" code, that is older systems that have been around for a long time and get a lot of use.

That's not the definition of legacy. Being there for a long time and getting lots of use is not what makes a legacy project "legacy".

Legacy projects are characterized by not being maintained and having little to no test coverage. The term "legacy" means "I'm afraid to touch it because it might break and I doubt I can put it back together". Legacy means resistance to change.

You can and do have legacy projects created a year or two ago. Most vibecoded apps fit the definition of legacy code.

That is why legacy projects are a challenge to agentic coding. Agents already output huge volumes of code changes that developers struggle to review, let alone assert it's correctness. On legacy projects that are in production, this is disastrous.

replies(2): >>46202811 #>>46203990 #
2. tarsinge ◴[] No.46202811[source]
What you list are common characteristics encountered in legacy systems, but what makes it legacy is a business decision of declaring it obsolete and in maintenance mode, and so that no money or time to be invested in it. Old systems that continues to evolve are not legacy, like say Linux, and yes like you say a project that is only one year old can be declared legacy. Resistance to change is only an economic variable that drives the decision. Vibecoded apps fits the definition because the developer is unlikely to want to invest more time in them for different reasons.
replies(1): >>46203294 #
3. locknitpicker ◴[] No.46203294[source]
> What you list are common characteristics encountered in legacy systems, but what makes it legacy is a business decision of declaring it obsolete and in maintenance mode, and so that no money or time to be invested in it.

No, not necessarily. Business decisions are one of the many factors in creating legacy code,but they are by no means the single cause. A bigger factor is developers mismanaging a project to the point they became a unmaintainable mess. I personally went through a couple of projects which were legacy code the minute they hit production. One of them was even a proof of concept that a principal engineer, one of those infamous 10x types, decided to push as-is to production and leave two teams of engineers to sort out the mess left in his wake.

I recommend reading "Working Effectively with Legacy Code" by Michael Feathers. It will certainly be eye-opening to some, as it dispels the myth that legacy code is a function of age.

4. theshrike79 ◴[] No.46203990[source]
So a project that's still using Java 1.6 and has perfect test coverage and some poor developer is paid to maintain it (but NOT upgrade it!) is not "legacy" in your book?

Then we disagree on the definition.

"Legacy" projects to me are those that should've went through at least two generational refactorings but haven't because of some unfathomable reason. These are the ones that eventually end up being rewritten from scratch because it's faster than trying to upgrade the 25 year old turd.

replies(2): >>46210577 #>>46216932 #
5. mekael ◴[] No.46210577[source]
I've predominantly worked in two industries, healthcare/public health and insurance where policies terms are measured in decades. The software for both ranges from 20 to 40 years old, and it hasn't been upgraded because to do so poses an existential risk to either the business or, in the case of healthcare, to human life. Upgrades are measured in terms of human generations because of said risk, but I wouldn't call these systems legacy due to not moving beyond java 1.6.

also, the Hyperion Cantos was a great series.

6. locknitpicker ◴[] No.46216932[source]
> So a project that's still using Java 1.6 and has perfect test coverage and some poor developer is paid to maintain it (but NOT upgrade it!) is not "legacy" in your book?

If a project is perfectly maintainable and developer teams are confident they can roll out any change they see fit with total confidence without having to risk nasty regressions or work around any pain points, then obviously it is not a legacy project as per definition.

If instead you have services running on Java25 that you can't touch a code path without breaking it or knowing it broke, that is a legacy project.

It is not about the age of a framework. It's about the ability to maintain it. Legacy is synonym with being unmaintained and unmaintainable. Not age.

replies(1): >>46222800 #
7. theshrike79 ◴[] No.46222800{3}[source]
If someone maintaining a project that's 25 years old and hasn't had a complete overhaul is "confident" about anything, they must be the one who originally wrote it =)

At least that's my experience. Anyone else brought in during the last 5 years is usually terrified of changing anything because there are so many obscure corners and dependencies nobody can predict before stuff just breaks down.

replies(1): >>46228889 #
8. locknitpicker ◴[] No.46228889{4}[source]
> If someone maintaining a project that's 25 years old and hasn't had a complete overhaul is "confident" about anything, they must be the one who originally wrote it =)

You are failing to understand that the key factor even in your example is maintenance, not age. You can and often do have legacy projects that use the latest and greatest frameworks. That's not the differentiating factor.

> At least that's my experience. Anyone else brought in during the last 5 years is usually terrified of changing anything because there are so many obscure corners and dependencies nobody can predict before stuff just breaks down.

The obscure corners and dependencies are the output of lack of maintenance, not age. That's why you can and often have brand new projects that are unmaintainable, and dismissed as legacy.