Jeff Johnson (My apps, PayPal.Me, Mastodon)

The psychology of fixing bugs

August 28 2025

My last blog post Apple wants a sysdiagnose for a feature request inspired me to think about the lengths to which some software developers will go to avoid fixing bugs. To clarify, my last blog post was about a feature request, not a bug, but the point was that a sysdiagnose is used to investigate bugs, and thus it was illogical and absurd to ask me for a sysdiagnose in this case. If you're not familiar with what a sysdiagnose is, there’s a man page on macOS:

The sysdiagnose tool gathers system diagnostic information helpful in investigating system performance issues. A great deal of information is harvested, spanning system state and configuration.

If you’ve ever taken a sysdiagnose and examined the contents, you may have found that it’s a personal privacy nightmare. A sysdiagnose effectively allows anonymous Apple engineers to root around your computing device (literally, a sysdiagnose runs as root). That’s why I refuse to upload sysdiagnoses to Apple. The irony is that Apple markets itself as the privacy company; IMO that’s BS. Unfortunately, Apple leadership has decided to establish the sysdiagnose as the primary tool for investigating customer issues: software engineering teams are allowed not only to request a sysdiagnose in response to bug reports as a matter of course but also to ignore bug reports that do not include a sysdiagnose!

How can Apple ignore bug reports? Does the free market not punish a company for this behavior? In a word…

Craig Federighi: No.

There are two fundamental reasons why the market fails to incentivize software quality: (1) consumers have limited choices, and (2) consumers have limited information. Windows and macOS form a global duopoly of consumer desktop computing operating systems; Android and iOS form a global duopoly of consumer mobile computing operating systems. If you go to a retail store such as Best Buy, all of the available computing devices run one of those four operating systems, controlled by three corporations. Consequently, if a consumer is upset about a bug in their OS, they have only one practical alternative. Moreover, operating systems are not interchangeable or modular. For any given bug in an OS, the alternative OS may not have that one specific bug, but it will have other bugs, and the cost of switching is large, both financially and logistically, because you’re switching ecosystems. For example, if you want to switch operating systems, you have to buy a different device: no smartphone will run both Android and iOS, no new desktop will run both Windows and macOS. (Intel Macs did support Windows via Boot Camp, but Apple has switched entirely from Intel processors to Apple silicon.) By switching platforms, consumers can’t simply escape bugs without disrupting their entire computing experience and workflow.

As a longtime software developer in the Apple ecosystem, I’m very familiar with Apple bugs. I experience them myself while using my Apple devices all day, every day. I receive reports from my customers that turn out to be bugs in the OS or Safari. I file some of those with Feedback Assistant or the WebKit Bugzilla. I keep abreast by following Michael Tsai’s blog and other sources of Apple news. Even so, my knowledge of Apple bugs is just a needle in a haystack, and while we can search all (non-security) bug reports in the WebKit Bugzilla, we can’t search all bug reports in Apple’s Feedback Assistant.

Bug Report issue filed August 4, 2010: Provide a public, searchable bug database

I would say that only Apple knows how many bugs exist in its software and how serious those bugs are, but not even that is true, because Apple makes bug filing painful—the sysdiagnose requirement mentioned earlier, and in a number of other ways that have been discussed over the years ad nauseam by developers, including me—so painful that many people don’t bother filing bug reports with Apple. I certainly don’t bother in many cases. With regard to fixing bugs, I get the impression that Apple management is committed to laziness, for lack of a better word. That is, Apple is interested in bug reports only to the extent that fixing the bugs becomes quick and easy, so Apple places all of the burden on the reporter of the bugs, and if a proper TPS report is not included, the bug won’t get fixed. After all, there are countless more bug reports in the queue! In this way, a company’s technical debt is weaponized against the company’s customers: the fact that older bug reports were successfully ignored justifies ignoring new bug reports.

