6 ms·
How to think about software quality (2022)
- effnorwood 3mo agoHey Siri, is my app doing what I wanted it to do?
- rationalist 3mo agoSiri: Yes, but each action takes 10 minutes to resolve and your users are jumping out of their windows after dealing with your software. Programmer: Great, my software works!
- effnorwood 3mo agoHey Siri, my software isn't doing what I wanted it to do. Confirm PRD did not include 10 minute wait times and send my IQ test results again please.
- deleted 3mo ago[deleted]
- adityaathalye 3mo agoSiri: brb, asking my agents... Hold my beer.
- conqrr 3mo agoIf there is a place that is hiring and cares about Software Quality, I'll take a 70% paycut to work there.
- dudul 3mo agoI've just accepted the fact that every tech company is just a dumpster fire.
- adityaathalye 3mo agoSome are dumpster fires inside oil spill fires on top of a lethally radioactive surface. Once I had such a client from the depths of hell. Handling lower/middle-income people's wealth. Doing money math with floating point arithmetic. In Javascript. Minimum "function" line size of one hundred lines, with several four hundred line "functions". With "functional" idioms like map/filter etc. inside said functions, except hang on why is the mapping function making network calls? To a workflow orchestrator? Which is then calling out into... mongodb. To... do the money math based on a flag in the `meta` field of a user object. A flag that is being set and reset at least twice, directly in the four hundred line function I'm staring at with bleeding eyes, and, but I can't bear to jump to definitions and see where else it might be toggled from the calling code? Please don't make me do it. Um, and this was just one aspect of their software organisation. Four hundred line floating point dumpster fires, inside a gawdawful dog-slow software system, because, nearly a hundred "microservices" (about two per engineer, I counted), being somehow managed via an elaborate AI of calendar tetris, because everyone in the company was somehow fine with it, because they were mostly young and it was their first or second job and they probably didn't know any different, the poor sods.
- adityaathalye 3mo agoPlot twist: Newly-hired head honcho of software was going to fix it all with Kubernetes. Peak transaction volumes of about ten per minute. Once the project ended, I never looked back and wiped all but the essential lessons from memory. I can't name them because my brain legit refuses to look up the name. I know it's there somewhere in the periphery. And even if it did pop back, it shall remain nameless, for harm could come to many innocents.
- mikestew 3mo agoYou would have liked the last place I worked before retirement. Full-on software test team and everything. Private offices, too. Don't get me wrong, there were warts (oh, were there warts), but overall it was a good time. It wasn't a 70% pay cut, but the cut was considerable in comparison to what I was accustomed to. I didn't care, I was nearing retirement, and my "I'd take a pay cut if..." was the aforementioned private office. But the company got sold to a conglomerate before I left, so I can't guarantee that culture is still there.
- deleted 3mo ago[deleted]
- sshine 3mo agoThat’s great, but how do I fix my motorcycle?
- Okkef 3mo ago(2022)
- chrisweekly 3mo ago(edited 2023) agreed mods should append a year given how fast things have been changing
- Multicomp 3mo agoGene Kim wrote the DevOps Handbook and I think was at least involved in the related DORA and Phoenix Project and Unicorn Project office narrative books. Between those and the Google SRE book, I feel very well placed to have continuing value in the SDLC pipeline for wrangling the oncoming armies of Jr Developers-as-AI-agents-and-sometimes-humans into alignment. I also recommend System Design Interview 1 and 2 books by Xu for logical system design refurbishment, Designing Data Intensive Applications for most company programs, and Hexagonal Architecture Explained by Cockburn for finally getting something as small as a class or module to something as large as an entire Information System to have clear modular boundaries, without needing to do fuzzy pattern matching around half-remembered SOLID principles and GoF design patterns or trying to blindly apply 12 factor app design principles. Quality used to take a back seat because there was so much legwork to do. AI has reduced the cost to be excellent, so let's be as excellent as our environments let us.
- equinumerous 3mo agoGreat book recommendations (I have read parts of the Google SRE book and Designing Data Intensive Applications)! I will also add a couple gems that I don't see often-cited: Simple Object-Oriented Design by Mauricio Aniche and Secure by Design by Dan Bergh Johnsson, Daniel Deogun, and Daniel Sawano. Both have a lot to offer in terms of software design and maintaining complexity. I also liked Refactoring to Patterns by Joshua Kerievsky.
- Bratmon 3mo agoThis article is very rambling and somehow manages to miss the most important driver of reduced software quality: shifting requirements. You can have the most beautiful perfect design that leverages the greatest abstractions in the world, and then have it all entirely destroyed by a single requirement shift that totally kills your abstractions.
- tcfhgj 3mo agowell you cannot design for the unpredictable, but well designed code will make refactoring easier anyways
- evan_a_a 3mo agoIf the design is so inflexible that a single requirement shift destroys it, then it wasn't a good design.
- PaulHoule 3mo agoThat's a refutation of agile, Vibe Coding and the last 25 years of the software industry. One of my own quality metrics that almost everyone rejects is a "a good design is a design where a change that seems like a small change to management is... a small change" It plays out like this. To get to product-market fit you are going to have to zig and zag 20 times. Everybody optimizes for the first step of this journey and then on the second step they optimize for that... and by step 5 or so the archiecture is exhausted and you have no hope of getting to step 20. The rare team that is looking ahead 20 steps is the one that survives.
- GuB-42 3mo agoThe problem is that you don't know in advance what the 20 steps will be, and you may spend time solving the wrong problem. Make step 1 as simple as possible, step 1 is small and changes are cheap, you can even rewrite everything with little effort, no need to prepare for anything at this point. Step 2-4 will inevitably break something, no big deal, rewrite the parts that need to be rewritten, it is still cheap. At step 5 rewrites are starting to get costly, but now you have a better idea of what is here to stay, so it is now time to invest in things like regression testing, style guides, etc... At step 10, you have quite a history, rewrites become a really bad idea, no turning back after that. So now it is time to think about the future. The difference from doing that in step 1 is that you now have 10 steps of experience and only need to look ahead 10 steps.
- throwway120385 3mo agoMaybe we could take a page from the SWEBOK here, which contains a lot of previous thinking on this topic.
- mikestew 3mo agoTesting is not "Quality Assurance". If I got nothing else out of TFA, at least I could raise my hands and shout an "amen!".
- adityaathalye 3mo agoFriend! Alas, having died on that hill one too many times, I can be with you in solidarity, but not on the hill. No, not again.
- jeffwilson75 3mo ago[flagged]
- tomhow 3mo agoPreviously... How to think about software quality (2022) - https://news.ycombinator.com/item?id=39490543 https://news.ycombinator.com/item?id=39490543 - Feb 2024 (66 comments)
- bulatb 3mo agoQuality is what we call the difference between what succeeds and what we wish succeeded. It's a measure of how closely the opinion of the person saying "quality" aligns with what is actually rewarded by the fitness function that objectively exists. The only thing you've learned when you hear "quality" is what the speaker thinks is good, not anything about the subject. Quality does not exist until a (person, preference, subject) pairing happens. It's not real. It's literally not a thing. It's just a name for mixing up your is and ought. When someone saying "quality" can point to the specific property that makes the subject quality, they're almost always pointing to what is, from the perspective of the fitness function, inefficiency, a waste of energy and effort, more spent than the system rewards. Anyone who spends a lot of effort building skills to get particular results is going to believe those results are important, at least a necessary part of success, if not the whole definition. When people who did not put in the effort keep succeeding without those results, "quality" becomes the cope. It's shoddy work. They did it wrong. They cheated somehow. And yet they succeeded. Because "quality" is what a person says when is and ought don't match, a fact about the speaker, not the subject.
- nomel 3mo agoI agree. I think the only time quality might be objective is when there's a planned "ought", like a required feature that needs to be implemented later. From that perspective, the "quality" could be measured in how easy it will be to implement that, in a "total effort" sense (subjective I suppose), where "low quality" might require a whole rewrite of big sections, where "high quality" would have the required stuffs in place (maybe abstractions, or maybe even placed where spaghetti would fit nicely) to make it "easy".
- bulatb 3mo agoYay! I've argued this a few times here and it's been, uh, perceived as low quality. I think "objective quality" can always be re-framed in terms of fitness. "Quality" is just not anything the fitness function measures, so it can't. It's hard to really make the case because of course there's something real that people mean, colloquially, and it's totally valid. Lots of things objectively have properties most people would agree show quality. That's where it is, it's right there! But all those properties can be described without the use of "quality" by just reciting every fact about the thing. The only thing that will be left, the only thing you can't communicate that way, is what the person thinks about those facts.