There is a common theme pushed by fanatics of capitalism that never dies: that a profit-driven commercial project ensures higher quality products than products under non-profit projects. Some hard-right people I know never miss the chance to use the phrase “good enough for government work” to convey this idea.
I’m not looking to preach to the choir here, but rather to establish a thread of scenarios that correspond to quality for the purpose of countering inaccurate narratives. This is the thread to share your stories.
In my day job I’m paid to write code. Then I go home write code I was not paid for. My best work is done without pay.
Commercial software development
When I have to satisfy an employer, they don’t want quality code. They want fast code. They want band-aid fixes. The corporate structure is too myopic to optimize for quality.
Anti-gold-plating:
I was once back-roomed by a manager and lectured for “gold plating”. That means I was producing code that was higher quality than what management perceives as economically optimal.
Bug fixes hindered:
I was caught fixing some bugs conveniently as I spotted them when I happened to have a piece of code checked out in Clearcase. I was told I was “cheating the company out of profits” because they prefer if the bugs each go through a documentation procedure so the customer can ultimately be made to pay separately for the bug fix. Nevermind the fact that my time was already charged anyway (but they can get more money if there’s a bigger paper trail involving more staff). This contrasts with the “you get what you pay for” narrative since money is diverted to busy work (IOW: working hard, not smart).
Bugs added for “consistent quality”:
One employer was so insistent on “consistent quality” that when one module was higher quality than another, they insisted on lowering the quality of the better module because improving the style or design pattern of the lower quality piece would be “gold plating”. This meant injecting bugs to achieve consistency. The bugs were non-serious varieties; more along the lines of needless complexity, reduced performance, coding standard non-compliances, etc, but nonetheless something that could potentially be charged to the customer to fix.
Syntactic dumbing-down:
When making full use of the language constructs (as intended by the language designers), I am often forced by an employer to use a more basic subset of constructs. Employers are concerned that junior engineers or early senior engineers who might have to maintain my code will encounter language constructs that are less common and it will slow them down to have to look up the syntax they encounter. Managers assume that future devs will not fully know the language they are working in. IMO employers under-estimate the value of developers learning on the job. So I am often forced avoid using the more advanced constructs to accommodate some subset of perceived lowest common denominator. E.g. if I were to use an array in bash, an employer might object because some bash maintainers may not be familiar with an array.
Non-commercial software development
Free software developers have zero schedule pressure. They are not forced to haphazardly rush some sloppy work into an integration in order to meet a deadline that was promised to a customer by a manager who was pressured to give an overly optimistic timeline due to a competitive bidding process. #FOSS devs are free to gold-plate all they want. And because it’s a labor of love and not labor for a paycheck, FOSS devs naturally take more pride in their work.
I’m often not proud of the commercial software I was forced to write by a corporation fixated on the bottom line. When I’m consistently pressured to write poor quality code for a profit-driven project, I hit a breaking point and leave the company. I’ve left 3 employers for this reason.
Commercial software from a user PoV
Whenever I encounter a bug in commercial software there is almost never a publicly accessible bug tracker and it’s rare that the vendor has the slightest interest in passing along my bug report to the devs. The devs are unreachable by design (cost!). I’m just one user so my UX is unimportant. Obviously when I cannot even communicate a bug to a commercial vendor, I am wholly at the mercy of their testers eventually rediscovering the same bug I found, which is unlikely in complex circumstances.
Non-commercial software from a user PoV
Almost every FOSS app has a bug tracker, forum, or IRC channel where bugs can be reported and treated. I once wrote a feature request whereby the unpaid FOSS developer implemented my feature request and sent me a patch the same day I reported it. It was the best service I ever encountered and certainly impossible in the COTS software world for anyone who is not a multi-millionaire.
I feel this take misses the picture a bit in terms of the strengths and weaknesses of FOSS vs commercial software. FOSS is great at building tools for common or popular problems, but starts to run into challenges in solving problems that are some combination of niche, unfun, too big, or too hard.
For example, I needed to export thousands of scheduled jobs off of an IBM mainframe and onto a different platform as part of switching to a COTS ERP. Should I task an internal team of developers to write a one off? Would any open source solution exist? There aren’t a ton of zOS open source projects out there, in part because there just aren’t a lot of zOS systems programmers out there. They’ve all been frozen in carbonate to solve the Y3K problem, lol. No, in this case I light a pile of money on fire and pay Computer Associates for their commercial tool which generated an XML file almost a million lines long (just the jobs and scheduling parameters/dependencies). And it just worked, insofar as any ERP migration just works.
Another factor is the time it can take for a FOSS project to mature. No one would try and say that Octave is a 1-1 replacement for Matlab. Indeed, it wasn’t until jupyter notebooks came along in Python that I felt I really had a good Matlab alternative, and even then, some less common packages don’t have a good FOSS alternative in Python. I still remember the first time getting some of the open source convex analysis packages going on Linux. It was a nightmare of dependencies and didn’t have all the capabilities of the commercial solutions, because that type of mathematical software development is really, really hard.
Additionally, commercial software is helpful at supplying services with ongoing costs. E.g., office 365 with OneDrive would require rolling my own NextCloud with libre office or something similar to get anywhere near the functionality I get from a family Microsoft 365 account out of the box.
I’m all for FOSS, but a tool is a tool, and sometimes commercial software fills needs that just aren’t going to realistically attract a developer community. However, my favorite client tools are usually open source and I like being able to pilfer the code for my own projects.
Edit: I also wanted to add that I did commercial software development at one point, and I got to solve some really difficult, deep technical issues. It may sound really lame, but the work I did on search optimization for a commercial tool was really rewarding. Taking something that lots of people had to use and improving the execution time of arbitrary queries from minutes to seconds was a blast and important to the org, and something I was able to take the time to get right. I’ve also just had to bang out some CRUD code too, so of course it varies, but not every commercial code outfit it terrible to work for. And the hardware and OS on tools like Palo Alto firewalls just wouldn’t get made through open source alone.