In general, before buying a product, a consumer may have very limited knowledge about the quality of the product. That’s one of the reasons consumers tend to be more sensitive to price than to quality. Of course consumers have only a limited amount of money to spend, which is another crucial reason why they’re sensitive to price, but nobody wants to waste money on a crappy, disappointing product, and sometimes paying a higher price is worth it in exchange for higher quality, as long as the return on investment is known in advance. In lieu of direct, prior experience with the product, consumers have to rely on the product’s reputation and the experience of friends or experts. As an Apple expert, though (if I do say so myself), my knowledge of Apple software quality is still quite limited, and my knowledge of Android and Windows software quality is minimal.

This was a long-winded explanation of why the free market fails to incentivize bug fixes. If a specific bug becomes infamous, receiving widespread attention in the news media, then Apple might prioritize a fix, addressing it quickly, because the bug would affect Apple’s reputation with consumers. In most cases, though, bugs fly under the Radar (pun intended). As long as Apple maintains its public reputation, at least in comparison to its few competitors, as long as the cost of switching is high, and as long as the news media neglects to hammer continuously on laundry lists of bugs, there’s little or no financial incentive to fix bugs. The splashy new features always get vastly more press coverage.

It’s often claimed by people who are technically sophisticated (apologists) that people who aren’t technically sophisticated “don’t care” about bugs. This is not my experience, from supporting my customers, from perusing social media, from talking to people in person. And I’ve acted as technical support for family members too. So-called “ordinary” people do in fact notice bugs, are affected by bugs, are tormented by bugs. Nonetheless, given their limited options and limited knowledge, consumers are unable to act individually and effectively in a way that would fundamentally change the preexisting incentives for giant corporations. We’re all stuck in the same system.

So am I arguing that software developers should deprioritize bug fixes? No, of course not! I am arguing that we can’t rely on the market to provide financial incentives to prioritize bug fixes. The main reason to fix bugs in your product is that you care about your product and about the users of your product. You have to care independently of financial considerations. This is not an issue of short-term vs. long-term thinking: both Apple and Microsoft are now about 50 years old, yet they continue to ignore bugs, because they can, and because stockholders of those publicly owned corporations demand unlimited growth. Neither the short-term nor the long-term financial incentives force you to maximize product quality over quantity.

I don’t fix every bug in my products. I wish I could though! I maintain a public list of known issues for my main product, StopTheMadness Pro, which is a web browser extension. To be honest, these are not all of the issues known to me, just the most prominent issues. Many of the issues on my list describe a workaround to avoid it. Some of the issues with the extension are not my fault but rather the fault of the web browser vendors, either unintentional browser bugs or intentional limitations that the browsers place on extensions. Other issues are due to an incompatibility between my extension and the website into which my extension injects code (CSS and JavaScript). The website developers and I are essentially fighting over the user experience, and sometimes the website wins! In any case, however, I investigate every bug report from customers, rapidly and thoroughly. Often I ask for screenshots, screen recordings, or other files, but I don’t require them in order to investigate the issue, and I’ve never asked for a sysdiagnose. I’ll sometimes spend an inordinate amount of time on one bug report from one customer. In my opinion, one of the biggest benefits of self-employment is that I don’t have a boss hovering over me dictating how I spend my time. If I want to “waste” time investigating a bug, I can! I can deliberately not maximize profit. In this respect, I have more power than someone like Apple CEO Tim Cook, who despite his massive financial compensation compared to me (and almost everyone else) is still merely an employee.

I prioritize bug fixes because I care. I empathize with software users, because I’m a software user too, and I hate bugs in software that I use! I more or less follow the Golden Rule, treating users as I would wish to be treated. I don’t pretend that I’m free from financial considerations: I have bills to pay too. The good news is that it’s possible for a software developer to make a good, sustainable living while prioritizing bug fixes instead of pursuing profit above all else. I’ll never be a trillion dollar corporation, and that’s fine with me. I don’t even want to become a trillion dollar corporation. On the other hand, I believe it’s possible for a corporate CEO to care too, as long as the CEO continues to deliver good financial returns to investors. The job does not absolutely require one to care about nothing but profit maximization, always sacrificing product quality; that’s a personal choice of the CEO.

Jeff Johnson (My apps, PayPal.Me, Mastodon)