L’ingegneria del software è una disciplina ingegneristica o no?

Sì. E no.

Il software può certamente essere progettato e implementato usando principi di ingegneria. Direi che le persone che possono farlo si sono di fatto guadagnate il titolo di ingegnere del software.

Ma c'è un sacco di cattivo software. Anche il software popolare può essere piuttosto cattivo dal punto di vista della progettazione ingegneristica.

Quora è patetico. NextDoor è imbarazzante. Slack sembra funzionare a malapena. L'app di Facebook è ridicolmente enorme e ingombrante per quello che fa; il solo fatto di averla installata sul tuo telefono rallenta il tuo telefono, anche quando non la stai usando.

Nessuno di questi si qualifica come ingegneria. Eppure tutte queste aziende hanno successo.

Tutte queste aziende potrebbero risparmiare milioni di dollari all'anno in costi di hosting (per non parlare di milioni di tonnellate di emissioni di CO2 come risultato dello spreco di elettricità), ed essere molto più protette dagli exploit, utilizzando l'effettiva ingegneria del software.

Il fatto che non lo facciano è spesso usato come scusa per ignorare i principi di ingegneria del software. Ma non tutte le aziende sono un unicorno sostenuto da capitale di rischio. Specialmente quando si ha una startup avviata, non si possono sempre spendere milioni di dollari in spese di hosting e sviluppo di emergenza fino a quando non si riesce a capire come ridurre i costi fino al punto in cui si è redditizi.

Ma resta il fatto che molte aziende non si preoccupano veramente dell'ingegneria del software. Anche se i loro biglietti da visita dicono "ingegnere del software".

Heck, Facebook aveva il motto "move fast and break things". Questo è praticamente l'opposto dell'ingegneria.

Ma la NASA ha appena messo un lander su Marte, usando l'IA per scegliere dinamicamente un sito di atterraggio, farvi volare una gru aerea, abbassare il lander a terra e poi volare via a distanza di sicurezza. Questa è ingegneria del software. Ed è anche vera ingegneria; non mi interessa cosa dice qualsiasi snob del termine.

E c'è molto spazio tra "muoversi velocemente e rompere le cose" e la NASA. Non so esattamente dove tracciare la linea, ad essere onesti. So che almeno so come fare ingegneria. E so che i budget non consentono sempre un trattamento ingegneristico completo.

Ma iniziare con una mentalità ingegneristica piuttosto che con un approccio del tipo "metti insieme delle stronzate e spera che funzionino" ti porterà molto più lontano, molto più velocemente. E le persone che tendono verso la mentalità ingegneristica finiscono per ottenere un software migliore.