7 ms·
One of my favorite quotes from my old data structures professor in college was this: "software is non-linear." If you're laying down the bricks for a house, th
by 3PS 7y ago
One of my favorite quotes from my old data structures professor in college was this: "software is non-linear."
If you're laying down the bricks for a house, there really aren't any cheap tricks or shortcuts. Building two houses takes twice as many bricks as building a single house, and so on. We could say that brick usage scales linearly with house construction. This is a bit of a bummer for bricklaying enthusiasts, but on the other hand, a single brick out of place is probably not going to bring your roof crashing down.
Software is different. Often, the distinction between processing 100 files and 1,000 files is minimal at best. This ability to scale effortlessly is often the best thing about software, but the same non-linearity is also the price we pay for power. A single subtle programming error can cause millions of dollars' worth of damage and bring massive systems to a grinding halt.
Overall, I think this is what makes software interesting and exciting to work with, but I can understand how it can pose a steep challenge once things like reliability and security become major concerns. The way I see it, much of research and development into better programming languages and tools has been to see how we can systematically mitigate these kinds of propagating errors and make our systems more robust to mistakes.
- WalterBright 7y ago> If you're laying down the bricks for a house, there really aren't any cheap tricks or shortcuts. Oh, there are plenty of them. Substandard bricks, substandard mortar, inadequate foundation prep, walls not being straight and plumb, etc. It's just that brick construction is both easy to inspect and well known how to do it.
- 3PS 7y agoRight, sure. If I had to guess, though, bricklaying is still O(n) no matter how many corners you cut.
- deleted 7y ago[deleted]
- gbersac 7y agoNot sure, more and more building are done using pre-done walls. Mainly in China. https://www.youtube.com/watch?v=3Sh7hghljuQ https://www.youtube.com/watch?v=3Sh7hghljuQ
- chii 7y agoit's more that bricks have to follow the laws of physics. A building with bricks that don't have the quality required will collapse, and the builders will be found guilty. Software doesn't fail so dramatically - small annoyances, for example, is easily dismissed. Even if there are many of them.
- heartbeats 7y agoSmall annoyances such as water leaking in and causing mold, or windows losing too much heat to the outside?
- WalterBright 7y agoOr forgetting to put in the weep holes so water accumulates in the walls :-/
- heartbeats 7y agoCome on man, how can you be so stupid so as to forget something like that? This stuff is easy, just look over the code- I mean blueprints before commi- I mean building and you'll be fine. Everyone knows you're supposed to put the weep holes in, so make sure to do that.
- pjc50 7y agohttps://www.bbc.co.uk/news/uk-scotland-scotland-politics-39580308 https://www.bbc.co.uk/news/uk-scotland-scotland-politics-395... The collapse may be after some years. I can't find any evidence that the builders have even had to pay for remediation, let alone compensation. The Grenfell fire has an even more egregious problem in that the builders are being granted immunity from prosecution before testifying.
- nradov 7y agoThe most serious and expensive software quality problems tend to c result from requirements analysis failures. Better programming languages and tools can't do much to mitigate those mistakes.
- kqr 7y agoYes but aren't we past this "software development is a production process" misunderstanding by now? We have solved the production problem: I can churn out thousands of identical binaries per day through my build system. The production side of things are solved. Other disciplines look at us enviously for it. That's not where the troubles come in. The problems we face are generally those of design.
- TeMPOraL 7y agoOur production is done by absolute, complete idiots - computer programs. Compilers can't think and can't fix design mistakes for us. Contrast that with high-complexity engineering projects, e.g. fighter planes or Apollo project, where it usually turns out the official design specs tell at best half of the story, and most of the knowledge was contained in the heads of the builders, encoded in the shape and adjustments to tooling they used to build those vehicles. Which of course creates a problem today, now that both the tooling and the builders are long gone - but it demonstrates clearly how a build process made of people can fix a lot of errors in the design.
- kqr 7y agoInsightful perspective! Thanks.
- xorcist 7y agoAre you sure? Pretty much every book and methodology over the past two decades has focused on how software engineering needs to "grow up" and be more like other production industries. A cornerstone in the latest fad, "new agile" with books like the Phoenix Project, is how the software delivery process should learn from lean production industries.
- pjc50 7y agoThis is very popular with managers and funders who desperately want the predictability. Those pressures aren't going to go away. Doesn't mean it can be made to fit in that box, though.
- 7y ago