Live data from Hacker News

Software design gets worse before it gets better

tidyfirst.substack.com

41–50 of 145 posts

Re: Software design gets worse before it gets better

#41
post #33
post #17

Earlier quoted context omitted.

In context that's a pretty funny article to see how it didn't survive. Netscape pre 5 or 6 was a mess. It was a downloadable desktop application that kept getting pushed to deliver new features with a struggling UI framework. Additionally, I would imagine that the group delivering this was rather small in respect to the size of the task. They didn't have CI/CD, git, etc to give feedback. This reeks of an overmainaged…

To me this article is super valid for most software projects. As for the Netscape anecdote, I wouldn't put too much weight on that part. We do not know the extent of it, we do not know if it achieved its goals, and we absolutely can not say whether or not the alleged rewrite contributed to or affected the evolution of the product into firefox and eventually chrome etc

I would go as far as to say the rewrite and aggressive reconcepting of Netscape spurred the growth of newer browsers. NS 6 added too much that people didn't want or didn't want in that context.

My comment above was trying to point out: NS6 rewrite wasn't the only browser to start back from scratch at that time.

What I think Spolksy was advocating for: Don't try to completely rewrite things for fun, there are a lot of dark corners there.

Re: Software design gets worse before it gets better

#42
post #25

Earlier quoted context omitted.

Only if people wouldn’t switch jobs every 2 years. Only if new joiners wouldn’t feel like they have to “show up with something” making existing stuff obsolete. Well not blaming people or companies just thinking out loud.

Only if companies compensated fairly instead of incentivizing 2 year job hopping. Only if companies treated workers with dignity and not like they’re disposable cogs. Only if companies understood value of standards that would prevent new joiner from wreaking havoc.

I've gotten two raises in my entire tech career for actually staying at a company, and at one of them I was laid off six months later anyway. At this point any company that doesn't want me to eventually job hop will need to have an advancement structure laid out from day 1.

Re: Software design gets worse before it gets better

#43
post #25

The multi-dimensional nature of this problem makes it extremely fascinating to me, even twenty years into my career. There's a certain dopamine hit you get for voluntarily trudging into the trough of despair, pushing the Sisphyean boulder of better design uphill in the optimistic belief that you can do better, and then actually arriving at something slightly better. Way more fun than conceptualizing programming as du…

Only if people wouldn’t switch jobs every 2 years. Only if new joiners wouldn’t feel like they have to “show up with something” making existing stuff obsolete. Well not blaming people or companies just thinking out loud.

This kind of stuff can happen in open source projects too

Re: Software design gets worse before it gets better

#44

What is "better software" though? On one hand you have guys like the OpenBSD team that work on Mostly Boring Things and making serious inroads at improving software quality of Mostly Boring Components that power the hidden bits of the Internet that go relatively unnoticed. On the other hand, you have "improvements" from Apple and everyone else that involve an ever-changing shell game of moving around UI widgets perpe…

First paragraph: “better at supporting new features.”

Further down, he talks about changing the structure of the software in order to support planned features, etc.

So putting it all together, “better” == more featureful at lower cost with reduced marginal pain (to the developers) of further expansion.

I’d say “better” should mean enabling users to achieve their goals with minimal friction for the user (i.e., program p is designed to allow users do task (or set of tasks) t faster/better/more efficiently/whatever). But of course I would say that, I’m a user of software, not a developer of it.

Consider the notion of a Mac-assed apps. They make life as a Mac user much nicer because they integrate so well with the environment and other native apps. But lo! L unto man was revealed his Lord and Savior Electron. Much nicer for developers than having to port programs across several different native environments. So native goes the way of the dinosaur (with some exceptions, of course). That’s a massively canned just-so story, of course, so don’t take it too seriously as actual analysis.

But the moral of the story is that, as a user, it’s endlessly fascinating to me, watching developers talk about development and how much their focus tends towards making their lives as developers easier, even at the cost of sacrificing users’ experiences and expectations as guiding principles.

Love him or hate him, but it’s one of the things that I appreciate Linus Torvalds for emphasizing occasionally: computers are tools people use in order to get things done (for whatever purposes, including recreation).

(That said: There is an irreducibly human element of play involved here for developers too. And even non-developers can be fascinated by computers in/for themselves, not just as sheer tools you’d ideally not even notice (in the Heideggerian sense of tools ready at hand versus present at hand). I’m one of those outsiders. No shame in it.)

Re: Software design gets worse before it gets better

#45
post #35

Metaphors get abused in this article in a confusing way, and I don't think it explains why the quality curve goes downward at first -- the initial drop in quality is compared to an initial capital investment? what? -- but I agree with the truth of it. I think the article could be a lot shorter and easier to understand if it simply said that the current design is in a local maximum, and you have to work your way incre…

Appealing to a local maximum more or less repeats the claim.

Why would the current design be at a local maximum in the first place?

Re: Software design gets worse before it gets better

#46
post #35

Metaphors get abused in this article in a confusing way, and I don't think it explains why the quality curve goes downward at first -- the initial drop in quality is compared to an initial capital investment? what? -- but I agree with the truth of it. I think the article could be a lot shorter and easier to understand if it simply said that the current design is in a local maximum, and you have to work your way incre…

Appealing to a local maximum more or less repeats the claim. Why would the current design be at a local maximum in the first place?

because otherwise you'd improve it incrementally?

Re: Software design gets worse before it gets better

#47
post #34

Why does that make me think about x11->wayland core?

Because Wayland is worse than X11. Unfortunately, it is true that sometimes after your software design gets worse it gets better, but other times after it gets worse it gets worse. It's not correct to assume that something will get better just because it is currently worse.

Re: Software design gets worse before it gets better

#48

I always think of projects as something you constantly iterate on, rewriting in my experience has always been a mistake.

A product is something you can iterate on. A project is a unit of work, which can be towards a product, but usually has some kind of end condition.

Re: Software design gets worse before it gets better

#49
To boil it down simple:

People are vaguely good and competent, they leave systems in a locally-optimal state.

In general only changes that are "one step" are considered, and they allways leave things worse when you are currently in a locally optimal state.

A multi-step solution will require a stop in a lower-energy state on the way to a better one.

Monotonic-only improvement is the path to getting trapped. Take chances, make mistakes, and get messy.

Re: Software design gets worse before it gets better

#50
post #49

To boil it down simple: People are vaguely good and competent, they leave systems in a locally-optimal state. In general only changes that are "one step" are considered, and they allways leave things worse when you are currently in a locally optimal state. A multi-step solution will require a stop in a lower-energy state on the way to a better one. Monotonic-only improvement is the path to getting trapped. Take chanc…

> Monotonic-only improvement is the path to getting trapped. Take chances, make mistakes, and get messy.

The evolution disagrees.

Post reply on HN