28 ms·
I don't want to sound too dismissive, but all these arguments have been brought up time and again. The move from assembler to high level languages. The introduc
by ealexhudson 11mo ago
I don't want to sound too dismissive, but all these arguments have been brought up time and again. The move from assembler to high level languages. The introduction of OOP. Component architecture / COM / CORBA / etc. The development of the web browser. The introduction of Java.
2018 isn't "the start of the decline", it's just another data point on a line that leads from, y'know, Elite 8-bit on a single tape in a few Kb through to MS Flight Simulator 2020 on a suite of several DVDs. If you plot the line it's probably still curving up and I'm not clear at which point (if ever) it would start bending the other way.
- quotemstr 11mo agoOne salient difference is that typically abstraction layers trade performance (usually less than polemicists like the article author think) for improvements in developer efficiency, safety, generality, and iteration speed. Current tools seem to get us worse results on bug counts, safety, and by some measures even developer efficiency. Maybe we'll end up incorporating these tools the same way we did during previous cycles of tool adoption, but it's a difference worth noting.
- gjsman-1000 11mo agoI think another part of this, is that Tech is perhaps the only industry that hasn't quite gotten over itself yet. Writing code is artistic the same way plumbing is artistic. Writing code is artistic the same way home wiring is artistic. Writing code is artistic the same way HVAC is artistic. Which is to say, yes, there is satisfaction to be had, but companies don't care as long as it gets the job done without too many long-term problems, and never will care beyond that. What we call tech debt, an electrician calls aluminum wiring. What we call tech debt, a plumber calls lead solder joints. And I strongly suspect that one day, when the dust settles on how to do things correctly (just like it did for electricity, plumbing, flying, haircutting, and every other trade eventually), we will become a licensed field. Every industry has had that wild experimentation phase in the beginning, and has had that phase end.
- bigfishrunning 11mo ago> companies don't care as long as it gets the job done without too many long-term problems Companies don't care as long as it gets the job done without too many VERY SHORT TERM problems. Long term problems are for next quarter, no reason to worry about them.
- gjsman-1000 11mo agoAnd they somewhat have a point. What's the point of code quality, if it delays your startup 6 months, and the startup goes under? What's the point of code quality, if it will be replaced with the newest design or architecture change in 6 months? What's the point of planning for 5 years if a pandemic or supply chain shock could muck it up? What's the point of enforcing beautiful JQuery code... in 2012? The problem isn't that companies make these tradeoffs. It's that we pretend we're not in the same boat as every other trade that deals with 'good enough' solutions under real-world constraints. We're not artists, we're tradesmen in 1920 arguing about the best home wiring practices. Imagine what it would be like if they were getting artistic about their beautiful tube-and-knob installations and the best way to color-code a fusebox; that's us.
- losteric 11mo agoWhat in the bad rhetoric is this? The trades did and still do have standards. Hell there was a whole TikTok cycle where people learned there is a right and wrong way to lay tile/grout. One way looks fine until it breaks, the other lasts lifetimes. It’s the exact same trend as in software: shitty bad big home builders hire crap trades people to build cheap slop houses for suckers that requires extensive ongoing maintenance. Meanwhile there are good builders and contractors that build durable quality for discerning customers. The problem is exploitation of information asymmetries in the buyer market.
- gjsman-1000 11mo ago> The trades did and still do have standards. Yes, they do; after regulation, and after the experimentation phase was forcibly ended. You can identify 'right and wrong' tile work, precisely because those standards were codified. This only reinforces my point: we're pre-standardization, they're post-standardization, and most pre-standardization ideas never work out anyway.
- fzeindl 11mo ago> If you plot the line it's probably still curving up and I'm not clear at which point (if ever) it would start bending the other way. I suspect when Moore‘s law ends and we cannot build substantially faster machines anymore.
- rudedogg 11mo agoOne interesting thing that most non-systems programmers don’t know is that memory and cpu performance have improved at completely different rates. That’s a large part of why we have x times faster CPUs but software is still slow. The systems people worry more about memory usage for this reason, and prefer manual memory management.
- davidgay 11mo ago> ... memory and cpu performance have improved at completely different rates. This is overly simplified. To a first approximation, bandwidth has kept track with CPU performance, and main memory latency is basically unchanged. My 1985 Amiga had 125ns main-memory latency, though the processor itself saw 250ns latency - current main memory latencies are in the 50-100ns range. Caches are what 'fix' this discrepancy. You would need to clarify how manual memory management relates to this... (cache placement/control? copying GCs causing caching issues? something else?)
- mikepurvis 11mo agoBut the machines aren't really "faster" in clock speed— for a long time now the gains have been in better and more local caching + parallelism at both the core and instruction level.
- 0xWTF 11mo ago> parallelism at both the core and instruction level Which most programs don't take advantage of.
- Legend2440 11mo ago
- imiric 11mo agoIf you haven't noticed a dramatic decline in average software quality, you're not paying attention or willfully ignoring it. The article is right. This is partly related to the explosion of new developers entering the industry, coupled with the classic "move fast and break things" mentality, and further exacerbated by the current "AI" wave. Junior developers don't have a clear path at becoming senior developers anymore. Most of them will overly rely on "AI" tools due to market pressure to deliver, stunting their growth. They will never learn how to troubleshoot, fix, and avoid introducing issues in the first place. They will never gain insight, instincts, understanding, and experience, beyond what is acquired by running "AI" tools in a loop. Of course, some will use these tools for actually learning and becoming better developers, but I reckon that most won't. So the downward trend in quality will only continue, until the public is so dissatisfied with the state of the industry that it causes another crash similar to the one in 1983. This might happen at the same time as the "AI" bubble pop, or they might be separate events.
- 0xWTF 11mo agoIs this measureable? Like code readability scores on the GitHub corpus over time?
- sciencejerk 11mo agoMaybe. Personally I've observed an increase of major system and security failures in the past 5 years, especially failures that impact very large tech companies. You could measure these public failures and see if frequency or impact has increased.
- Legend2440 11mo agoThe number of security failures now is nothing close to the golden age of malware in the 90s/early 2000s. The #1 security exploit today is tricking the user into letting you in, because attacking the software is too hard.
- sciencejerk 11mo ago
- dlcarrier 11mo agoI blame software updates. That's when software went from generally working on release to not at all. Agile management methods set up a non-existent release method called "waterfall" as a straw man, where software isn't released until it works, practically eliminating technical debt. I'm hoping someone fleshes it out into a real management method. I'm not convinced this wasn't the plan in the first place, considering that the author of Cunningham's law, that "The best way to get the right answer on the Internet is not to ask a question; it's to post the wrong answer." was a co-signer of the Agile manifest. It'll take a lot of work at first, especially considering how industry-wide the technical debt is (see also: https://xkcd.com/2030/ https://xkcd.com/2030/), but once done, having release-it-and-forget-it quality software would be a game changer.
- marcosdumay 11mo ago> a non-existent release method called "waterfall" as a straw man The person that invented the name never saw it, but waterfall development is extremely common and the dominant way large companies outsource software development even today. The only thing that changed now is that now those companies track the implementation of the waterfall requirements in scrum ceremonies. And yes, a few more places actually adopted agile.
- jrm4 11mo agoHa. I was tasked to teach (classic) Project Management without being super-familiar. Then I had to get familiar with the new stuff; waterfall, agile whatever. They literally are all nothing but hacks that violate the basic points of actual project management. (e.g. Projects have a clear end)
- CuriousSkeptic 11mo agoFrom a PM point of view waterfall and agile can both have clear end dates. The main difference is in how they approach scope and quality to meet that deadline.
- BrenBarn 11mo ago> I blame software updates. That's when software went from generally working on release to not at all. I agree. So much software these days treats users as testers and is essentially a giant test-in-production gaffe.
- dkarl 11mo agoWe have always had, and always will have, the quality of software that people are willing to pay for.
- leshow 11mo agoThat would be the case under market conditions where buyers are making rational decisions with perfect knowledge based on all available choices. Does that sound like the system we have? To me, reality seems more like a small set of oligopolies or effective monopolies, byzantine ownership structures and a pursuit of short term profits pushing future costs elsewhere as externalities.
- username223 11mo agoThis. There are plenty of people trying to keep using Windows 10, and Microsoft is trying to force them to use Windows 11, which they do not want. The same goes for Mac OS 26. "Choice" doesn't matter.
- Ekaros 11mo agoTo me on markets where customer actually gets to choose what to buy or play the weaker options have much less success. Gaming is really one example. There is still sales, but they are lot less than expected even from big players if they don't look like good products.
- dkarl 11mo agoI didn't say we get the quality of software people would rationally pay for in a rational system, if the right people were paying for it. I said we get the quality of software that people pay for.
- jrm4 11mo agoNo. Not "willing," that implies that the options meaningfully exist. They don't. "Willing AND ABLE" works here though.
- morshu9001 11mo agoI don't think software has gotten worse, quite the opposite, but Java and OOP were mistakes.
- bowsamic 11mo agoEvery time someone says this I ask them “what is your solution for maintainable software architecture?” And they say “what is software architecture? I just write code”
- sevensor 11mo agoI’ll bite: use objects sparingly, and mainly to namespace functions that operate on data. Use inheritance even more sparingly, because it’s a nightmare to work with a poorly conceived inheritance hierarchy, and they’re so easy to get wrong. Pure interfaces are an exception, in languages where you need them. Write mostly functions that transform data. Push IO to the edge where it’s easy to swap out. Most importantly, never ever abstract over I/O. Those are the ones that leak out and cause havic.
- morshu9001 11mo agoYeah Go and Rust made the right choice of not supporting inheritance at all.
- morshu9001 11mo agoNon-OOP is pretty mainstream practice already, and it's maintainable. They even redid React. Java conceded a bit with newer features like lambdas.