Software design gets worse before it gets better
61–70 of 145 posts
Re: Software design gets worse before it gets better
#62Earlier 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.
Re: Software design gets worse before it gets better
#63Earlier 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.
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
#64good 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…
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
#65What 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…
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
#66Earlier 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.
Re: Software design gets worse before it gets better
#67To 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.
> 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.
Re: Software design gets worse before it gets better
#68Earlier 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.
Re: Software design gets worse before it gets better
#69Earlier 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..
Re: Software design gets worse before it gets better
#70Earlier 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…
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?