Discussion summary
Discussions covered the challenges of maintaining quality in large organizations, with some arguing that small, autonomous teams can achieve high quality. Maintainability and subjective perceptions of quality are also key themes.
What the discussion says
- Large orgs can achieve quality through small, autonomous teams.
- Maintainability is a crucial marker of quality.
- Quality is subjective and context-dependent.
- Structural issues in large organizations hinder quality.
“Large orgs can achieve quality by spinning up small, autonomous teams.”
“Maintainable code makes problems easier to fix, indicating quality.”
Join the discussion
Write your take first — we'll ask for email only when you're ready to publish.
- Hacker News
- “Zen and the art of motorcycle maintenance” is a good read on the topic of Quality.
- Quality software meets its requirements. Both functional and non-functional. Of course our industry still cannot quantify non-functional requirements, or discover a way to predictably implement functional requirements.
So all that remains for our so called “engineering” discipline, is an answer that says something that doesn't break a lot.
by aryehof - A more rigorous definition of software quality can be found in ISO 25010.
> The quality of a system is the degree to which the system satisfies the stated and implied needs of its various stakeholders, and thus provides value. Those stakeholders' needs (functionality, performance, security, maintainability, etc.) are precisely what is represented in the quality model...
Here is a decent summary: https://iso25000.com/en/iso-25000-standards/iso-25010
Not exactly software quality, but adjacent, is the capability catalog of dora: https://dora.dev/capabilities/
Dora is about 'software delivery and operations performance' and has a vast body of empirical research underpinning it.
by Lutger - "Quality is the absence of problems" is an example of the reification fallacy, because a problem is not a fixed thing. A problem is only a problem because someone decides it is so.
This is why a better definition is "quality is value to some person who matters." This definition instantly places you at the crux of the matter, which is not about a state of the world or of your product in the world, but rather about WHO matters and how they FEEL about your product.
by satisfice - > Quality is impossible at scale
That's a "yes and no" thing. Handmade quality, yes, but some companies get pretty good at finding a "sweet spot," between better-than-average quality, and "Rolls Royce" quality.
Source: I worked for a company that was pretty much renowned for Quality. We made stuff that is pretty near the top shelf, but still a rung or two under the top.
It's not easy.
Also, customers are willing to pay for garbage. As long as that continues, garbage producers will drive quality producers out of business.
- I tend to agree with a few others here, Quality is not just the absence of problems, it is something deeper.
For me it means care and attention were paid while developing, the rough edges have been smoothed off for want of a better phrase. This doesn't mean using the latest and greatest framework or library, usually quality will come from a deep understanding of the basics and concepts like design patterns .
You can spot quality code in the same way to can tell a fake Rolex from a real one but the quality of the movement.
by kwakker35 - Right off the bat, I disagree with the assertion that software quality is merely a concept of how it functions now. In reality software is a living thing and quality is so much more than whether there is a glaring issue right now.by christina97
- Keep in mind that there are people for whom thinking about quality has been their whole career, for decades. There've been long-running industry studies on software quality that have gathered metrics across thousands of businesses on what works and what doesn't. People have been focusing on quality in businesses in general for centuries. It's not a solved problem, but it has been tackled by experts for a long time. It's a good idea to look to their work first before taking a swing at it yourself.
Personally I find quality to have a fundamental impact on everything every human does. It affects mental state, motivation, affects ability, necessity, and time to do things, creates or reduces costs, availability of resources, clarifies or complicates, makes life easier or harder, etc. It can save or destroy a business, make someone's life feel easy as pie or insanely frustrating. But it's not always easy to do right; you need a system to apply quality intelligently or you risk your efforts being wasted (https://global.toyota/en/company/vision-and-philosophy/produ...).
by 0xbadcafebee - > It is based on the premise of making work easier for workers. The objective is to thoroughly eliminate waste and shorten lead times to deliver vehicles to customers quickly, at a low cost, and with high quality.
^ = from your linked Toyota Production System philosophy
Thanks for that link! I find those two early sentences to be an insightful and relatively complete loop of process.
When considering using automation or ~A.I. we can easily ask: which part of this loop is our addition improving (or messing up)? Where is the balance that works?
As you point out, answering these what-works/quality questions are not solved problems and expertise is needful, but careful consideration does not seem to be a popular mode in our age of fountaining funny money and magic genies.
I grew up in the '60s where the science fiction/future was always: march of progress and you'll have so much time and choices! Now I am in the future and the reality is close to: who has the time?
More insidiously/invisibly: you have plenty of time for endless momentary thrills, but no one has time to make things better.
Once upon a time there were customer complaint departments and the Production System would get fixed. Then it became suggestion boxes and returns. Then pleading for a Return Merchandise Authorization. Then it's your call is valuable to us recordings before click call hangups. Oops, unhappy customer?--give 'em a coupon to keep up the addiction, it's cheaper than Quality Control.
The latest devolution seems like fire the workers but use AI to mesmerize customers, or just mind control ~investors and ~regulators, since who needs cover-our-costs-paying-customers anyway?
Will the pendulum swing back?
by danhite - I assume this is written by a UI designer or something, and it certainly feels like "notes" and not a cohesive article. Claiming "The six signals of quality in software" and then listing only user-facing concerns and including subjective items like "Beauty: Is the software as aesthetically pleasing as possible?" is questionable.
I'm interested in quality, but I didn't find these notes enlightening, and couldn't even finish the article.
by chickensong - Yeah, when a software focuses on beauty I only have to wonder what they sacrificed to achieve it.by LoganDark
- > Some people don’t care enough > > The more people you hire, the more likely you are to hire people who don’t care enough about good interface design. Good interface design needs to be valued by everyone who can affect the work. That includes developers, designers, product managers, and often the CEO.
I know where you're going with this, but here's a twist:
A CEO who cares about interface _design_ is path to micromanaging and pain. A CEO should care about interface _designers_, who are (hopefully) the people trained on how do it well.
Even better: CEOs should care about developers with UI/UX skills, because too often CEOs adopt designers like a pet and keep them busy 24/7 asking for mockups.
by manoDev - Somebody needs to be responsible for quality and say 'no' if not the CEO.by esafak
- A CEO should know when the people working for them are bullshitting them, blowing smoke...by sscaryterry
- My assumption when reading that the CEO should care, was that they give those underneath them the time and resources needed to achieve quality because they value it, not that they are necessarily involved in the details.
- > too often CEOs adopt designers like a pet
I've even seen a version where the designer is the CEO's daughter, which is the worst possible version of this pattern.
by kristianc - >A CEO who cares about interface _design_ is path to micromanaging and pain.
That's how Apple blew up into a trillion dollar company.
by pydry - I disagree with the initial premise
>Quality is the absence of problems
A low quality code base can be problem free if surrounding circumstances are forgiving enough. Conversely, a high quality codebase can have a lot of problems in difficult circumstances.
I haven't thought about it long enough to have a definition of quality that I'm really happy with, but I think a "resilience to hardships" would be a better definition of quality. Hardships can come in many forms, and often you're prepared for some of them but not all. Occasionally you'll be prepared for hardships that never occur. There is something to be said for being resilient against the correct kinds of hardships, which is why I'm not entirely pleased with my definition either.
But absence of problems is not it. That might be entirely circumstantial and is therefore orthogonal to quality.
by amarant - > I think a "resilience to hardships" would be a better definition of quality
Does this refer only to program behaviour? I figure readability should count toward quality, but it doesn't directly affect program behaviour.
- > But absence of problems is not it.
i disagree, think about what defines a problem. Not being maintenable, readable, performant etc could be problems or may not be depending on the software requirments.
> Occasionally you'll be prepared for hardships that never occur.
this over-engineering and just as bad as failing to meet a requirement, you're wasting resources that could be spent on something else. In fact, meeting the requirements and only the requirements is requirement #1 ;)
by chasd00 - > circumstances are forgiving enough.
I once saw an organization that migrated from Weblogic to Kubernetes, keeping the rule to have a least two instances of each app but forgetting that that their Weblogic had distributed transactions and without implementing something similar in Kubernetes.
They happily serve users, helped by low traffic and low expectations. Occasional data corruption and race conditions give work to the support maintenance teams.
by sam_lowry_ - I think part of what you're reaching for is the concept of anti-fragility: https://en.wikipedia.org/wiki/Antifragility
Properly speaking, that would be a characteristic of the entire production process, including the people, rather than a property of the code itself. (At least for now. Stay tuned with AI for further updates.) Still, you'll see it in the code.
by jerf - Yeah I think the absence of problems is one way to think about it but it's closer to half the equation.
Quality is a set of characteristics that are ultimately decided by the user, and not every user will agree on what those characteristics should be. This is why user testing of all sorts is very valuable.
You have to go back to Walter Shewhart's work and writings while at Bell Labs. In 1931's 'Economic Control of Quality of a Manufactured Product' he draws a line between 'a thing' and the human experience of it, drawing heavily from the philosophy of C.I. Lewis:
"There are two common aspects of quality: one of them has to do with the consideration of the quality of a thing as an objective reality independent of the existence of man. The other has to do with what we think, feel or sense as a result of the objective reality. In other words, there is a subjective side of quality."
He draws a line between objective quality (the measurable, physical things) and subjective quality (the human relationship to those properties).
Later in 1939's 'Statistical Method from the Viewpoint of Quality Control' he gives a good example:
"Let us take a very simple example. Suppose we consider the quality of a glass of water. We may list some of its characteristics as follows: temperature, volume, chemical purity, taste, clarity, and color. If we look at any one of these characteristics, say temperature, we see that it is impossible to specify the temperature of a glass of water to the last degree of accuracy."
I would argue this is the standard to go for when looking for a definition. Ask yourself what makes a quality glass of water and you'll immediately realize you need to ask 'according to who?'.
- I think you're circling the definition I most closely align with which was coined by Gerald Weinberg - "Quality is value to some person". You can have the best looking interface and the cleanest codebase, but if nobody is getting value from your software, who cares? If somebody is getting a ton of value from your software they're more forgiving of defects they run into.
There isn't some intrinsic value to software, it's gotta be used by somebody
by quietkoala - If thorough testing and 100 experts can’t find a problem, the thing is probably perfect.
If you can get 100 experts to agree on something then you've cracked a much harder problem than software quality.
by onion2k - Top money's worth can play a big part if there is no shoddiness. Does not have to be luxury range at all.
I didn't see this addressed in the article, and it could be more important than some of the main points.
by fuzzfactor - Presumably, this is why the next paragraph opens with "Perfection is impossible."
So, if 100 experts can’t find a problem, the thing is probably perfect. Unfortunately, this will never happen, because perfection is impossible.
by Wowfunhappy - Take curl, it has had many more than 100 experts going through it over the years, and yet with new tooling (AI) they located a bunch of other issues. Perfection in software does not exist, but that's fine as long as you're aware.
(in the case of curl, any security issues inside the library should be mitigated by its environment)
by Cthulhu_ - Agreed. We cant even get 10 dentists to agree which toothpaste to use. Getting 100 experts to agree on anything is a miracle.by Yoofie