Riutilizzo del codice come problema
Stavo pensando a questa domanda sulla consegna del software, e ho continuato a tornare sul problema ripetibilità e / o riproducibilità . Hanno importanza, perché se non ripeti un progetto, diventa più difficile migliorare il processo che hai usato per costruire il progetto. L'ingegneria comporta un costante miglioramento dei processi coinvolti nella progettazione e costruzione per produrre progetti di qualità superiore.
Il software può fare molto affidamento sul riutilizzo a causa della sua forma digitale. Invece di riscrivere un modulo, lo chiamiamo di nuovo o lo copia sull'altro sistema. Alcuni esempi sono autenticazione / login o forse una funzione di registrazione. Ci sono molti esempi ben noti per queste categorie e saggezza convenzionale è quello di riutilizzare ciò che esiste invece di far girare il tuo.
Alcuni confronti con altre discipline
Edilizia
Al contrario, la costruzione di sistemi fisici (edifici, ponti) non è neanche lontanamente riutilizzabile. È vero che il progetto di una casa può essere riutilizzato molte volte per costruire la stessa copia della casa, ma la costruzione deve essere eseguita ogni volta. Taglia e amp; incolla non funziona così nel mondo analogico. I progetti di bridge sono meno riutilizzabili delle case perché le condizioni del sito variano.
I maestri costruttori sono esperti riconosciuti per aver progettato e / o costruito decine, centinaia o migliaia di cose nella loro area. Ad esempio, Frank Lloyd Wright , un architetto e designer di fama mondiale designed more than 1,000 structures and completed 532 works
. Contrastalo con Anders Hejlsberg che ha progettato "solo" cinque lingue (Turbo Pascal; Delphi; J ++; C #; Typescript). In molti modi, è un paragone ingiusto perché i domini sono diversi. Ma a un livello più ampio, la produzione quantificabile di due persone molto intelligenti è molto diversa.
Arti marziali
Gli artisti marziali diranno che la padronanza di una mossa viene solo da migliaia di ripetizioni. Dopo che una buona parte di quelle ripetizioni è stata inserita, molti artisti marziali sono sorpresi di come un kata o una forma precedentemente percepiti siano diventati semplici. Gli istruttori di quegli studenti noteranno anche come il movimento diventa più fluido e deciso oltre ad avere un'economia di movimento. Allo stesso modo, gli esperti di arti marziali sono in grado di raccogliere più complessi kata più rapidamente rispetto agli studenti meno esperti. L'esperienza della ripetizione ha dato loro un quadro o un processo che consente loro di imparare più rapidamente.
Lavorazione del legno
I falegnami sperimentano una trasformazione simile. I falegnami dell'hobbista fanno sempre riferimento al loro primo progetto che richiedeva molti cassetti. Se completano il progetto, ottengono un nuovo apprezzamento per le efficienze prodotte dalle linee di assemblaggio. Ci sono altri vantaggi come una migliore comprensione di come disporre le parti dei cassetti sulla lamiera per massimizzare l'uso del legno. Rispetto agli hobbisti, i professionisti del legno sono in grado di progettare, avviare e costruire più rapidamente oggetti che hanno realizzato molte volte in precedenza. Hanno anche la possibilità di vedere i problemi inerenti alla progettazione di qualcun altro che hanno commesso questo errore nel loro lavoro.
Quindi, il riutilizzo del software impedisce agli sviluppatori di software di diventare più abili?
In molti modi, la progettazione e la costruzione del software sono sempre nuove. Non ripetiamo i lavori passati, perché se riusciamo a riutilizzare un modulo, una libreria o un sistema, allora lo facciamo. Preferiremo estendere un sistema esistente prima di riscrivere l'intera cosa da zero. Ma la ripetizione è ciò che ci consente di trovare efficienza nella progettazione e nella costruzione. Chiunque abbia praticato uno sport o un'attività fisica ti dirà che la ripetizione è la chiave per diventare un bravo professionista.
La mia domanda: la capacità del software di essere riutilizzata impedisce il miglioramento del processo e l'efficienza necessari derivanti dalla ripetizione di un progetto?