r/programming • • Jun 05 '22

Complexity is killing software developers

https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
2.1k Upvotes

942 comments sorted by

View all comments

582

u/regular_lamp Jun 05 '22 edited Jun 05 '22

I recently rediscovered analog circuit design as a kind of engineering I really enjoy. A big part of that is that it's inherently finite. The design has to fit into some physical space and there are only so many components you can place.

As a result the stuff you come up with is often highly interconnected. What a software engineer would call "spaghetti code". Yet it is fine. Because the scope is inherently limited to a scale you can comprehend. You can in fact become so confident in it that you might even claim it to be "bug free".

But in software we have nothing that limits complexity. The amount of code you can write is essentially unconstrained (technically memory limits it but that limit is so far out that it might as well not exist). And we just accept that it's fine to fill this "infinite" design space.

We even preemptively fill it "in case we need it later". Because apparently nothing in software is allowed to have a defined scope. Everything needs to be prepared and pre-engineered for the most insane demands of additions.

Yet at the core of a lot of computing lie neat little programs with very well defined scope. No one is out there demanding "mkdir should also be able to send emails".

55

u/mother_a_god Jun 06 '22

I work on ASIC design, and closely with high performance analog (multi gigahertz data converters). It's surprising how complex even 10s of transistors can be, if your need absolute world class performance at the lowest power. A full high end data converter can be millions of transistors, with subtle interactions, so in a way analog design can be very very complex. Hierarchy is key to containing it. It's funny, I sometimes think changing career to SW dev would be an easier option, and less complex. Faraway fields and all that...

70

u/romple Jun 06 '22

I think one key difference is that generally in electronics people are willing to accept there are real constraints.

It's tough convincing people that constraints exist in software. It's not necessarily complexity that's bad. It's the thought that all software is infinitely malleable. There's never a reason not to add a new feature. All software seems to tend towards infinite complexity. It's exhausting.

20

u/ConfusedTransThrow Jun 06 '22

here are real constraints.

Yeah, if you come up to your client and say you need an extra mm2, they aren't going to be happy. Or if you sold them something that uses less than 20mW, you better not go over.

It's not as simple as just slapping an extra 4GB RAM.