Si dice spesso che l'industria del software è immatura rispetto alla produzione. In particolare per quanto riguarda il processo guidato.
Domanda : Possiamo noi come sviluppatori imparare dai processi dell'industria manifatturiera? L'adozione dei loro processi può aumentare il tasso di successo dello sviluppo del software?
Il mio take : Nella produzione la creazione di un prodotto è strongmente guidata dai processi. Potresti avere una fabbrica in cui ogni persona ha una serie specifica di attività che seguono. Un lavoratore (o un robot) può stringere una vite tutto il giorno. Quindi il prossimo compito nel processo viene eseguito dal prossimo specialista. I lavoratori (e i robot) non scoraggiano il processo o inventano qualcosa "al volo". Le parti sfornano attraverso il processo e l'output è un prodotto finito. Funziona bene e le aziende ottengono prodotti privi di difetti 99.99966%. Le aziende appianano le inefficienze nel tempo. Questo è impressionante e molto bene potrebbe essere il segno di un'industria matura.
Nella produzione di un processo definito è possibile creare letteralmente il prodotto finito. Non penso che questo sia il caso del software. Potremmo avere processi per il controllo del codice sorgente, la revisione del codice, i fogli di controllo, la raccolta dei requisiti, l'SDLC, ecc. Ma l'esecuzione di tali processi non crea di per sé un prodotto finito. Questi processi possono essere utili, ma sono ortogonali alla creazione effettiva.
Supponiamo che la tua azienda abbia un contratto per creare software che cercherà milioni di immagini per trovare i volti di un criminale. Nonostante il pesante ambiente guidato dai processi, lo sviluppatore deve impegnarsi a creare cose "al volo". Fare le cose al volo è contro lo spirito di produzione. Un buon processo di produzione può essere eseguito senza il pensiero di un robot.
Per la creazione di algoritmi complessi che devono ancora essere sondati nella mente di un umano, è una necessità creare cose al volo. Lo sviluppo del software non è il seguito di un processo, ma la creazione di un processo che deve essere elaborato da un computer. Questa è una differenza fondamentale. Indipendentemente dal numero di processi ortogonali che sviluppiamo nello sviluppo, ricorreremo sempre a farlo "al volo" quando si tratta di creazione.
Tutti quelli con cui parlo sembrano essere d'accordo con la mentalità manifatturiera. Sono solo nei miei pensieri?
Modifica : ho accettato una risposta. E la mia mente è inventata.
[inizio lezione]
Dichiaro che il campo dell'ingegneria del software ha grossolanamente frainteso la natura dei processi. Un processo è un insieme di passaggi. Se qualcosa può essere espresso come una serie di passaggi, può essere automatizzato (o almeno gli aspetti di alto livello possono essere applicati a memoria). L'automazione non può eseguire la creazione originale, quindi tutti i processi sono ortogonali alla creazione.
Penso che la nostra migliore scommessa sia di venire a patti che i processi che adottiamo sono ortogonali. Non possiamo mai uscire dalla nostra "immaturità". È la fisica della creazione che ci farà percepire come immaturi per sempre.
[/ end lecture]