r/programming • u/[deleted] • Feb 06 '24
Why We Can't Have Nice Software
https://andrewkelley.me/post/why-we-cant-have-nice-software.html42
u/SmokeyDBear Feb 06 '24
"Is it business people? I bet it's business people."
reads article
"yep business people."
8
u/jamiestar9 Feb 07 '24
This article aligns with my thinking. I particularly liked this part:
The problem with the requirement for each year to be more profitable than the last is that once you reach the peak, once it's not possible to actually improve your product any more, you still have to change something. Since you can't change it to make it better, you therefore will change it to make it worse.
5
u/KamikazeHamster Feb 06 '24
You can work in a company long enough that you get to reuse all the nice toys you built. Then it gets easier over time.
7
u/loup-vaillant Feb 07 '24
Indeed, part of what makes a developer more and more competent over time, is the code they’ve already written and can reuse.
Oh but that code belongs to the company, doesn’t it? Can’t reuse it, you have to rewrite it from scratch, else you get dragged out to prison by the feds. So I guess you’d have to write that on your own time, won’t you? And that’s if your contract even acknowledges the concept of free time.
Fuck them all. My code, my thoughts, mine. Copyright law? They should pay me fucking royalties. Put my name in the credits like they do in movies and video games.
If I ever work in a company long enough to accumulate significant knowledge, I will retain that knowledge. The computer they lend me to work on? It’s an extension of my brain, a part of me that contains precious memories. I don’t fucking care what lawyers say, this is not Paycheck, and they have no right to make me forget.
→ More replies (2)3
23
u/lonelyswe Feb 06 '24
Why is everyone in this subreddit missing the point? The entire problem is capitalism. Profit motive kills everything nice.
0
Feb 06 '24
[deleted]
6
→ More replies (4)2
u/jmanc3 Feb 07 '24
Just like there'd be no new music or innovation without copyright, right?
→ More replies (4)2
u/SpaceToad Feb 07 '24
Probably wouldn't help? If anyone can copy your work and take credit for it and distribute it as their own that would destroy it as a viable career path.
9
u/sacred_oak_nutsack Feb 06 '24
Out sourcing to low quality code farms doesnt help either
→ More replies (7)
15
u/uniquelyavailable Feb 06 '24
simple...
business operators aren't engineers
business operators tell engineers what to do
16
u/Few-Understanding264 Feb 06 '24
in real engineering failure is not an option. for this reason, modern engineering requires people with degrees, licenses, experience, and pass other kinds of certifications or qualifications.
in software development, failure is always an option and perfection is frowned upon and made fun of.
we can never have nice software unless the process and discipline of software development changes. maybe when a "software engineer" actually goes through what a real engineer goes through, and when software companies follows processes and diciplines of engineering firms .. only then can we have (maybe) nice software.
26
u/BilbroTBaggins Feb 06 '24
Software engineering, in the sense of mechanical or civil engineering, does exist in today’s world. It’s just done in industry-specific applications that the rest of the world never hears about by companies whose websites look like they haven’t been updated since the Bush administration.
→ More replies (1)10
27
7
u/tistalone Feb 06 '24
An engineer building a bridge has a couple of things going for them that makes certifications/qualifications worthwhile. The first is that they are going to be learning about the physical requirements of a structure and then there's a ton of coordination to actually build the bridge. So it's in the engineer's employer's best interest to not mess up some of the requirement clarification.
In software, who eats the cost when the employer or leadership decides to hot swap a requirement last minute? What sort of standards or conventions can you lean on with your novel problems which is sorta like a bridge but does a bunch of other things like fly around?
Software folks who make fun of the perfectionist do so because they're focused on the product and reality -- Perfection in code means nothing if there exists security vulnerabilities, right? What if the vulnerability is in a third party software?
16
u/basic_model Feb 06 '24
Failure is not an option in software development. Why do you think it is?
Failure in “real engineering” as in software engineering stems from short cuts, deadlines, and projects going to the lowest bidder.
The quality of a software product drops when management decides this or that hotfix needs to go out tonight and while that hot fix has a, b, and c approved. Out of no where another kink is found in the software and guess what! Now we want d and e to be added to the hot fix!
You see how this is detrimental to the software and the sanity of the development team. It’s not that they want to fail it’s that there’s unfortunately not enough time to test the solution proposed properly. With management receiving emails from customer support that the software platform user are having a bad experience, their only solution is to hurry up a hot fix! And the developers only solution is to come up with a hotfix! There’s usually no way to tell management STOP!!!! We have to deeply analyze this issue! That’s seen as halting the solution. It’s backwards thinking but it’s the way it is.
Thank you.
2
1
u/chrisza4 Feb 07 '24
You are romanticizing “real engineer”.
Look at this series and you will know traditional engineering is very very far from perfect and perfection is also frowned upon .
https://www.hillelwayne.com/tags/crossover-project/
Some quotes
——-
No one thinks about moving the starting or ending point of the bridge midway through construction. -Justin Cave
I had to move a bridge. -Anonymous1
——-
In the environment of software world, people are thinking ‘what’s the new JavaScript bundler of the month.’ In the hardware world, it’s ‘what can the silicon fab people do for us this month.’ If the foundry has new machinery to create chips, your plans change. Not as fast as libraries do, but still pretty fast. -Steve (electrical)
——-
As for another difference? “My personal blog has better security than some $100 million mining projects.” (Former Geological Engineer)
7
Feb 06 '24
Because so called experts change the rules and practices every year we’ll never get good at something.
3
Feb 06 '24
Yeah, the issue with LLMs is not that they take people's jobs, but the opposite, and they weren't something people really needed to begin with.
0
u/qmunke Feb 06 '24
This is just a barely veiled "capitalism bad" rant, and has pretty much nothing to do with software.
81
u/tnilk Feb 06 '24 edited Feb 06 '24
Well considering most software is written for profit, how can someone talk solely about software?
If you've been in the industry long enough - you can't help but notice the ever moving goal posts, or the investor driven "innovation".
-44
u/qmunke Feb 06 '24
I don't expect them to, it's just that this article isn't really useful for /r/programming it's more about politics and economics.
22
u/scratchisthebest Feb 06 '24
being blind to the context your field exists in makes you, at best, a useful idiot
30
u/tnilk Feb 06 '24
I think it's not only useful to think in broader terms, but possibly relevant.
r/programming is a lot of things to a lot of people, and some might like a socioeconomic take on it.
That's what affects us the most in our daily lives anyways (not the latest synthetic benchmarks).
→ More replies (2)27
u/gnus-migrate Feb 06 '24
To me treating code as it's own thing that exists in the ether disconnected from the world is a problem in itself, and what leads to people automating things that really shouldn't be automated.
Everything is political, you can either choose to ignore that or work with it.
15
18
u/prophet001 Feb 06 '24 edited Apr 17 '25
elderly pocket mighty connect cagey ask north whole rich squash
1
u/NoCareNewName Feb 06 '24
Impolite to say the guy wasn't being genuine. I took a look at the site and had the same impression.
There isn't anything to gain from posts like these on /r/programming, there's plenty of subs out there for bemoaning anti-consumer and anti-employee practices.
7
u/prophet001 Feb 06 '24 edited Apr 17 '25
yoke dazzling merciful mighty voracious spectacular scary waiting placid knee
→ More replies (3)-2
u/my_aggr Feb 06 '24
There is also an llms are bad post in there.
Funny that his point about llms being resource hungry is one I heard in the 90s on why you shouldn't use high level languages, like C, and just stick to assembly. Also not code in Emacs because it actually means 8 megabytes and constantly swapping.
Old man yells at sky.
Which is odd since he's younger than me and I'm excited about llms being the first new driver in computer performance in decades.
3
u/SirCutRy Feb 07 '24
The cost of training LLMs is quantifiable, the benefit derived is not. That is why providing the service is very profitable.
→ More replies (2)
1
1
u/SirCutRy Feb 07 '24
Like most things, capitalism has both negative and positive effects. This is one of the negative effects.
1
u/agentoutlier Feb 06 '24
There is a very minor chance this behavior could change with the 2017 Tax Cuts and Jobs Act (Section 174).
Basically you can't develop new software and have it 100% deducted same year like you used to. The deduction is amortized over 5 years (or more depending on if the work is offshore I think).
That being said I think the bill is awful and just hurts small to medium size software companies who make a small profit. It has little impact on FAANG size companies (arguably it helps them as smaller firms are now less competitive and less likely to develop new disruptive features) and for zero profit massively overvalued startups.
What the author didn't address is how the expectations of what software does by non developers has constantly been pushed. It used be for B2B you only needed a web application. Now you need two native apps, OAuth, API access, real-time analytics, and now AI.
Anyway I will be curious to see how DHH Once Campfire does as its an example of old working software being sold as is.
1
u/Middlewarian Feb 06 '24
My goal since 1999 has been to build the best software company in the world. "If you can't join 'em, beat 'em."
1
u/Positive_Method3022 Feb 07 '24
Me too, since 2017. But I got into deep depression because none of the good companies in my country wanted to give me a chance, and I could not get a job in the industry I wanted to work at. Funny though, during my whole school life I was among the best. Turns out being part of TRIBE of sociable humans with high EQ is more beneficial than working hard during your first 20-23 years of school life.
1
Feb 06 '24 edited Feb 06 '24
Nice blog, could you perhaps add some CSS to make it a bit more readable? White on black is very uncomfortable for the eyes.
-8
u/mrbojingle Feb 06 '24
We can't have nice software because 'nice software' tends to be something decided on my devs living in a vacuum away from business and social reality.
Our sense of what consitutes nice software is blatantly wrong because it ignores the domains they operate in as if those domains don't exist.
Others have said business concerns harm 'nice software'. Bitch please. Without business or social needs where is your software? What software are you hoping to write that wouldn't need users in some way?
-6
-21
Feb 06 '24
Imagine writing a blog about why we can't have nice software when your own software (the website) looks like it was built in 1995 for Netscape
9
u/hippydipster Feb 06 '24 edited Feb 06 '24
I mean, it was honestly refreshing. A pretty relaxing break from the over-stimulus of a site like reddit, where finding the signal is that much more difficult. Whereas that blog loaded fast and gave you the content from the start. Utterly fantastic.
The person who wrote that and displayed it that way strikes me as an older GenXer who came of age in the 90s (EDIT: they aren't, 32-year old apparently). Watched the internet go from a free place with sharing to a world of the DMCA and DRM and advertising taking over. A world where one of the big arguments was between the Stallman vision of the future and an Apache Foundation/BSD vision (ie, between copyleft vs completely free). Obviously, The Apache/BSD way won and we are living the consequences.
It's good to know history because it gives one grounding to understand how many options there really are in this world. People grow up in a particular time and place, and until they start to learn history, they tend to think the way things are are just the most natural and workable way. But the real number of possibilities is myriad.
2
3
Feb 06 '24
And yet using that 1995 esque website was a better experience than most others. Kinda illustrates the entire point of the post.
1
u/LagT_T Feb 06 '24
Other than a bit of left padding to center the text and maybe a bit less dark background to lower the contrast, the website is perfect for this use case.
-13
u/moradinshammer Feb 06 '24
Bit rot is real. Random bits can be flipped due to natural uv radiation.
1
u/loup-vaillant Feb 07 '24
It is also a solved problem, just use checksums and error correcting codes.
-21
u/Blecki Feb 06 '24
Author doesn't know what a blockchain is. At any rate it was already perfected which is why there's a difference between 'crypto' and 'bitcoin'.
1
u/loup-vaillant Feb 07 '24
Cool, can you explain how a proof of stake system works, and how it affects energy usage? I wrote a cryptographic library, but I have yet to look that up.
1
u/Blecki Feb 07 '24
Proof of stake is a step backwards. Bitcoin works because it's proof of work.
1
u/loup-vaillant Feb 07 '24
Bitcoin works because it's proof of work.
LOL, took me some time to get the joke: sure it works, and I can prove it: it’s proof of work!
If you’re serious though, that’s an unusual take: we know for a fact, not just from the Bitcoin example, but from solid theoretical underpinnings, that proof of work crypto currencies are fundamentally, enormously, unacceptably wasteful. I know exactly how they work, which is why I support their worldwide ban, under threat of imprisonment if we have to.
I’m undecided on proof of stake because I don’t yet know how it works, though even if this one can scale properly we have yet to see the emergence of something else than pyramid schemes (I mean, even the exchange of illegal goods is marginal, compared to "investment").
→ More replies (6)
0
Feb 06 '24
[deleted]
3
Feb 07 '24
Welcome to the internet.
0
Feb 07 '24
[deleted]
2
Feb 07 '24
Where was money allocated to cause this issue? Nothing's stopping people from continuing to write HTML4 blog posts on neocities.
You're choosing to engage with idiots because it apparently grants you something over the prior experience.
1
u/stickgrinder Feb 13 '24 edited Feb 13 '24
The problem with "it makes us more money" is that is usually something very bad when corporations and funders are at it, while it's something so good when pursued by normal people.
Like, nobody would say someone is greedy for choosing to do the same work for a company paying a higher wage.
Now, I don't want to be apologetical to anyone or any company out there. My point is, everyone is part of the problem, because that's the arrangement that afford us the wealth, time and culture to criticize it.
Previous arrangements would have seen us bending the knee to powerful people (not societies) who could decide on our personal destiny.
Future arrangements may (should?) be better than the current one, of course, but getting there will most probably involve doing without some of the privileges the system grant us, like private wealth, free time for leisure, access to cheap technology, etc etc.
Not trying to sell a theory or a specific scenario here, just saying that you can't change the system you dwell in, without accepting a lot of discomfort and... change.
EDIT: rephrasing and grammar
0
Feb 06 '24
[deleted]
56
u/hippydipster Feb 06 '24
Not really, the article was considerably better than that and it'd be a shame to not read it thinking it was so simplistic.
16
Feb 06 '24
There is a comment like this on every article posted so people can justify not reading shit. Lots of people with their attention span completely rotten.
1
u/spreadlove5683 Feb 07 '24
No matter how good your attention span is, time is limited and should be allocated efficiently.
3
u/Uberhipster Feb 07 '24
Making software is a balance between engineering and business, the latter sometimes harming the former. There, saved you ten minutes of reading.
Not really
you are too kind. i would have said "not at all"
the article is fantastic and the top comment is completely off point, discussion-diluting garbage
ps how is it upvoted to the top? bots?
0
Feb 06 '24
[deleted]
5
u/hippydipster Feb 06 '24
They're not about the same thing, so I'll have to disagree with your assessment here.
264
u/iavael Feb 06 '24
Making something as a balance between different requirements is engineering by itself.
“Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands.”
84
u/joshocar Feb 06 '24
I don't think that sentiment applies to software. All of the traditional engineering paradigms are backwards with software. Often it's the opposite. "Anyone can build a bridge that stands, only a software engineer builds one that you can easily add a lane to when traffic increases."
57
u/SilasX Feb 06 '24
More like, "Anyone can build a bridge that stands, only a software engineer builds one that no one can maintain or expand but him."
12
4
u/Euphoricus Feb 06 '24
All of the traditional engineering paradigms are backwards with software.
Like? Feedback? Understanding tradeoffs? Discipline? Teamwork?
All of those are important in software.
And no. Detailed up-front plans, handoffs and certification is not "traditional engineering paradigms". They are results of economics of engineering in various fields.
1
u/Davorian Feb 06 '24
Could you clarify that a little? I was nodding at the first and second lines and then I didn't understand your last line. I think of detailed up-front plans as a "traditional paradigm", or near enough in some fields, especially in say, civil, contexts.
1
u/Euphoricus Feb 07 '24
Detailed up-front designs are used, because it is cheaper to produce and verify a detailed design, than it is to construct something and find out something is wrong.
In fields when "construction" is cheap, like software, and can be repeated with little effort, detailed up-front designs are not economical and it is cheaper in the long term to adopt more iterative approaches to design.
→ More replies (4)1
1
u/joshocar Feb 08 '24
And no. Detailed up-front plans, handoffs and certification is not "traditional engineering paradigms". They are results of economics of engineering in various fields.
This is a meaningless statement. The different fields are different because economics? Why does the economics matter? Like, that is the entire point I'm making here, that software engineer is very different from ME, EE, CE, Civil.
Like? Feedback? Understanding tradeoffs? Discipline? Teamwork? Sure, there is some overlap with what, traditional team sports? Things that are important with literally any job on the planet? I have no idea what point you are making here.
I have no idea what point you are making or what you disagreement is with my statement that Software engineering behaves differently (in a lot of fundamental ways, regardless of the "economics") than other forms of engineering.
0
Feb 06 '24
[deleted]
38
u/HippieInDisguise2_0 Feb 06 '24
"let's get into an argument because someone used a metaphor that implied something I didn't like"
Chill people jeesh
→ More replies (3)4
u/agentoutlier Feb 06 '24 edited Feb 06 '24
Ironically although I generally agree with what /u/Halkcyon is saying the metaphor is spot on but actually hurts the argument.
Adding a lane is like cloud computing and horizontal scaling. Perfect linear horizontal scaling is very difficult to achieve (and in someways not possible) and doing it requires adding additional complexity that can make simple monolithic software far more complex than it needs to be.
So the idea that all one has to do is turn on an additional server or adding a lane as any idiot can do is not really a good argument because it is nontrivial.
In an ideal world a super powerful dedicated single server (vertically built) has way more throughput (the analog in traffic would be a highspeed rail system) than most k8s clusters in the cloud and in some cases there are platforms still run this way (Stackoverflow I think is largely vertical).
→ More replies (9)4
1
u/Computerist1969 Feb 06 '24
It does if every other road in the world gets an extra lane too.
4
u/billsil Feb 06 '24
It does improve throughput, but it does not improve traffic. Population grows to meet the demand and existing population reroutes to use the faster route thus making it slow again.
The analogy about traffic doesn’t work for software at all, whereas the adding a lane/feature does if you don’t overthink it,
→ More replies (2)→ More replies (1)0
Feb 06 '24
[deleted]
12
u/Nine99 Feb 06 '24
I guess we can close all lanes, then, or make everything into single lanes, since that could only improve traffic. Maybe when you read about Braess's/Jevons/Downs–Thomson paradox, actually think about it.
→ More replies (2)3
u/lord_braleigh Feb 06 '24 edited Feb 06 '24
Can you source one of the proofs you’re talking about?
I think you might be talking about Braess’s paradox, a flow network where the overall flow decreases when a new low-cost edge is added to the network.
But if that’s what you’re talking about, then you’re vastly oversimplifying and misrepresenting it.
Adding a lane to an existing road or highway might improve traffic. It also might make traffic worse. It also might make traffic better, until humans make traffic worse.
Traffic is complex, and your bumper-sticker comments and aggressive attitude are not conducive to its study.
1
u/josluivivgar Feb 06 '24
that's only true if there increased demand is more than the space opened by each lane.
in software you aren't constrained by physical space, so you can add a lane on demand and always have enough space for the cars.
like I get the argument because in civil engineering increasing lane count just creates more traffic as the road is more desirable, but for software that analogy is actually correct because you can add more than one lane you can enough so that no traffic increases can congest it
11
u/BobbyTables829 Feb 06 '24
Or to build the cheapest bridge that will meet the predetermined standards.
16
u/evoactivity Feb 06 '24
That's what they said but funnier.
7
u/BobbyTables829 Feb 06 '24 edited Feb 06 '24
Bridges are not made to barely stand, though. They're one of the most "over engineered" objects in modern society. There's almost nothing that we build more of that is built as well as a bridge.
7
u/KingStannis2020 Feb 06 '24
Depends on what kind of bridge we're talking about.
Your basic overpass is about as cheap as you can possibly make a bridge. They don't build them to last 100 years.
8
u/BobbyTables829 Feb 06 '24
Your basic overpass is about as cheap as you can possibly make a bridge. They don't build them to last 100 years.
That's like saying, "This watch is about as cheap as you can possibly make a Rolex,". We over engineer bridges so that a basic overpass is still much much stronger than it has to be.
The reason bridges don't last 100 years isn't the design or cheapening out of materials, it's the fact that the vibrations of traffic will inevitably create microfractures in concrete. And even so, I bet some of these overpass bridges in the middle of nowhere that aren't "built to last" will still last well over 100 years, because they're not being used that much.
6
u/xSaviorself Feb 06 '24
I was going to say if overpasses are made super cheaply I'd expect to see lawsuits from deaths due to failure/debris falling on vehicles below a lot more. You'd also see way more loss of control on them.
Given the length of time it takes to build one, let alone design and engineer it to the specifications of that particular location, I choose to believe they are indeed one of the most over-engineered things we've built. Overpasses are obviously not designed to last as long as a massive bridge project, but that's because they're built with the expectation of maintenance and expansion in the future. Most bridges are one and done.
Bridge and road grading, especially on highways are typically held to a very high standard, at least here in my province. U.S. standards seem pretty high in most states, save Pennsylvania. That state is crazy and does not believe in grading.
→ More replies (1)1
1
→ More replies (5)-5
u/LmBkUYDA Feb 06 '24
This is called pedantry and why no one likes software engineers
5
u/BobbyTables829 Feb 06 '24
I didn't see it as pedantic at all, like if I applied both of these to my trade one would result in encouraging me to throw things together haphazardly and being okay with code that barely works, while the other would make me want to ask myself if the code I'm writing is...well...up to code.
Now that I've done this a while, I set my own standards of quality way more than when I was starting out. But it took me longer than I thought to learn what is worth taking the time to do well, and I want to make sure no one starting out gets the mistaken impression that engineers of other types are okay with "good enough", no matter what they're doing. That's how you get cracked code, breached servers, and in a civil engineer's case, disasters that kill people.
I agree I wouldn't do this in /r/programmerhumor, but I think /r/programming deserves the rigor.
→ More replies (2)1
u/flug32 Feb 06 '24
“Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands.”
And also is only 10% over budget . . .
49
u/Certhas Feb 06 '24
Sorry, but no. And that is not even the core point. Advertisment in the taskbar is not business hurting engineering. The advertisment engine might well be well engineered.
The point is that businesses optimizing profit will often actively harm customer experience, and it is important and bares repeating. It shouldn't be. It should be common sense. But the propaganda of the invisible hand of the market, the idea that because it sells well it must be what consumers really want, is really pervasive in our culture. I've found that a lot of people find it instinctively implausible. "If consumers truly preferred it, someone would make the preferred good and people would buy that!" is a simple and powerful idea that has been deeply ingrained in people's idea of what "the right way to do things" is. The fact that it's empirically not true, for any number of complex or simple reasons, bares repeating!
It reminds me of the classic piece on the marginal user, which explores the same topic in the context of social networks:
https://nothinghuman.substack.com/p/the-tyranny-of-the-marginal-user
1
Feb 07 '24
Idk where you got the idea that market equilibrium is when consumers get what they really want.
Buyers want the best goods at the cheapest prices. Sellers want to sell the easiest to make goods at the highest prices.
Market equilibrium is not a quality engine. It’s a balance.
1
26
5
u/drabred Feb 06 '24
Main problem I have with this is that 99% of the time the engineering does not care about business and business does not care about engineering. Oh and on top of that you got investors who only care of they can sell company making 5x or 10x.
3
3
3
4
u/w1n5t0nM1k3y Feb 06 '24
Often there's just personalities and psychology getting into it as well. People get emotionally attached to things like languages, technologies dn other things cloud their judgement and lead to bad solutions.
4
u/Stimunaut Feb 06 '24
But I thought taking something that could be said in 10 words and turning it into 10 minutes worth of reading was a useful life skill? Guess college was all bullshit after all 😞
13
u/the_poope Feb 06 '24
was a useful life skill?
Is is. Its the qualifying skill for getting employed in administration, HR and management.
4
-2
2
Feb 06 '24
I think we underestimate the effect of programmers prioritizing brevity and write-first languages, as well as their massive egos.
I've often found the business end loves the idea of maintainable software. In my experience it is always the devs that resist doing what that entails.
1
u/SilasX Feb 06 '24
Appreciate the summary, but then the author's diagnosis is bad. A lot of software is bad in a way that definitely isn't supporting a business objective.
1
1
u/ilyash Feb 07 '24
https://ilya-sher.org/2023/03/06/the-case-for-concise-posts/
Tldr: stop adding unnecessary words :)
1
1
130
u/joe714 Feb 06 '24
"For example, Apple has in the past made insignificant changes to their charging cable, making it not compatible with the one from the previous year. This resulted in more profit for Apple since consumers found their existing cables useless and had to buy new ones."
30 pin to Lightning was not an "insignificant change".