Why do software developers love complexity?

18 points by MatheusRich


amw-zero

Simplicity is not actually possible, especially in the face of certain constraints. Performance being the prime example.

Simplicity is a false idol. You just have to write the logic that’s necessary and try to have it not collapse under its own weight as much as possible.

Schnapster

At $dayjob, it’s simple: Engineers loved complexity because it was expected and rewarded. The career skill matrix had dozens of positive mentions regarding building and handling “complex” software and “complexity”, especially in the Senior+ levels, and zero mentions of simplicity. This led to absurd and ridiculously overengineered solutions by engineers looking to fill their promotion dossier.

hwayne

I’m tired of people lazily blaming software complexity on things like “marketing” and “developer boredom” as of it’s 100% personal preference. The biggest reason software is complex is because it’s solving complex problems. Oh you’re just making a simple CRUD app? Compliance needs you to store a complete record of every change in the database, but also permanently delete the whole record on a GDPR request. Bam, complexity.

It’s telling that his example of a “real complex” thing is a stone pyramid. The high rise I live in is unimaginably more complex than a pyramid. That’s because it houses a thousand living people in half an acre of land. The great pyramid is simpler, but houses only one dead person in 13 acres. Complexity serves a purpose!

landon

I don’t think this is about complexity, it’s about complication

Complexity happens because problems are hard and multifaceted, complication happens when the solution to one problem starts to accrete solutions to other problems.

k749gtnc9l3w

The article manages to mention the existence of complex evolving requirements … but then kind of ignores that this has even been mentioned?

The additional detail that not changing existing workflows while adding new features has value (and this also leads to complexity) is fully skipped, though.

Of course, some kinds of complexity hurts the stability and often even leads to externally-forced reprioritisation between requirements — but I don’t believe that the distinction can be discussed without recognising that some of complexity is good.

Student

Time to self flagellate over the sin of stacked software

schneems

I’m reminded of this study showing people inherently prefer additive solutions even when they are suboptimal https://www.weforum.org/stories/2021/04/brains-prefer-adding-sustainability/

carlana

The simple alternative is just around the corner: sprinkle vanilla JavaScript where it’s needed and don’t build your identity around a framework.

I am a certified React hater, but people use React for a reason! The reason is that React shifts complexity out of your system and into theirs. Yes, for some cases React also adds additional complexity that isn’t needed, but overall, if you have a medium sized site you can win the tradeoff by making Facebook think about these problems instead of doing it yourself. A site of even modest complexity will need to have conventions to make the JavaScript manageable, and the conventions eventually approximate a framework.

unwind

I think simplicity is often “just” a perspective. I mean, what’s got the fewest moving parts: a bicycle, a tricycle, or a unicycle? The unicycle! So simple, so elegant. But it’s hard as hell to use it correctly. Triple the number of wheels, though, and even a toddler can’t go wrong. I’ve never ridden a Segway but they sure look simple to ride. Complicated to build, sure, but simple to ride.

Maybe that’s a trite example. But I do feel some things called simple are easier to misuse. There are times I wish I had grabbed scissors instead of a knife. You could say scissors handle the edge cases a little more safely. We don’t all have the faultless bladework of a fishmonger or a sushi chef.

edk-

IME the problem has very little to do with people liking complexity. It’s just that it’s much easier to get over the line by adding complexity. I think the way people are taught software engineering sometimes makes things worse, but even then, it’s not as though anyone has a binary choice between making things needlessly complex or not. Making things simpler is hard and they haven’t practised it, and in a typical business setting it also takes a huge amount of time nobody is going to give you.

zipy124

Once again strangle loop conferences have a talk which perfectly answers this I feel, by rich hickey - simple made easy (https://www.youtube.com/watch?v=SxdOUGdseq4)

aryeh

Love complexity?

  1. Because the problem domain being modeled is likely complex.
  2. Because most programmers know no other way to model complex behavior other than as lines of code organized into functions, subroutines and modules, that inherently approach a big ball-of-mud as size increases.
  3. Because most programmers only know functional decomposition to model complexity, typically applied through a process of “hack it till it works”.

Of course now we have AI that only knows the same.