Domanda: Come sviluppatori possiamo imparare dai processi dell'industria manifatturiera? L'adozione dei loro processi può aumentare il tasso di successo dello sviluppo del software?
Risposta: Sì, certo. Ci sono molte lezioni che gli sviluppatori di software possono imparare dalla produzione nonostante il fatto che lo sviluppo del software sia un processo creativo. Lo sviluppo del software è esso stesso un processo e include molti altri processi. Migliore è la definizione e il controllo di tali processi, migliore è il controllo complessivo del processo di sviluppo del software. Ciò non significa che dovresti prescrivere ogni sequenza di tasti eseguita da uno sviluppatore; significa solo che come sviluppatore, esegui naturalmente le attività in un certo ordine e tali attività possono spesso essere gestite. Ecco alcuni esempi:
rilevamento dei difetti: quando viene rilevato o segnalato un bug, cosa succede? Lo scrivi su un pezzo di carta e lo attacchi su un picco di "investigazione"? Successivamente rimuovi quei frammenti uno alla volta, li indaga e alla fine li sposti sul picco "risolto"? Se lo fai senza fallo ogni volta che ricevi una segnalazione di bug, hai un processo ben definito e misurabile e probabilmente stai molto meglio di qualcuno che ha un sistema di tracciamento di difetti sofisticato e altamente tecnologico che è così oneroso che alcuni membri del team tengono traccia dei bug in altri modi o per niente.
controllo versione: c'è una buona probabilità che tu usi il controllo versione dove lavori, e il controllo versione è ovviamente molto più utile quando tutti lo usano allo stesso modo.
design del prodotto: decidi quali funzioni implementare lanciando le freccette contro un muro coperto di post-it? Se è così, hai un processo. Non penso che qualcuno sosterrebbe che è un ottimo processo, ma almeno è un punto di partenza. Se si modifica il processo, come è possibile sapere con certezza che il cambiamento è stato effettivamente un miglioramento a meno che non si misuri prima e dopo? Non puoi.
revisioni del codice: una revisione del codice sarebbe utile se il processo di revisione e i criteri di codifica cambiassero per ogni revisione? Ovviamente no.
ciclo di vita dello sviluppo software: l'intera analisi -> progettazione -> implementazione -> test -> ciclo di manutenzione è un processo che dovrebbe essere definito chiaramente.
In ciascuno di questi casi, disporre di un processo consente di misurare input e output e determinare se le modifiche apportate producono l'effetto desiderato. Non avere processi in atto significa che stai solo indovinando quando cerchi di migliorare il tuo modo di lavorare. Questo è veramente ciò che riguarda la produzione e ha senso prendere in prestito i successivi strumenti di perfezionamento della produzione solo quando sono appropriati.
C'è un intero campo dedicato alla definizione e al miglioramento dei processi utilizzati per creare e mantenere software; si chiama ingegneria del software . Non sorprende che tu abbia domande sul processo di sviluppo durante la lettura di CMMI - CMMI è un prodotto del Software Engineering Institute .
Lo sviluppo del software ha già adottato molti concetti di produzione:
È difficile non vedere l'influenza delle parti intercambiabili di Eli Whitney sia sullo sviluppo OOP che su quello basato su componenti .
Le tecniche di gestione del progetto utilizzate nello sviluppo del software non sono molto diverse da quelle sviluppate per la produzione. Come solo due esempi, solo recentemente il mondo del software ha adottato il concetto Kanban che è stato sviluppato decenni fa alla Toyota, e le carte Gantt sono state utilizzate nella produzione molto prima che il primo computer elettronico fosse costruito.
Metodologie di gestione della qualità come Six Sigma sviluppate per la produzione sono state adattate allo sviluppo del software.
Nonostante l'ambiente pesante guidato dai processi, lo sviluppatore deve impegnarsi a creare cose "al volo".
Mi stai dicendo che qualcuno deciderà da solo di aggiungere una patch al pacchetto di riconoscimento facciale e lo aggiungerà alla build di produzione senza prima creare un problema nel sistema di tracciamento, dopo aver rivisto il design, controllando il codice nel controllo della versione, o facendo in modo che gli addetti ai test lo guardino prima? Il nostro processo richiede queste cose per delle ottime ragioni. Se per "al volo" intendi "al di fuori del processo", è inaccettabile.
Fare le cose al volo è contro lo spirito di produzione.
Ancora una volta, se "al volo" significa "al di fuori del processo", hai ragione. Ma se pensi che la produzione non richieda rapidità di pensiero e sviluppo di soluzioni creative ai problemi, ti sbagli. Tutti i tipi di problemi sorgono nel processo di produzione: i cupcake non hanno abbastanza riempimento di crema, le superfici verniciate smettono improvvisamente di superare il test antigraffio del QA, il 20% delle parti finite manca un importante anello di ritenzione, il sistema di miscelazione dell'impasto ha rotto un parte critica ...