Live data from Hacker News

Software design gets worse before it gets better

tidyfirst.substack.com

61–70 of 145 posts

Re: Software design gets worse before it gets better

#62
post #51

Earlier quoted context omitted.

Evolution is a satisficer not optimizer. All major trophic level breakthroughs are powered by evolving a reserve of efficiency in which mult-step searching can occur. multicellular life, collaboration between species, mutualism, social behavior, communication, society, civilization, language and cognition are all breakthroughs that permitted new feature spaces of exploration that required non-locally-optimal transiti…

Wow, very well put. Any suggestions for academic papers, books, or even online resources on these topics would be greatly appreciated.

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9372954/

Re: Software design gets worse before it gets better

#63
post #51

Earlier quoted context omitted.

Evolution is a satisficer not optimizer. All major trophic level breakthroughs are powered by evolving a reserve of efficiency in which mult-step searching can occur. multicellular life, collaboration between species, mutualism, social behavior, communication, society, civilization, language and cognition are all breakthroughs that permitted new feature spaces of exploration that required non-locally-optimal transiti…

Wow, very well put. Any suggestions for academic papers, books, or even online resources on these topics would be greatly appreciated.

This is related, and it is the paper that lives constantly rent free in my head. I think it will retroactively be viewed as revolutionary: https://www.alexwg.org/publications/PhysRevLett_110-168702.p...

Basically, intelligent behavior is optimizing for "future asymptotic entropy" vs maximizing any immediate value. How intelligent a system is then become a measure of how far in the future it can model and optimize entropy effectively for.

(updated with pdf link)

Re: Software design gets worse before it gets better

#64
post #18

good design and implementation requires skilled people. you don't get either with bottom of the barrel pay grades. something I have noticed in this industry is that big companies think they can outsource their staffing issues and "save on labor". But in the end they pay more in management of outsourced assets, inevitable maintenance of poorly designed and implemented software, delays in delivery, and of course the ch…

You don't necessarily get them at high pay grades, either. I know people making fat salaries who truly can't manage to write anything decent, it's all a big JS monstrosity with 500 MB of broken dependencies and six build tools that all jump major versions every eight weeks.

Salary has long since been disconnected from skill, ever since cheap money flooded the industry, and easier abstractions made it seem like "everyone can code". Perhaps "fog a mirror" shouldn't be the only programmer criterion.

Re: Software design gets worse before it gets better

#65

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…

Bad code is hard to read. Good code is easy to change.

That's it, I think. Then you recurse up into architecture.

Bad architecture is hard to follow. (spaghetti code) Good architecture is easy to change.

Yes, this means you can have code that's neither bad (it's easy to read) nor good (but still hard to change). In the past I've called this "lasagna code" - the layers are super clear, and it's easy to follow how each connects, but they're far too integrated to allow for any changes.

It's harder to phrase on the level of "software", but mabye something like:

Bad software is hard to use. Good software does its job and then gets out of the way.

Re: Software design gets worse before it gets better

#66
post #50

Earlier quoted context omitted.

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

Evolution regularly ends up in local optima that it struggles to get out from. Species go extinct all the time when there's no evolutionary path that solves its problems.

[deleted]

Re: Software design gets worse before it gets better

#67
post #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.

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

> The evolution disagrees.

It’s not an either/or. Vast modularized localized improvement allows for the ability to prune and select what does and doesn’t work.

https://hbr.org/2020/01/taming-complexity

Re: Software design gets worse before it gets better

#68
post #50

Earlier quoted context omitted.

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

Evolution regularly ends up in local optima that it struggles to get out from. Species go extinct all the time when there's no evolutionary path that solves its problems.

I didn't mean to say that evolution avoids local optima, but I wantend to say that it doesn't have to get "trapped", in the sense that it was able to produce such complex organisms as humans..

Re: Software design gets worse before it gets better

#69
post #68

Earlier quoted context omitted.

Evolution regularly ends up in local optima that it struggles to get out from. Species go extinct all the time when there's no evolutionary path that solves its problems.

I didn't mean to say that evolution avoids local optima, but I wantend to say that it doesn't have to get "trapped", in the sense that it was able to produce such complex organisms as humans..

Right, but it could well be that there is some other greatly superior organization of life toward which there exists no evolutionary path.

Re: Software design gets worse before it gets better

#70
post #51
post #50

Earlier quoted context omitted.

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

Evolution is a satisficer not optimizer. All major trophic level breakthroughs are powered by evolving a reserve of efficiency in which mult-step searching can occur. multicellular life, collaboration between species, mutualism, social behavior, communication, society, civilization, language and cognition are all breakthroughs that permitted new feature spaces of exploration that required non-locally-optimal transiti…

I didn't say that evolution finds the optimal state, just wanted to highlight how far it was able to go, much farther it seems.. (like evolution of the eye)

But your comment was refreshing, could you briefly expand on the "multicellular" life part? Did you mean that it enabled more non-locally-optimal transitions, or that it required them to appear?

Post reply on HN