| ▲ | dstroot 5 hours ago | |||||||||||||||||||||||||||||||
> I'm not even sure building software is an engineering discipline at this point. Maybe it never was. If I engineer a bridge I know the load the bridge is designed to carry. Then I add a factor of safety. When I build a website can anyone on the product side actually predict traffic? When building a bridge I can consult a book of materials and understand how much a material deforms under load, what is breaking point is, it’s expected lifespan, etc. Does this exist for servers, web frameworks, network load balancers, etc.? I actually believe that software “could” be an engineering discipline but we have a long way to go | ||||||||||||||||||||||||||||||||
| ▲ | parliament32 5 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||
> can anyone on the product side actually predict traffic Hypothetically, could you not? If you engineer a bridge you have no idea what kind of traffic it'll see. But you know the maximum allowable weight for a truck of X length is Y tons and factoring in your span you have a good idea of what the max load will be. And if the numbers don't line up, you add in load limits or whatever else to make them match. Your bridge might end up processing 1 truck per hour but that's ultimately irrelevant compared to max throughput/load. Likewise, systems in regulated industries have strict controls for how many concurrent connections they're allowed to handle[1], enforced with edge network systems, and are expected to do load testing up to these numbers to ensure the service can handle the traffic. There are entire products built around this concept[2]. You could absolutely do this, you just choose not to. [1] See NIST 800-53 control SC-7 (3) [2] https://learn.microsoft.com/en-us/azure/app-testing/load-tes... | ||||||||||||||||||||||||||||||||
| ▲ | beachy 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
Software and bridges are entirely different. If I need a bridge, and there's a perfectly beautiful bridge one town over that spans the same distance - that's useless to me. Because I need my own bridge. Bridges are partly a design problem but mainly a build problem. In software, if I find a library that does exactly what I need, then my task is done. I just use that library. Software is purely a design problem. With agentic coding, we're about to enter a new phase of plenty. If everyone is now a 10x developer then there's going to be more software written in the next few years than in the last few decades. That massive flurry of creativity will move the industry even further from the calm, rational, constrained world of engineering disciplines. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | radiorental 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
>I actually believe that software “could” be an engineering discipline but we have a long way to go It certain mission critical applications, it is treated as engineering. One example - https://en.wikipedia.org/wiki/DO-178B | ||||||||||||||||||||||||||||||||
| ▲ | jimbokun 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
We have a long way to go but large software companies have gotten really, really good at scaling to handle larger and larger traffic loads. It's not like there are no materials to consult to learn current best practices, even if there are still more improvements to be made. | ||||||||||||||||||||||||||||||||
| ▲ | rdiddly 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
The way the authors of the book on material strengths got those numbers, was through testing. If you're using mature technologies, that testing has been done by others and you can rely on it for your design, at least in a general way. Otherwise you have to do the testing yourself, which is something a structural engineering project might do also, if it's unusual in some way. | ||||||||||||||||||||||||||||||||
| ▲ | jr3592 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
There are also fundamentally different acceptance criteria for a bridge vs a website. Failure modes differ. Consequences of failure are nowhere near the same, so risk tolerance is adjusted accordingly. Perhaps true "engineering" really boils down to risk management... is what you're building so potentially destructive that it requires extremely careful thought and risk management? Engineering. If what you're building can fail, and really cause no harm, that's just building. | ||||||||||||||||||||||||||||||||
| ▲ | wat10000 5 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||
I think it is in certain very limited circumstances. The Space Shuttle's software seems like it was actually engineered. More generally, there are systems where all the inputs and outputs are well understood along with the entire state space of the software. Redundancy can be achieved by running different software on different computers such that any one is capable of keeping essential functions running on its own. Often there are rigorous requirements around test coverage and formal verification. This is tremendously expensive (writing two or more independent copies of the core functionality!) and rapidly becomes intractable if the interaction with the world is not pretty strictly limited. It's rarely worth it, so the vast majority of software isn't what I'd call engineered. | ||||||||||||||||||||||||||||||||