I don't feel its possible for software to be built toward the end of itself. All software has users, even if that user is just yourself (the author of the software). There's always a stakeholder who stands as the impetus for Why some feature gets added, or why the code is spring-cleaned, or whatever; the software doesn't demand anything of itself.
I only say that to say: I think the actual conclusion I'd draw from the idea this post puts forward is, well, two things: First, that the best software is software built by its biggest and most zealous users; software built for other people exclusively is never, never good. Second, that the best software has features no one is asking for, the "I've got a feeling we'll want to be able to sort on that table" kind of features, some people would call this quality Good Taste.
The process which produces most software the world uses seems almost intentionally designed to throw both those conclusions to the curb. That, to me, explains almost all of why software quality has nosde-dived over the past 10 years. Its the old story about how the designers and product managers on the Windows team at Microsoft all use Macs.
Yes, I'd agree with this. The phrase is just a little too blunt to be fully accurate, which is why I like it.
Many things in life seem to work optimally when we take them with an "ebb-and-flow" style pattern. For example, I'm a fan of seasons of feast and seasons of famine when it comes to trying out new software: In seasons of feast, I throw caution to the wind and try anything new and shiny which looks appealing to me, and then in seasons of famine, I prune, prune, prune away anything which doesn't directly serve my purpose.
There's a similar ebb and flow here. The largest community is very "means to an end" oriented. The power users often view the tool as a thing of beauty in itself, at least for a little while. That's the "end in itself" ebb. The hackers transcend this and view the tool as an imperfect, vexing beauty, and wish to create something even more beautiful -- but that's where things wrap back around, because the beauty does ultimately come from how well it is suited as a means to the end!
Scrum can deliver any sort of feature for whatever reason. Not because it's amazing; just because it doesn't have an opinion on what features are good.
I read this more as purely data-driven product decisions, or three years of UX research before we get building, those sorts of approaches.
Eh, not really scrum/agile. These are IMO bad ways to build software, especially when taken to the dictionary-definition extreme of the process, but they're not what I'm talking about.
I'm more-so referencing e.g. Amazonian Data-Driven Decision Making. That the nature of this kind of process puts taste behind data, even erroneous interpretations of data or incomplete data, data is data and data is king; organizations quickly lose any sense of taste they may have had as decision making is predominated by data analysis. This process looks down on someone finding data to support a conclusion they want to reach, but in reality this is the only way to build great software: Starting with good taste, and supporting that taste with data, metrics, and experimentation. Cherry-picking is fantastic; instead we larp scientists.
To a similar degree, I'm also referencing over-specialization in enterprise companies. The classic Office Space bit: "We don't let the engineers talk to customers". Computers give us an effectively-infinite second-brain and effectively-infinite automation capability, if used correctly. This idea that we need a multi-disciplinary team of a dozen people to build anything, each person holding one small piece of the puzzle like a precious gem, is antiquated; it predictably leads to the vast, vast majority of all billable person-hours being spent on self-inflicted problems and context transfer. At minimum, many extremely successful companies organize themselves around multi-disciplinary individuals & vertical teams, instead of specialized individuals and horizontal teams; this is great. But, as we live through the birth of AI rather quickly gaining many of the capabilities of these specialized individuals, I think we'll inevitably see the most profitable and productive companies and teams get smaller and smaller.
It got the point where they had to justify what they were saying, but realised they were using circular reasoning (great software is great because it’s great). So they just gave up and hit Submit.
I might have buried the lede a little too deep. Mea maxima culpa. This is what I get for not listening to the maxim "Use More Examples. Yes, Even More Than That."
Let me start to plug that hole now. The concrete example I was thinking of while writing this was Bram Moolenaar's `vim` (RIP). I'm pretty sure most people would argue `vim` is great software in at least some abstract sense, even if they are ride-or-die for Emacs or Kakoune or some such.
Plenty of `vi` clones already existed by the time Bram started work on `vim` in '91. That gives us the community, scene, subscene layering I suggest. The pool of text editor users is massive worldwide; text editor power users are smaller in number but still quite large; and text editor creators are smaller still but tend to be very enthusiastic about their craft. How do we know Bram was a member of all 3 groups? Well, he has a page literally titled "Seven habits of effective text editing" [1], which isn't even really specific to Vim -- it just outlines the beliefs that have crystallized for him over a long, long lifetime of editing text really, really well.
It also means that `vim` did not spring fully formed from the forehead of Bram. There was a whole litany of iterations going on at the time which he could tap into, previous riffs on the genre that were successful, but could have been even moreso.
Other software I would put in this camp might be: Linux, Obsidian, Podman, Kubernetes (kinda - you really have to run into all of those SRE problems individually before you can arrive at a design like k8s, and even then there are things most people agree could be improved upon). They all have this iterative pattern to them, kind of like dogfooding to the max.
Thanks for taking that feedback in stride. I like your example of vim, and how Bram drew from a wealth of experience - not just in software - to inform his decisions for vim. I'd love to see you discuss that example in the original article, and maybe even some more from the list. THAT would be a compelling article.
Sure, nobody agrees on what the strict definition of great is. I don't think it's reasonable to argue that a blog post titled "My pet theory..." doesn't achieve the minimum word count.
Go back and read the HN thread [1] that was the impetus. Now TFA exists within a lot more words to train an LLM on.
Why not attempt to triangulate what this particular piece of software might look like, if it was the best it could be?
It could be a great topic but somehow he doesn’t connect.
One problem is there is no one definition of “great”. I really like using bash on the command line and for simple scripts. I really like Powerpoint for making decks with elaborate visuals. I hesitate to say they have anything in common.
Bash and Powerpoint both seem approachable at first. It's easy to get started and have something to show for your time. Both also completely suck at anything complicated.
You know, I was getting ready to write something entirely dismissive here and I had to stop.
While insufficient, the major point here I think is essentially correct. Or at least the converse/inverse, one of those words is: Which is: No great software is made without someone having a lot of love somewhere in the beginning.
I only say that to say: I think the actual conclusion I'd draw from the idea this post puts forward is, well, two things: First, that the best software is software built by its biggest and most zealous users; software built for other people exclusively is never, never good. Second, that the best software has features no one is asking for, the "I've got a feeling we'll want to be able to sort on that table" kind of features, some people would call this quality Good Taste.
The process which produces most software the world uses seems almost intentionally designed to throw both those conclusions to the curb. That, to me, explains almost all of why software quality has nosde-dived over the past 10 years. Its the old story about how the designers and product managers on the Windows team at Microsoft all use Macs.