Those of us who love Linux and other free and open source software are already well-acquainted with the many benefits of FOSS: flexibility, security, customizability and freedom from vendor lock-in, to name just a few.
Quality, of course, is another big one, at least in part because there are typically so many people around the globe constantly improving the code.
There may also be another reason behind that superior quality, however. Specifically, it was recently suggested that volunteer programmers actually write better code than paid ones do.
‘One Word: Dilbert’
“Why do volunteers write better code? One word: Dilbert,” wrote Carla Schroder in a recent story on LXer. “It’s not that devs who work for big companies have inferior skills — it’s all the roadblocks businesses put in the way of the people who care about the work: the marketers, the useless in-the-way managers, the corporate goals which are so often antithetical to releasing quality products that customers like, and all the time- and talent-wasters that make corporate America more like adult daycare.”
Schroder’s piece was spurred by the comments of Michael Meeks, SUSE’s desktop architect and senior LibreOffice developer, in a discussion of the behind-the-scenes goings-on at the LibreOffice project, she explained.
Schroder herself, however, clearly agreed.
“There is another reason for volunteers writing better code, and I’m far from the first one to mention this — reputation,” she added. “FOSS developers sign their work; there is nowhere to hide.”
‘It’s Human Nature’
As for the rest of the FOSS community? Well, let’s just say the topic seemed to strike a chord.
“Of course volunteers do better work as long as they are in it for the long haul,” opined blogger Robert Pogson, for example.
“Brief involvement does not count for much except bug killing,” Pogson added. “It’s human nature to do better work when you are doing something you choose to do instead of something the boss orders. That’s true for chopping wood, gardening or making software.”
‘I Certainly Agree’
“My experience is that independent contributors indeed write better code than employees,” agreed Chris Travers, a Slashdot blogger who works on the LedgerSMB project. “Although there are exceptions, a project that is up and running can reject those easily.”
So, “in that regard, I certainly agree that volunteers do in fact write better code, but I’d have to include those who do sponsored development as a consulting practice.”
Consultant and Slashdot blogger Gerhard Mack agreed with Schroder’s “reputation” point, in particular.
“Volunteers don’t always write better code, but a skilled programmer will often produce better code when his/her peers are watching,” Mack told Linux Girl.
‘The Busted Toilet Problem’
For Slashdot blogger hairyfeet, on the other hand, the idea was downright laughable.
“Do volunteers write better code? BWA HA HA HA HA,” hairyfeet exclaimed. “Oh wait, you were serious? BWA HA HA HA HA!”
In fact, “volunteers are exactly what is WRONG with FOSS,” hairyfeet opined.
“I call it the busted toilet problem,” he explained. “Like fixing a busted toilet, doing bug fixing and QA is long, boring, nasty and thankless work, so if the guy isn’t getting paid to do it? It don’t get done, PERIOD.”
When software has “show-stopping bugs” that don’t get fixed, “then free as in beer becomes free as in worthless, because if it don’t do what I need it to, what good is it to me?” hairyfeet concluded.
Last but certainly not least, Barbara Hudson, a blogger on Slashdot who goes by “Tom” on the site, took a more measured view.
“I know it’s going to sound like a cop-out, but I say, ‘It depends,'” Hudson told Linux Girl. “It depends on the task at hand, the final objective, and what resources (time and money) are available.”
For trivial tasks, for example, “if whatever you can throw together quickly gets the job done with no errors, then it’s ‘the best code’ even if it’s something so bad you hope nobody ever sees it,” Hudson explained.
On the other hand, “when it comes to code that’s going to be used for years, whether in a commercial or non-commercial project, even the definition of ‘better code’ is subject to debate,” she added. “For example, do you try to anticipate future needs and change requests by including extra code, or put in the minimum necessary to get the current job done?”
‘Empowered People Are Motivated People’
What’s not debatable, though, “is that micro-managing by non-programmers leads to bad code,” Hudson agreed. “We all have our horror stories. A lot of them come from management implementing new ‘controls’ on developers to avoid dealing with the fact that they caused the problems in the first place.”
On volunteer projects, by contrast, “contributors — whether they’re managers, programmers or artists, testers or documentors — are all in it for a common cause,” she noted. “While the give-and-take can get intense, there’s no ‘I’m paying you to do this so you’re going to do it this way or you’re fired I don’t care what you think.'”
Instead, “people are expected to be accountable to each other and are owed an explanation if there’s a need to change something, or to do something differently than previously agreed upon,” she added. “This two-way accountability empowers people, and empowered people are motivated people. Motivated people put more of themselves into their work, both in terms of effort and the extra personal touch.”
‘In Vino Veritas’
Because of the distributed nature of volunteer projects, meanwhile, “there are far fewer Powerpoints,” Hudson said. “Powerpoint kills more brain cells than booze ever will.”
In fact, “the time and money wasted in paying people to prepare and sleep through Powerpoints would probably give a better return if it were invested in a round of drinks and frank discussion at a local pub or restaurant,” Hudson suggested.
Of course, “the risk is that management might not like what they hear after a round or two of ‘in vino veritas,'” she added.
I’d just like to expand a bit on what I call the "busted toilet" problem, which as a guy that sells and fixes PCs I believe I have an insight into since I AM the guy many call to "fix the busted toilet" as it were.
Go to ANY distro you like that has a bug tracker, any one. Look up bugs more than a year old, then look at bugs more than TWO years old. Do they have bugs more the THREE? FOUR? You’ve just ran straight into the busted toilet problem. It is really simple folks, and why companies like Apple, MSFT, Google, Adobe, etc have to pay all these coders.
You see NOBODY wants to be the guy who fixes the toilet, nobody. EVERYBODY wants to be the guy who makes the cool discovery, who designs the cool software, the guy who comes up with the next photoshop or Angry Birds. That is why you have to PAY to have the toilets fixed because otherwise? Nobody would fix it. Be honest if YOUR boss said "On top of your normal job I say you are gonna clean and fix the toilets" would YOU do it?
Of course not and therein lies the problem. All volunteer means everyone is working on what they WANT to and the HAVE TOs simply don’t get done. New versions? Not a problem. Bug fixes and QAs and all the nasty jobs? Don’t get done. But to make a truly great product (which if you are honest that is what Linux is, you have competitors and you want the masses to choose YOU and NOT them) then someone has to do the dirty jobs, somebody has to fix the toilets. But in Linux far too often you have this great looking building with busted toilets, leaky plumbing, and duct tape everywhere. that is because everyone is doing the cool jobs and NOBODY wants to do the lousy ones, not for free.