Live data from Hacker News

Ask HN: Why is software quality an afterthought for many people/companies?

news.ycombinator.com

41–50 of 100 posts

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#41
post #8

Software development is, apart from a few rare outposts like GOV.UK, conducted in the private sector for a profit. That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. Thirdly, consumer protec…

> That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. > In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. I think we software engineers should embrace this reality, and learn to live with it. Your employer is willing to spend years to develo…

Therein lies the disconnect between what we want to achieve as a profession and the commercial needs of companies. Too often these are conflated in our view of what we do and that creates unhappy developers pushed to deliver stuff quickly is the result.

One way this unhappiness with our lot is expressed is Technical Debt. For me this just cognitive dissonance on the developers part trying to reconcile / justify why the codebase is a mess and why all those shortcuts were taken to get the thing shipped. If you want to pursue your craft and deliver a result you would be proud of then probably commercial software companies are not for you.

Well all might be great writers at heart but if all the employers want is a pool of people to write pulp fiction and romance novels the sooner we get over it the better.

Of course one solution to this identity crisis is sort of mapped out with Erik Dietrich's Developer Hegemony, https://leanpub.com/developerhegemony but it might take a while to get there.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#42
post #8

Software development is, apart from a few rare outposts like GOV.UK, conducted in the private sector for a profit. That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. Thirdly, consumer protec…

Fourthly, a lot of software is ""free"" or ad-funded. This further weakens the cost of failure. I'm not sure being ad-funded weakens the cost of failure. Losing users or having down time impacts revenue immediately if you're ad-funded.

Yes, but the users aren't going to ask for refunds. Also they feel that because it's free they aren't really entitled to customer service (and you certainly wouldn't offer them any).

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#43
post #17

Companies do care about code quality, but it's not the same kind of quality. This is the purpose of QA. Every company that has a QA team cares about quality at least enough to hire a full-time person responsible for it. When developers talk about "quality," they mean tech debt. Addressing tech debt is problematic for businesses because it's something that never ends. You allocate one month for tech debt and the devs…

I've managed developers for the same software product (accounting system) over the last 15+ years. That amount of time gives you some perspective.

A common thing that new hire developers do is call for "a complete rewrite", they do this because when they first approach a large old code base, its daunting and seems impenetrable. Of course they are right, but naive in thinking a "rewrite" will help. Any new rewrite will eventually just grow to be just as impenetrable once all features and edge-cases are accounted for.

Fundamentally, any software product is trying to model some aspect of the real world...and the real world is messy, very messy. Governments pass laws that contradict each other, some laws change drastically state by state, employees try new and novel ways to embezzle, different languages and units of measure exist, changing prices for commodities can suddenly cause complete upheavals in manufacturing process, etc. All this must try to be accounted for and its nearly an impossible task.

The bugs that persist are almost never "I click Button A and it does the wrong thing", but almost always "In case that Situation A + B + C all simultaneously exist, the result as interpreted by Agency X is not optimal". Obvious and real bugs get squashed pretty quickly, but those complex situational bugs can linger for a long time. As a manager, you sometimes just need to shrug, because the effort required to fix each and everyone of these would produce little to no tangible business value. Moreover, an environmental change could come along to render your "fix" invalid anyways.

Sometimes even during design discussions we are completely aware we are creating "a bug", but the decision is made that the amount of people that want both Feature A and where Situation B exist will produce relatively little overlap. Most often we just design a manual workaround, instead of trying to completely eliminate the bug.

I'm always refreshed and excited by dealing with young devs, particularly for their zeal to fix problems, simplify things, and generally improve the product. Yet, I do feel a bit of sadness in that I know reality is going to temper their enthusiasm after a decade or so. Reality is a very hard thing to model with any semblance of being "bug-free".

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#44
post #33
post #6

