DEV Community

Discussion on: Computer Science vs Software Engineering

Collapse
 
xowap profile image
Rémy 🤖

Oh I'm not sure of the difference between the science and the engineering but one thing I can tell for sure is that the engineering is not nearly deserving its title. Not entirely through the fault of its practitioners though.

XKCD cartoon where software engineers explain they wouldn't trust software to vote

If you listen to SpaceX's spokesperson, he explained that putting humans into space is one order of magnitude more difficult than putting things into space, and putting cargo into space is already damn complex.

Althgouh it doesn't mean that SpaceX is using other-wordly tech, in fact some parts even are made in JavaScript and everything is done with a familiar stack (Linux, C++, etc).

So why can they shoot a capsule at 7.66 km/s to reach a 80cm pin-hole in space but I can't get my app to work for all my users?

The answer boils down to time and methodology. My clients expect things to be delivered fast at minimal cost and they are (somehow) ready to compromise on reliability for that. If a few percentage of people get an issue, they're definitely not going to die but on the other hand making sure that those bugs don't happen would probably take ten times the same amount of time with extensive testing, coding the same thing 3 times and making sure that all outputs concur at all times, analysing communication charts and planning for every single failure a counter-measure, ...

Regular software is: the user clicks on a button, the API doesn't reply, try to display an error in a not shitty way and that's it.

Engineered software would be: the user clicks a button, the API doesn't reply so a specific experience is triggered diagnosing the cause of the error (network error? dead API?) then the user would be instructed to wait, probably you'd need to start a background process in case the user closes the page and then retry until the API works again and make sure that it always stays consistent with the state of the application that you're displaying to the user and that they receive a proper notification when the action is done no matter what they are doing now. And you do this for every single API call.

That would totally blow up software costs. So, we're using software science to do software, but definitely few of us are properly engineering their software (and for good reason).

Collapse
 
phlash profile image
Phil Ashby

With you on most of this apart from the very end where you say 'properly engineering their software'. I would suggest that we are actually doing the 'engineering' part very well, balancing cost, capability and risk to meet the needs of our customers (just good enough to solve their problems) and ourselves (feeding the family!) in a free market system...

Kudos for SpaceX references ;)

Collapse
 
xowap profile image
Rémy 🤖

Indeed, I meant it in regard to people saying that bridge engineers can make a safe bridge and software engineers can't make anything safe and thus they are not proper engineers.

That asks a quite deep question of what is software engineering and what is just writing code that somehow works.