Live data from Hacker News

Software design gets worse before it gets better

tidyfirst.substack.com

31–40 of 145 posts

Re: Software design gets worse before it gets better

#31
post #9

Earlier quoted context omitted.

I wonder how this translates to today's microservice craze that is more of a infra/devops/org decision that leaks into the software design in various imo detrimental ways. I can certainly see scenarios where merging microservices could unclog the pipes immensely - but I guess that could be construed as a rewrite.

Infra, devops, and (software engineering) org decisions ARE part of software design. Application layer is not the only consideration worth prioritizing design time over. Microservices is just a buzz word for an overly prescriptive (thankfully waning in popularity) type of distributed system. When you are developing a distributed system, the infrastructure is a primary consideration that is potentially even more impor…

Sure. But the field looked a lot different in 2000 than today, and the weight of each of these have shifted vastly along with different hypes, trends, the introduction of cloud providers etc.

Microservices in particular is often decided at such an early stage and on such loose ground that in many cases it can barely be called an intentional software design, but rather something more akin to picking a perceived one-size-fits-all template. But it does then certainly leak into everything else - completely unnecessary or not. Which is why I'm asking that question.

Re: Software design gets worse before it gets better

#32
post #8

Earlier quoted context omitted.

> I've just spent years wrestling with someone else's poorly written, ill-intentioned code, bringing it into line. I've taken the above approach of slowly reworking it. Sometimes I wonder if I just kept the tests and jettisoned large bits of it if I'd be better off? That's the main reason we have this discussion in the first place IMO. There is no one right answer to the question.

Which is why I find folks that throw out Joel's article to be a little black and white. Like "never rewrite anything from scratch". It takes many years to develop good intuition around this stuff though, so I appreciate that as a first approximation. It can get a little dogmatic amongst senior folks though.

When it comes to a whole application rewrite, I'm pretty certain you should at least be much closer to "never ever rewrite" than "in some cases rewriting makes sense"

If you are talking about refactoring or changing/replacing parts of a system - that's not the same thing. At least to me

Re: Software design gets worse before it gets better

#33
post #17
post #2

https://www.joelonsoftware.com/2000/04/06/things-you-should-...

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

Re: Software design gets worse before it gets better

#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 incrementally out of the local maximum to reach a different local maximum. I think programmers would get that metaphor a lot more easily than the "buying widgets for a new factory" metaphor.

I do like how the article puts the spotlight on designing the process of change: picking the route, picking the size of the steps, and picking the right spot to announce as the goal. That gives me a lot of food for thought about the changes my team is contemplating right now.

Re: Software design gets worse before it gets better

#36
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…

Yeah, it has a good point to make (change means abandoning local maxima), but overplays its hand.

The curve picture feels like a false idol, as soon as he starts doing TA on it, the carriage is well in front of the horse

Re: Software design gets worse before it gets better

#37
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…

What a wonderfully constructive comment. This is a great model for me to remember when I encounter things I like the substance of but dislike some of the specifics. Thank you!

Re: Software design gets worse before it gets better

#38
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 perpetuated by UI designers on hallucinogens.

Are these browsers like Chrome that are elaborate ad dispensing machines really improvements from the browsers of yore? IE 4 may have sucked by modern standards but it also didn't forward every URL I visit to Google.

I've been around since the beginnings of the WWW and it's reached the point where I am struggling to understand how to navigate these software "improvements". For the first time I have felt like my elderly parents using technology. I haven't gotten stupider; the software has become more difficult to use. It has now become some sort of abstract art rather than a tool for technologists.

Re: Software design gets worse before it gets better

#39
I mainly agree although I think that the trough of despair often comes after an initial bump. At first when designing the new system, you pluck the low hanging fruit of improvement for a small subset of the system. There is no dip yet -- things are just getting better. But when you start migrating the rest of the system, you inevitably do hit that dip and descend into the trough of despair before climbing back out.

The art is to design things in such a way so that a minimum amount of time is spent in the trough.

Re: Software design gets worse before it gets better

#40
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.

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.

Post reply on HN