← Back to context

Comment by JohnMakin

2 hours ago

Software "engineering" also differs in the way from more formal engineering in that there are very rarely absolutes, there's often many different correct ways to solve a problem, each possessing their own pros and cons. So, it could feel like "guessing" choosing a certain approach over another, but more senior people usually have an intuition brought from experience which one will work better and be more informed of the tradeoffs, so it looks a lot less like guessing.

I once found a very interesting definition of engineering. It is about making something that just barely does the job. Doing it better costs more usually and doing it worse costs lives.

Not much different in software. There is always many ways of solving problems and that is typical of any engineering. Contrary to sciences.

I mean that is the case as well for other engineering principles. There is not just one way to design a working and steady bridge.

Yet when we talk about controlling trains, airplanes, freight ships, medical devices, nuclear power plants and space stuff we suddenly know how to do it?

There is software engineering and it is known how to do things that absolutely must not fail. It is just thst these standard are not commonly deployed if nobody forces you to deploy them. And why would you? Costs money and a software error is widely treated like divine intervention.

  • There is a big difference between knowing something must not fail, and how to make it so it will not fail. The latter is where opinions and approaches often differ, in ways that more formal engineering does not.

    I'm very wary of anyone in tech/software eng that says "this is the only right way to do this." I'm aware those attitudes exist everywhere.