4 ms·
This article presupposes that this software crisis actually exists or is a significant problem. The crisis is all this these things: Projects running over
by wvenable 2y ago
This article presupposes that this software crisis actually exists or is a significant problem. The crisis is all this these things:
Projects running over-budget
Projects running over-time
Software was very inefficient
Software was of low quality
Software often did not meet requirements
Projects were unmanageable and code difficult to maintain
Software was never delivered
Now take the word "software" out and how many human endeavours have one or all of these things? And then how much software is actually pretty great? We tend only see the failures and the flaws and success is just a baseline that we completely ignore even as it gets continuously better.
When we press the power button on our computer and it gets to a desktop, our computer has already run through hundreds of abstractions. Just at that desktop it is already the most complicated machine we have or will interact with all day. This happens billions of times a day, all across the world, and mostly flawlessly. And that's just one tiny example.
- jdbernard 2y agoThe thing that is unique about software is the lack of physical constraints which serve as a natural forcing function or filter on quality. With a bridge, for example, at some level it must meet a minimum bar of structural integrity, quality of materials, etc. or it will fall over from its own weight. As a cook, there is a bare minimum I have to hit with the quality of my ingredients and skill of preparation in order for the food to be palatable and edible. No such limits exist on software beyond maybe performance and memory constraints. But both of those are in abundance, so we can and do patch over crap endlessly. Every one of us has had that moment where we think or say, "how does this even work?" But until the user hits the wrong edge case they have no idea how rickety the underlying code is. > This happens billions of times a day, all across the world, and mostly flawlessly. No, I'd argue it's much more common for there to be flaws. They're just not obvious. They're random crap like my phone continuing to vibrate after I've answered the call until I get another call or text. Or options disappearing from a web app because something didn't load 100% correctly. Or the joys of flaky Bluetooth pairing. The list is endless. "Have you tried turning it off and on again" is evidence of this. It's normal for software systems to get into such inscrutably subtle bad states that the only fix is to wipe everything and reload from scratch.
- wvenable 2y ago> No, I'd argue it's much more common for there to be flaws. They're just not obvious. They're random crap like my phone continuing to vibrate after I've answered the call until I get another call or text. This is kind of what I'm talking about. The absolute massive complexity within your device that you and billions of people to seamlessly make calls from anywhere in the world to anywhere in the world with devices made by all different companies using infrastructure made by all different companies and it all works so incredibly well that we mostly take it entirely for granted. But yes, sometimes the phone doesn't stop vibrating.
- adamrezich 2y agoOne big difference between software and everything else is that software is built on top of other software, on top of other software, in an ever-increasing stack of abstractions and "good enough". This stack grows faster in software than in any other domain, because, as jdbernard said above, there's a lack of physical constraints preventing this from occurring. As this stack grows and grows, more points of failure are introduced, which can cause emergent, unexpected bugs and issues, which are hard to diagnose and pin down, because doing so involves traversing the stack to find the root cause(s). It's one thing to appreciate the natural world around us and how it all seems to work together flawlessly to provide the reality we all experience together—but that's because it's natural, not artificial, like the world of software we have created. When things work less than perfectly in software, there are human causes behind it, which, once identified, could be resolved in order to improve everyone's lives. But instead, most people share your "good enough—it's a miracle it all works!" mentality, which causes acceptance of any and all software issues, which leads to further issues down the line as we say "good enough" and build yet another layer atop it.
- wvenable 2y agoWhat I've noticed is that most issues are at the leaves. Abstractions that have existed for a long time and that are used heavily tend towards being more solid over time. (And more documented, well known, etc) It's the stuff at the edges that appears to be less reliable but that's mostly because it's new. It doesn't really feel like that is getting worse though. We are constantly interacting with more and more software than ever before but it's not like everything is broken. The fact that you can reliably make a phone call is far more significant than the fact that the vibration doesn't stop. Both are build on ever-increasing stacks of abstractions. The difference in that example isn't some emergent complexity -- it's just that one is more important than the other. There are lots of analogies in the physical world where less-important things are crappier than more important things. We don't consider that some crisis of abstraction.
- deleted 2y ago[deleted]
- asdfman123 2y agoThe article doesn't do a good job of explaining what they determine the actual crisis is. Complexity in and of itself isn't a problem. The problems you listed, however, are. But I don't think that's the real motivation for articles like these: the real motivation is that things just seem out of hand. But I think as an experienced programmer you have to balance that feeling of overwhelm with what needs to be done. It's taken me a while to arrive at this conclusion, but I believe it's important. Things will never be completely figured out and you have to be okay with it.
- wvenable 2y agoI think being a software developer is always being in conflict with reality. Most of our job is logic and rules. Preciseness and completeness. Reality, however, is full of people, chaos, and change and we are uncomfortable by that. I think this is why programmers have such strong opinions on languages, tools, and techniques. Over the years I've started to tune out articles that say everything is doomed or articles that propose the silver bullet to fix everything. Things are not terrible -- they are, in fact, always getting better. It's never been a better or easier time to be a software developer. But, because of that, the problems we have to solve are harder. The demands are greater. I think this appears to many like we're stuck in place because we always feel like we're behind the 8 ball. The appetite for software is insatiable.
- marcosdumay 2y ago> how many human endeavours have one or all of these things? You want a binary answer as in "it never happens with X"? Because for most kinds of project, we say it didn't go well when 1 or 2 of those happen, while we declare a victory in software if we manage to avoid 2 of them. > And then how much software is actually pretty great? And now I'm curious about your bar for "pretty great" software. This is obviously subjective, but most people wouldn't look at any practical software and call it great.
- wvenable 2y ago> This is obviously subjective, but most people wouldn't look at any practical software and call it great. This what I think is insane. We interact with probably thousands of pieces of software every day (and I'm probably off by an order of magnitude) and none of it is great? What is the bar here? It's funny that something that was absolutely amazing yesterday is no longer even so much as great today. I can instantly connect to a remote server from my phone, type some text, and generate a pretty good poem about my cat and all of that is already "meh".
- denton-scratch 2y ago> generate a pretty good poem about my cat I do not consider a text generator to be the pinnacle of "great software", regardless of how well the code was written. I don't think "meh" is the wrong word.
- wvenable 2y agoExactly my point! A statistical text generator trained a vast majority of the available content on the Internet and is able to understand natural language commands to generate content on any available subject is bloody amazing. Literally five minutes after this absolutely crazy-ass technology was released to the world, it's already the baseline.
- AdieuToLogic 2y agoYou make great points. Most of which you enumerate, if not all, can be traced back to two fundamental concepts; communication and understanding. Communication because this is how understanding can be propagated and the lack thereof remedied. Understanding because this is fundamental to the success of any endeavour. Without it one or more of the symptoms above will manifest. With it, they may still, but at least there can exist a pathway to success. In my experience, the majority of problems in the software engineering industry are people problems. Not technical, nor technology, nor process problems. This is why communication and understanding are vital to success.
- shrimp_emoji 2y ago> Just at that desktop it is already the most complicated machine we have or will interact with all day. Except for your brain manipulating, and taking signals from, and reasoning about, the computer. ;)