8 ms·
Leaner, cleaner, less buggy, more secure, more performant, longer-lived code is obviously entirely possible. If people managed to do it at the dawn of the infor
by nologic01 3y ago
Leaner, cleaner, less buggy, more secure, more performant, longer-lived code is obviously entirely possible. If people managed to do it at the dawn of the information age surely they can do it today, with multiple decades of massive experience, not to mention the incredibly powerful tools developed in the meantime.
If its not done its because there is no money in it. In fact the opposite.
The counter-incentives to wasting time on high quality software are numerous and affect all sorts of teams. VC funded startups must get to market first or die. Fake-it-till-you-make-it is their religion. For more mature organizations too, cost and bloat is not an issue. Its a feature. The bigger the team more prestige for the managers etc. The costs are passed on to clients anyway.
How come "ruthless market forces" don't rectify this wastefulness? You'd think that codebases of superior quality will earn the keys to the kingdom. They might, eventually. In a competitive environment that is less prone to pathologies, hypes etc.
- auiya 3y agoIf the goal is to make money, you will make money. If the goal is to make quality software, you will make quality software. Sometimes those two goals are in alignment, most of the time they are at odds.
- natoliniak 3y agoin my experience, when it comes to picking two out of: quality, cost, or speed to delivery, businesses always choose speed and cost. I dont' like it, but I just grew to accept that. The reason why physical engineering seems focused on delivering quality is because of strict regulatory oversight, which for better or worse, we lack in software.
- nologic01 3y agogood quality software (say, based on well designed, documented, tested etc. building blocks) can lower costs and improve speed to delivery in the longer run (less need to refactor, fewer bugs, easy to reuse, extend etc. etc.) the trouble, empirically speaking, is that this "longer run" is not close enough to weigh on decisions :-)
- InsiderTesla 3y ago[dead]
- agentultra 3y agoAt a data-centre scale they might still. Even marginal gains in efficiency translate to large savings in power consumption, heat management, and waste. If tech companies are properly taxed and regulated for these externalities, like say consuming billions of litres of fresh water during a drought in order to train a ML model, there would be a lot more pressure for this sort of efficiency.
- iinnPP 3y agoThis is where I normally end up in the software is way too slow today discussion. Everyone claims to care about the environment until it impacts them even slightly. It's not even hard/time consuming to write good code. People are just overwhelmingly selfish and lazy. Software devs consistently contribute to the environmental problems that many software devs then complain about and pretend is only a redneck issue. The reality is that we have an incredibly serious idiot issue and there isn't a solution due to the scale of the problem and the corruption preventing meaningful change. An article the other day pointed out the problem well as well. Though it was related to the increasing lack of people who understand the code underneath the current flavour of the month bullshit framework.
- eastbound 3y ago> Software devs consistently contribute to the environmental problems It doesn’t help that schwabists try to provide indexes such as “Java consumes more than JS”. This kind of sentences, measuring the immeasurable like a square meter takes more energy than a liter, communicates “We’ll dominate you with power while understanding nothing of what you do, and tax you for using Java”. I bet it’s Facebook’s PHP lobbyists who came up with that. If heating is a problem, then by all means, tax CPU time. But I already know the tax won’t matter because software provides such an immense value to society. We already pay average engineers $800 a day! But we shouldn’t try to get rid of a language. If they knew what they were doing, they’d certainly ban NPM. But of course there are already GitHub actions and Sonar extensions publishing the CO2 consumption index of Java programs...
- 3y ago
- gtowey 3y ago> If its not done its because there is no money in it. In fact the opposite This bears repeating. It's the disease that has consumed software and is making all modern software the worst possible version of itself. I think it's the VC funding model which has driven the industry this way. Startups get millions in funding, then it's a race to make enough money to pay back those investors which leads to this. The companies have to squeeze dollars from their app as fast as possible which means anything that doesn't have a ROI metric attached to it will not get a second of anyone's attention.
- smith7018 3y agoHonestly, there are many reasons for our current situation. One is that companies aren't (usually) run by engineers; they're run by product or business people. Those types don't care about performance, website footprints, smooth scrolling, etc. They care about adding new features, getting users, and doing so as fast as possible. Another reason is that many web developers were taught that software engineering is mashing together a mixture of Node, Ionic, Bootstrap, Vue.js, Angular, jQuery, etc. to quickly make a website. No one was taught how to do things on their own so they just bundle framework after framework into their projects just to do simple things. Finally, it's not like people built highly performant software in the 90s because they genuinely embodied this article's spirit; they did so out of necessity. As soon as computers got fast enough, we stopped having to focus on micro-optimizations just to get our products to run.
- webdood90 3y ago> Those types don't care about performance, website footprints, smooth scrolling, etc they don't care because their _users_ don't care. I find these discussions are always led by engineers, shaking their fists at clouds. nobody cares! it doesn't make any money so you're just whining into the void.
- jack_h 3y agoThat's like saying only engineers care about appliances that work long past the warranty expiration; users don't so business people value engineer it and everyone except the engineers are happy. Except that's not true. Users do care they just don't have a choice in the matter. I have listened to many, many laypeople who have expressed frustration with software. They may not be able to articulate it to the extent that the quote does, but when they're stuck on 3G and they need to load a webpage that keeps timing out they get frustrated even if they don't know its because of the footprint, it's a poorly made SPA, or whatever.
- cosmic_quanta 3y ago> If its not done its because there is no money in it. In fact the opposite. Exactly my thought. Incentives are not aligned. There are industry sectors where performance and correctness have value. If you care about the software craft in the same way as the aithor (as I do!) then the best way to enjoy work is to move to such industry sectors.
- ardi11 3y agoCare to provide examples of such sectors? Thanks.
- eastbound 3y agoAnything involving hardware. Except car manufacturers.
- p00f 3y agoWhat makes car manufacturers different?
- _TwoFinger 3y agoNot PP, but I used to work for an automotive subcontractor company, and I've heard a few stories about fatal car accidents that lead to lawsuits, which proved that the car design was the reason for the accident, yet the car manufacturer just payed "damages" to the relatives (or settled out of court, maybe) and never bothered to change the design. Apparently, it was more expensive to reconfigure their production pipelines than pay for an occasional death. That said, this is probably what any big enough company would do. So your point still stands, maybe car manufacturers are no different.
- eastbound 3y agoThe infotainment system, it’s basically as safe as a web stack (and on the CAN bus).
- cosmic_quanta 3y ago
- deleted 3y ago[deleted]
- foooorsyth 3y agoQuite simply: you don’t ship code, you ship features. You don’t ship automated dependency injection. You don’t ship elegant abstractions. You don’t ship cool compiler tricks. You ship new stuff for customers that they’ll pay for. Your high unit test coverage that makes any refactor a painful slog gets in the way of shipping features far more often than the TDD zealots are willing to admit. Most of the “best practices” in the industry is unrealistic dogma created by people in post PMF, entrenched companies that no longer need to do much to print money.
- uoaei 3y agoThat's how MBAs talk, not how engineers talk.
- batshit_beaver 3y agoA conflict as old as time. Unfortunately, it's the MBA thinking that pays the company's bills. An ideal world isn't one in which either the MBAs or the engineers win. It's one in which they coexist and find a reasonable balance between having more useful features than the competition and not expending too much effort to build and maintain those features.
- foooorsyth 3y agoNo, it’s how anyone that’s actually worked in an SMB / non F-1000 / non household name company talks. Most “regular” companies need to focus on getting features out the door. I’m a software engineer, not an MBA.
- uoaei 3y agoYou are not anything until you act as something. Acting like an MBA makes you virtually indistinguishable from one. I don't care what you studied, it's what you're doing (or not) with it.
- foooorsyth 3y agoYour entire stance is no true Scotsman with ad hominem. You realize almost every YC company operates in the way I described until they become entrenched in their domain, right? Do you think pre PMF companies are bickering about unit test coverage? If they are, they’ll fail
- MarkusWandel 3y agoThere's hardware bloat too. Old fart example: In the days of analog SD TV, the "foolproof" way to feed video into your TV was an RF modulator. The "proper" way was via direct video input of some sort. The "even more proper" way was an RGB type interface. Except by the end it hardly mattered any more. RF modulators and tuners had gotten so good, that perfectly adequate video resulted from the RGB -> composite -> RF -> composite -> RGB chain. Bloat, but who cares? In an automobile, the "proper" way to charge a phone is to have a 12VDC->USB type of adapter plug. The "bloat" way is to have a 12VDC->120VAC inverter and then plug the phone's existing wall charger into that. More circuitry, but it gets the job done and it's cheap. If you like designing electronic gadgets, the "proper" way to flash an LED is two transistors and a couple of resistors and capacitors to build an astable multivibrator. The modern way is to program up a small 8-pin microcontroller. A CPU running thousands of lines of code just to blink an LED? Who cares. If your computer/tablet/phone are reasonably recent it's the same for software. It's only when your gadget is a few years old that you really see the bloat as formerly performant software "degrades" in later versions.
- tuna74 3y ago"Except by the end it hardly mattered any more. RF modulators and tuners had gotten so good, that perfectly adequate video resulted from the RGB -> composite -> RF -> composite -> RGB chain. Bloat, but who cares?" Eh, no it didn't. That would just look horrible.
- MarkusWandel 3y agoThis was with a DVD recorder unit. Composite or RF? It really didn't look that different (and both looked good, by SD video standards).
- danielovichdk 3y agoAsk yourself whether you want to be remembered for selling millions of copies next year, or leaving behind something that in time might be cherished by generations. Look outside software and see what things has been deemed quality and why. Usually the people doing quality make very few comprises and often they don't do it on purpose. Quality solely starts with yourself. Only you can guarantee within your own merits and experience what quality is. Explaining quality is thereby difficult because it is so determined by the personal traits and experience.
- chairhairair 3y agoMy personality trait: I need to feed my family.
- pdimitar 3y agoMany of us have asked themselves that and the answer is clear: we want something that will truly last. But short-term interests go explicitly AGAINST that. If I start demanding +20% more time to deliver quality the company will likely start a campaign to replace me in 3-6 months. From one age (or burnout quantity) we prioritize stability. Ironically it's only then when we can truly provide the good quality but by that time we're much more risk-averse. sighs Oh well.
- gherkinnn 3y agoI agree. And this is why I believe most of the points made by Jonathan Blow don’t matter.
- benrutter 3y agoI'm not sure how well "ruthless market forces" are allowed to operate in software. You definitely get some disrupters but for the most part I think a lack of competition is part of the problem. Microsoft Teams is one of the most buggy, unreliable pieces of software I know, but it's still the market leader in terms of share because of Microsoft's near monopoly of the office suite software world.
- Kalium 3y agoIt may be worth considering that the market is not for messaging and workspaces, but mainly for integrated business communications systems. If the integration is more valuable to customers than Slack or Zoom's smooth operation, Teams is going to win out.
- xigoi 3y agoThis is why we need stronger anti-monopoly enforcement.
- dustingetz 3y agoZIRP is how come the market forces don’t rectify it. Market is mis-allocating capital on purpose, result is “Zombie firms”
- currymj 3y agoi think ordinary people frequently feel frustrated with low-quality software, but it seems to me not necessarily in a way they can consciously articulate. that is, they probably can tell when software is frustrating to use, but they don't notice a clear difference between: - slow, high-latency software - poor resource usage slowing down the whole machine, including from unrelated software - bad user interface design - bugs - intentionally bad/manipulative patterns if the customers can't even really perceive what it is they are buying, it's not surprising that market forces aren't solving the problem. i'm not a user interface designer or researcher so of course this could be totally wrong -- just an impression from informal observation
- nologic01 3y agoyour comment made me think that despite the main thrust of my comment, this trajectory is not completely money driven [1]. the incredible journey of the hardware side of technology (cpu speed, memory size, network bandwidth etc) has also played a role in this profligacy because it can cover for a lot of less optimal design this is something that happens more widely in the use of resources: you build more highways and instead of relieving congestion you get more people commuting [1] my open source and volunteer-built linux distribution (will not name names) routinely (like almost daily) prompts for GB sized system updates.
- freediver 3y agoKagi is not VC funded, yet we have code that is sub-optimal, a ton of bugs and odd performance issues here and there. Knowing what I know about software development, I do not think this is avoidable, regardless of the source of funding or size of the company. It is a factor of complexity of the software, resources available and incentives in place. What we can do though, that perhaps VC funded companies can not as easilly, is alocate time to refactor code and deal with tech debt. In fact that is what we are currently doing and we basically pulled a handbreak on all new feature developement for 45 days to deal with our main tech issues. Ability to do this requires a long term thinking horizon. Very difficult to make that kind of investment if you expect to get acquired next year and tech debt becomes somebody else's problem. Also worth noting, as long as the product is being actively developed it will aways have new bugs and issues. 'Perfect code' is achieveable only in a closed context scenario, where new features are not added any more. (which randomly bring this weird thought to my head, that the only human that does not do any mistakes any more is a dead one; perfection in human actions is only achieved in the absence of life... ok need to stop there)
- thenobsta 3y ago> which randomly bring this weird thought to my head, that the only human that does not do any mistakes any more is a dead one; perfection in human actions is only achieved in the absence of life... ok need to stop there Love a good philosophical tangent! Wish you expanded :)
- oddly 3y agoLet’s hope this doesn’t get taken up by a sentient AI in the future :-)
- duckmysick 3y agoI don't think software used to be more secure. As computer users we were more trusting, if not to say naive. As more machines connected to networks, we learned a thing or two. Open access by default. No passwords [1] or short passwords. Then insecurely stored passwords. Everything in plaintext. Input sanitation? Why bother, only I can input data, I trust myself. Don't get me started on telnet. I suspect that's another reason why software is more bloated. We started noticing things, how they interact with each other. And once you see something, you can't unsee it. The edge cases we have to account for are growing, not decreasing. There's more hardware to support too. I'm sure the whole process of writing performant code can be improved. At the same time the bar is being raised faster than we can (or want to) reach it. 1 - And now we're inching towards no passwords again.
- nologic01 3y agoSecurity is indeed an important dimension because it holds the key (pun) for ever more important applications. I agree that a more detailed, like-for-like comparison of software qualities across decades needs to be very careful. Applications have exploded in all domains. But then also the ranks of software engineers and their tools and ability to exchange best practices has exploded. The trouble with exponential curves is that a small difference in rates can create dramatic discrepancies.
- jrm4 3y agoAnd the answer is the same as the answer has always been. When the market fails, you need to look to law and policy. It's really that simple. We've done it a bit, Apple's little wrist-slap for slowing down the iPhones, for example. We just need more of it. I know it's all anti-Libertarian or whatnot, but "more regulation" has worked quite a bit in the past and present. Just do that.
- ulizzle 3y agoI think software is so complex that the house of cards eventually falls and ruins the company. Then everyone is mad and the workplace becomes toxic. Most companies fail so eventually the market does rectify it but it can be a long slog until that happens, at least when there was so much money being thrown around. But the quality of the codebase definitely had less effect in the company’s success than you’d expect, like you said. The costs are just shuffled down to the customers and developers while everyone else gets rich.
- deleted 3y ago[deleted]
- pdimitar 3y ago> VC funded startups must get to market first or die. Fake-it-till-you-make-it is their religion. Sure, that's valid. Though most of the world is not comprised of startups. That's mostly a USA thing with a few small exceptions out there as well. > How come "ruthless market forces" don't rectify this wastefulness? They do, though people mistake those forces for "incumbents with enough power to influence the market forces". So we're witnessing the reality which they dominate. I had plenty of examples in my career where better code helped the company long-term but as we all know, there must be a leader somewhere who understands the tradeoffs and give a green light every now and then.
- slowmovintarget 3y ago> ...with multiple decades of massive experience... You're assuming that the people with this experience have a) successfully passed it on, and / or that, b) they're still coding. We don't have an apprenticeship model in software development that would lend itself to such a thing. Each new crop of developers has to relearn the lessons in whatever new stack they happen to encounter the issues. It would be like each new generation of carpenters having to relearn their trade because the wood had entirely different characteristics every time someone went to use it. That experience you mention applies to the general cases, but again, the people that have it may not be the ones doing the work hands-on any more.
- kakwa_ 3y agoHonestly, with some adjustments, the same incentives also hold true in every industry. I would personally put the low quality of our code more down to immaturity and lack of tooling.
- pdimitar 3y agoNah, for 98% of my career it has been managers. I was not always a good programmer, obviously, but even with that, most of the crappy code I wrote was attributed to having to rush.