4 ms·
What this article really boils down to is the usual coder arrogance: Thinking that most problems are inherently simple[1], thinking they are a better coder than
by stupidcar 6y ago
What this article really boils down to is the usual coder arrogance: Thinking that most problems are inherently simple[1], thinking they are a better coder than average, and thinking that the answer is always to do more yourself, so that more of the codebase will benefit from your superior skills.
The truth is, there are no easy problems in programming. There are always a thousand corner cases and unexpected complexities. And all those buggy, unmaintained libraries you find in your language's package repository are still probably better than anything you're going to roll yourself. Look into the source code of such libraries and alongside the hacks and outdated code, you'll find hundreds of subtle problems avoided, because the author spent a long time and effort on the problem you've spent ten minutes thinking about.
The answer to quality problems in software engineering is not less libraries, it's more and better libraries. In the same way that the high-quality civil engineering the author admires is not achieved by having one person do everything themselves, but by the successful collaboration of a large number of skilled and specialised subcontractors.
Right now, we're still in the infancy of our industry. This, combined with continued the evolution of hardware capabilities has meant that software engineering has never had the long-term, stable base on which to build repeatable, reliable routes to success. That's fine. If we're in the same position in a couple of centuries, it's a problem, but right now we should be experimenting and failing.
Even today, the situation is not as bleak as if often portrayed in articles like this. There are a huge number of robust and high-quality libraries and frameworks providing extremely complex capabilities in an easily reusable way. If a programmer from the mid-nineties were to be transported to the present, I suspect they'd be amazed by what off-the-shelf libraries enable even a single programmer to do. The undeniable quality problems that do affect much modern software often have more to do with the hugely increased scope of ambition in what we expect software to do for us.
[1] Outside a handful, like encryption, that are acknowledged as hard for the purpose of being the exception that proves the rule.
- BurningFrog 6y ago> The truth is, there are no easy problems in programming. I've come to think of my work as figuring out ways to think about problems so they become easy. Not quite the same thing, I know.
- ddevault 6y agoArrogant programmer here. Simple != easy. It's much more difficult and more time-consuming to identify the simple solution than to implement the easy solution. I think that a diverse selection of libraries and tools exploring new problem spaces is good - but once the problem space is understood, we should replace them with something closer to the fundamental truth of the problem.
- tomlagier 6y ago> The answer to quality problems in software engineering is not less libraries, it's more and better libraries. In the same way that the high-quality civil engineering the author admires is not achieved by having one person do everything themselves, but by the successful collaboration of a large number of skilled and specialised subcontractors. I think one of the fundamental problems with our industry is that there is no funding mechanism for those subcontractors. The "base" that we build on is either unpaid volunteers, or tailored to a specific companies needs and goodwill. If free software was not the norm, I think we'd see a lot of investment and enterprise around producing high quality libraries.
- woliveirajr 6y agoAnd would those libraries suffer from piracy, as other answers pointed out... Even developers are willing to "not pay" if a library costs a fortune, with fortune being any point above $50
- anchpop 6y agoI recently wrote about this problem here [1]. I think "free" software should still be the norm, but companies who use it should have to pay into a fund that distributes the money to where it can be used most productively to make new and more useful libraries. Otherwise there's no sustainable way for most people to contribute to open-source and be paid for it. [1]: https://blog.andrepopovitch.com/complement-collution-paradox/ https://blog.andrepopovitch.com/complement-collution-paradox...