Quali sono i maggiori problemi nell’ingegneria del software?

Il problema dell'igiene.

Un fattore di igiene è un termine usato dallo psicologo Frederick Herzberg, che stava scrivendo sulla soddisfazione sul lavoro; ma si applica anche ad altre cose. Essenzialmente, un Fattore di Igiene è una proprietà di un servizio, lavoro, prodotto, ecc. che non può mai fornire soddisfazione positiva, ma può fornire insoddisfazione se è assente. Questo di solito perché è qualcosa che si presume essere presente. L'igiene stessa risulta essere un grande esempio: nessun ristorante farebbe mai una pubblicità che dice "Tutti i nostri chef si lavano le mani dopo essere stati in bagno! Questa è certamente una buona proprietà di un ristorante, ma tutti darebbero comunque per scontato che sia vero.

Purtroppo, con il software, cose come la sicurezza e l'affidabilità - che sono molto più difficili da fornire - tendono a comportarsi come fattori di igiene per la maggior parte degli utenti ad eccezione di pochi acquirenti aziendali estremamente tecnici. È lo stesso problema; mettere "questo programma non farà crashare il tuo computer!" o "eseguire questo programma non farà violare il tuo computer!" sulla tua pubblicità non renderà il prodotto più attraente per la maggior parte dei clienti (tranne, forse, per gli acquirenti di server aziendali)

E questo è un problema che ogni manager di software conosce. Quando un programma ha una falla di sicurezza catastrofica, cosa succede quando viene scoperta? Viene patchato. La gente non smette di usare il programma. Di solito a causa di una combinazione tra inerzia al cambiamento (o lock-in) e sicurezza come igiene.

Che cosa dice questo ai produttori di software? Non preoccupatevi di rendere il vostro software sicuro, perché se vi prendete del tempo per farlo, il vostro concorrente vi batterà sul mercato. Quando le loro falle di sicurezza verranno fuori, potranno semplicemente applicare una patch. La gente non passerà al vostro programma. E voi andrete in rovina.

Lo stesso tende ad applicarsi all'affidabilità, alla compatibilità, al futureproofing, e anche a fattori che sono invisibili agli utenti se non nel tempo - come la qualità del codice (che è visibile all'utente solo in termini di velocità ed efficacia degli aggiornamenti). E sta mordendo l'informatica e il software in tutti i posti.