To most businesses, the core objective is creating a profitable business, and most other objectives, including engineering, marketing, support, and yes, in many companies even things like customer and employee satisfaction, are secondary to that, and only really prioritized to the extent that improving those areas also improves the bottom line (I would in fact argue that this is true of almost all companies, and that…

>> piece of software that mostly does what the customers want even if it is low-quality The state of the software is currently much worse in my opinion. Quality is not easily quantified while the price is. Metrics at the customer end are hard to collect (it requires software development too, raising the costs), and in the current state of the art, it also requires having customer support staff too which is still cost…

This isn't much different than where quality of MP3 players, laptops and smartphones was headed. Perhaps quality then was being measured just by percentage of customer returns, not by customer satisfaction. Steve Jobs then changed the game. Apple's products would just "feel right" to the customers. Apple iPod took over the market even after being much costlier. It then took a couple years for the rest of the laptop/smartphone manufacturers to catch up.

"Feel right" is definitely a kind of quality that software can compete on. I'd probably put Chrome in this category (relative to other browsers that were around at the time it launched). Sublime Text, maybe. Blizzard games (especially those of a certain era).

Note, though, that this quality is principally about doing what the users want and being pleasant to use while doing so.

It's something that you can definitely focus on deliberately in your work and projects, but I'd argue that a lot of the current mantras that get recited when software quality comes up (test coverage, continuous delivery, maybe even code reviews) are not especially helpful for achieving this kind of user-perceived quality. Maybe even a distraction, in some cases. Getting your code in front of users and listening to feedback can help, certainly. But having a strong, clear, vision of what you're trying to build in the first place might be even more important. And I don't think that's something that's achieved with tools and processes.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#45
post #31
post #8

Software development is, apart from a few rare outposts like GOV.UK, conducted in the private sector for a profit. That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. Thirdly, consumer protec…

"aerospace people can usually get it right " Are you refererring to adherence to standards like Misra and DO-178B or something else?

Adherence to standards is a means to an end, but it is neither an end in itself, nor a guarantor of that end.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#46
Code Quality (CQ) is an ideal.

Your feeling about the magnitude of the issue (most companies) is wrong. Programmers discuss CQ principles among themselves. However, the discussion becomes more challenging with management.

Management is responsible for accomplishing business objectives. Development and testing timeframes are at odds with business objectives. Adopting CQ delays product. If you're going to delay product, but the product will be beautifully efficient, idiomatic, elegant and possibly a little faster than the first pre-CQ version, you're not going to win an argument in an organizational context where delivery timelines matter.

Time and effort are not a programmer's friend in a task-driven organizational setting. Fortunately, real-time linters tell programmers not only about material errors but present stylistic warnings (such as Python pep8 linters). Further, static analysis tools such as Quantified Code [1] conduct an in-depth analysis of code and suggest stylistic improvements. I suspect that this is an area where machine learning will advance Code Quality further. Maybe, just as there are language servers, there will be code quality servers.

It is worth noting that the QuantifiedCode entity shuttered in the Summer of 2017. It's not clear why the company closed-- did they fail to monetize automated code review? Were they acquired?

In conclusion, the more you can automate code quality-related improvements, the more likely you can promote your Code Quality ideals.

[1] https://github.com/quantifiedcode/quantifiedcode

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#48
post #19

How do you define software quality? Just off the top of my head, I can think of: * Defect rate (does it do what it's meant to do?) * Does it do what the user wants? (not always the same as the above...) * Is it pleasant and efficient to use ( definitely not the same as either of the above). * Is it developed in a way the management are comfortable with? (which often seems to lean towards sufficiently "under control",…

I think there is room for some balance. If not doing what the user wants is not part of the defect rate, then maybe you are not defining defects properly. According to the principle of the separation of concerns, management's other issues are best considered as non-quality constraints on the overall process. That leaves the user experience - but what user does not want a product that is pleasant and efficient to use, all else being equal? (But beginning, casual and experienced users have different ideas of what his means, so it is probably better to treat it as a separate concern.)

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#49
Feature creep and timelines are in my opinion the root cause of lower quality software. Most engineers sit down planning to develop clean efficient code but that generally takes more time than they are allocated. As the deadline draws closer new features and edge cases are often added in by either management or the end user.

Often these new features were not accounted for in the original design and in order to fit them into the system in a nice and clean manner, a large rewrite of certain modules and/or database tables is required. Due to time constraints and developer fatigue this is not possible and the mindset of "Just get it done" sinks in. This is no one's fault just a harsh reality of writing software where timelines and profits are a factor.

No one wants to be the guy that hard coded several edge cases into an otherwise clean module but it happens and it happens often as "Just get it done" takes hold. I think a good developer just accepts this, and makes sure to do a good job commenting their code. This especially happens during customer acceptance testing. Customer brings up a feature that they never mentioned before, they want it now. Management and/or your bank account says just give it to them. You hard code it in.

The circle of life

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#50
>I have the feeling that most companies don't hold discussions about what software quality means and how it should be measured.

I have instead the feeling that the matter is endlessly talked about in meetings but noone actually puts in practice the "good intentions" discussed (for the one or the other reason).

Post reply on HN