Riutilizzo del codice come problema
Stavo pensando a questa domanda sulla consegna del software e ho continuato a tornare al problema della ripetibilità e / o della riproducibilità . Sono importanti, perché se non ripeti un progetto diventa più difficile migliorare il processo che hai usato per costruire il progetto. L'ingegneria comporta il costante miglioramento dei processi coinvolti nella progettazione e costruzione al fine di produrre progetti di qualità superiore.
Il software può fare molto affidamento sul riutilizzo grazie alla sua forma digitale. Invece di riscrivere un modulo, lo chiamiamo di nuovo o lo copiamo sull'altro sistema. Alcuni esempi sono l'autenticazione / login o forse una funzione di registrazione. Ci sono molti esempi ben noti per quelle categorie, e la saggezza convenzionale è quella di riutilizzare ciò che esiste invece di far rotolare la tua.
Alcuni confronti con altre discipline
Costruzione
Al contrario, la costruzione di sistemi fisici (edifici, ponti) non è affatto riutilizzabile. È vero che il progetto di una casa può essere riutilizzato più volte per costruire la stessa copia della casa, ma la costruzione deve essere eseguita ogni volta. Cut & Paste non funziona così nel mondo analogico. I progetti Bridge sono meno riutilizzabili rispetto alle case perché le condizioni del sito possono variare.
I costruttori principali sono esperti riconosciuti per aver progettato e / o costruito decine, centinaia o migliaia di cose nella loro area. Ad esempio, Frank Lloyd Wright , architetto e designer di fama mondiale designed more than 1,000 structures and completed 532 works
. In contrasto con Anders Hejlsberg che ha disegnato "solo" cinque lingue (Turbo Pascal; Delphi; J ++; C #; dattiloscritto). In molti modi, è un confronto ingiusto perché i domini sono diversi. Ma a livello generale, la produzione quantificabile di due persone molto intelligenti è molto diversa.
Arti marziali
Gli artisti marziali diranno che la padronanza di una mossa proviene solo da migliaia di ripetizioni. Dopo che una buona parte di quelle ripetizioni è stata introdotta, 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 propositivo, oltre ad avere un'economia di movimento. Allo stesso modo, gli artisti marziali esperti sono in grado di raccogliere katas più complessi più rapidamente rispetto agli studenti meno esperti. L'esperienza della ripetizione ha fornito loro una struttura o un processo che consente loro di apprendere più rapidamente.
Lavorazione del legno
I falegnami sperimentano una trasformazione simile. I falegnami hobbisti fanno sempre riferimento al loro primo progetto che ha richiesto molti cassetti. Se completano il progetto, ottengono un nuovo apprezzamento per l'efficienza che le linee di assemblaggio producono. Ci sono altri vantaggi come una migliore comprensione di come disporre le parti dei cassetti sul supporto in fogli al fine di massimizzare l'uso del legno. Rispetto agli hobbisti, i falegnami professionisti sono in grado di progettare, avviare e costruire più rapidamente oggetti che hanno realizzato molte volte in precedenza. Inoltre acquisiscono la capacità di vedere i problemi inerenti al progetto di qualcun altro dopo aver commesso quell'errore nel loro lavoro.
Quindi, il riutilizzo del software impedisce agli sviluppatori di software di diventare più competenti?
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, lo facciamo. Preferibilmente estenderemo 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 buon praticante.
La mia domanda: la possibilità di riutilizzare il software impedisce il necessario miglioramento del processo e l'efficienza derivanti dalla ripetizione di un progetto?