Live data from Hacker News

The collapse of complex software

nolanlawson.com

101–110 of 304 posts

Re: The collapse of complex software

#101
post #86
post #80

I feel like it's a bit backwards. The software complexity increases because people lack the patience to tackle the existing complexity, or learn why things are complex, and prefer to believe that it can be simple, or get job done somehow, and in order to do that, they (somewhat egoistically) go their own way, which actually - barring occasional good insight - mostly increases the total complexity. The same goes for s…

I believe many software developers often tend to write software which has precisely the segree of complexity they can just barely manage. There is not many people who have the guts to build a simple straightforward step for step script. Software developers that fall into love with the beauty of their own abstractions can be a real problem.

+1, plus I'll add that I think there's organizational factors too. Overall, organizations incentivize complexity, and I'd like to point out three ways in which they do:

- One is that new systems tend to be rewarded, because people and organizations tend to associate "new" with "better". Related, people and organizations tend to associate high complexity systems with "hard work", and the transactional view of work tends to err on the side of rewarding "hard work".

- Next is that complexity digs a moat of job security. I don't think this is a bad thing, job security is good. Again, unfortunately the transactional view of work can easily devolve into "we can pay someone less to do what you do" and building a complex system is a way to counter that.

- Lastly, a story. At some point I worked on a team that quadrupled in size to tackle huge project, only to then fall into a sort of "identity crisis" because the project was done and there wasn't enough meaningful work afterwards for everyone.

This insane growth, in my opinion, was also fueled by egos. The overarching team manager seemed pretty adamant in finding more people to hire, but I don't necessarily remember us feeling understaffed. They clearly expressed they wanted to use all the headcount the company had authorized, and the primary reason they always mentioned was that we'd "lose it if we didn't use it by the end of the year".

This led to an "induced demand"-like situation. By the end of it, we had a huge team, the bigger meta-project was done, and everyone needed to find the next thing to work on and build. I saw plenty of proposals for solutions looking for a problem, and worked on some myself too before leaving.

Re: The collapse of complex software

#102

This was my favorite deep dive post on this exact topic from a few years back in the Atlantic: https://www.theatlantic.com/technology/archive/2017/09/savin...

The 911 overflow is an interesting bug. Kind of asks for a philosophy of, "Limit your build, but don't build in limits"

Once I was on a research ship, and the data acquisition system crashed on the 256th day of the year. Care to guess the issue? :)

Re: The collapse of complex software

#103

tl;dr premise = society is complex, software is complex; complex societies collapse... therefore complex software collapses, question mark, waggling eyebrows, surely makes you think etc etc. > ...Opinions expressed in this blog are mine *and frequently wrong*. Emphasis added. Equating the complexities of software with the complexities of societies (the premise of this post) is a fun and provactive blog post. Which is…

OS/360?

https://sudonull.com/post/111636-IBM-System-360-A-Failing-St...

I think we've seen this with the rise and fall of hardware vendors. Most recently with the Mobile OS ecosystem (symbian, windows mobile)

Re: The collapse of complex software

#104
post #28

I highly recommend Rich Hickey's "Simple Made Easy" talk as a way to think about software complexity. We all know that complex systems are hard to work with, but I've found his presentation very useful in understanding the nature of complexity. Understanding complexity helps being able to avoid or minimize it. For example, easy is not the same as simple, and simple changes to one part of a system can introduce great…

I've watched that video at least three times, but I still can't articulate the exact distinction he is making between simple and easy :/

Add two 10000 digit numbers by hand. That's quite simple to do, but it's certainly not easy.

Re: The collapse of complex software

#105

A legacy system exists: it’s big, it’s complex, and no one fully understands how it works. Architects are brought in to “fix” the system. They might wheel out a big whiteboard showing a lot of boxes and arrows pointing at other boxes, and inevitably, their solution is… to add more boxes and arrows. Nobody can subtract from the system; everyone just adds. In my experience this is the only safe thing to do when you don…

> the only safe thing to do when you don't fully understand the system and cannot reason about it

Well, the other option (the most sane one, in fact) would be to not mess with it until you understand it and can reason about it - but in every corporate "how long is that going to take"/"what can we do to speed this up"/"why aren't you finished yet" quick-and-dirty-ocracy, that's not an option unless you can do that in about a day.

Re: The collapse of complex software

#106
post #11

This is a problem I want to focus my life solving. I believe that software engineering can be made so simple and clear that it can be wielded by an extremely small team of engineers. I believe that there are finite and fundamental classes of problems, that underpin the vast majority of problems, that have a distinct visual representation, and that by representing these problems visually, you let your "visual coproces…

How many clever computer scientist (including me ) had this idea and vision at least once? And how many attempts by languages/DSLs/visual languages have already been tried to create?

I believe you are wrong, I'd wish you are right ;)

Re: The collapse of complex software

#107
This "software grows too complex" is certainly a culture issue, and not a software problem. It mostly comes from businesses throwing a bunch of under-skilled labor at the problem, and demanding more and more too quickly. Of course it will outgrow the ability of that team to work with, reason about, keep clean, and extend. They will get frustrated and move on, and a new group comes in, re-writes it from scratch, and so it goes.

Look at software that has been around for decades, continues to improve, never "needs" a re-write, and will never be re-written. It exists and is not uncommon. Things like the linux kernel, all the GNU utils, emacs, vim, apache, nginx, postgres. The list goes on. We know how to write software that lasts for decades, continuously improves, and doesn't need constant re-writes. You give it to skilled people who care about it, and don't put artificial corporate constraints or impose fad architectures on them.

I'm not saying the corporate model is "wrong" - it works. "Works" means it builds companies and generates profit. That is the goal. But it will not generate stable long lived well designed software. That's okay though because that isn't the goal. Sure, the poor quality cuts into the margins a bit, but not enough to matter.

Re: The collapse of complex software

#108
This is crazy. I just gave a nearly identical presentation for a series of interviews. One at AKASA, one at Scribd, and one at Panorama. Like I gave this presentation, with the exact same title 2 weeks ago to a bunch of junior engineers at these various companies. It is super timely. I’m consistently surprised how multiple people can arrive to the same point, via the same inspirational sources at the same time and reach completely different conclusions. I’ll have to write up a blog response to this article.

Re: The collapse of complex software

#109
post #28

I highly recommend Rich Hickey's "Simple Made Easy" talk as a way to think about software complexity. We all know that complex systems are hard to work with, but I've found his presentation very useful in understanding the nature of complexity. Understanding complexity helps being able to avoid or minimize it. For example, easy is not the same as simple, and simple changes to one part of a system can introduce great…

I hadn't heard that before, it's great.

I like how he states that simpler software doesn't necessarily mean fewer components (roughly quoting). Where the article argues for fewer boxes and arrows. It's hard to argue specifics, because the article isn't getting into them, but sometimes more boxes and arrows makes things simpler. If you don't have multiple boxes, what do you have? One box of spaghetti?

I also disagree with the article that engineers like complexity. I've maybe known a couple, but usually they are really junior, or really unpopular.

Post reply on HN