Lo chiamano Real World ™ per un motivo.
Il 99% di ciò che incontrerai nel mondo reale delle aziende sarà considerato una merda, e per una buona ragione che spiegherò. L'1% che non è considerato merda alla fine diventerà una merda.
# 1 Scrivi codice, # 2 ????, # 3 Profitto!
Prima di tutto le imprese esistono per realizzare un profitto, non esistono per generare montagne di codice accademico perfettamente progettato e incontaminato, teoricamente pulito, ospitato in depositi d'oro di perfezione. Nemmeno vicino, nemmeno quelli nel settore della vendita del codice sorgente che producono.
Nel mondo degli affari il codice è un mezzo per raggiungere un fine . Se alcuni codici risolvono un problema aziendale e fanno più soldi di quanti ne siano necessari per creare e mantenere, allora è desiderabile per l'azienda. Impiegarti a scrivere codice è solo un modo per l'azienda di ottenere codice.
Teoria 0 - Pratica ∞
Idealmente la manutenzione dovrebbe essere più un problema, ma di solito non lo è, perché a breve termine non vince finanziariamente. A lungo termine, il software di solito ha un ciclo di vita relativamente breve, in particolare le applicazioni basate sul Web, diventano rapidamente obsolete e riscritte più spesso.
Le applicazioni aziendali sono quelle che sfornano come quelli che vengono percepiti come infiniti progetti di zombi a causa di molte ragioni basate sullo slancio. Questi progetti sono in realtà successi che continuano perché continuano a fare profitto per l'azienda.
In teoria non c'è differenza tra teoria e pratica. In pratica c'è. - Yogi Berra
In teoria, basi di codice perfettamente pulite e perfettamente pulite con coperture di codice al 100% dovrebbero far risparmiare denaro alle aziende, in pratica non si avvicina nemmeno alla consegna di qualcosa che si avvicini a un ritorno sull'investimento valido.
Fisica del ciclo di vita del software
C'è anche una forza di entropia super potente all'opera nel mondo del software. È un buco nero di inevitabilità che condanna tutti i software a degenerare in una grande palla di fango .
Più si parte da un BBM , meglio è, ma ogni sistema software alla fine ci arriverà con abbastanza tempo. La rapidità con cui ti avvicini al 100% di entropia è determinata da dove inizi e da quanto tempo accumuli debito tecnico e quanto è alto l'interesse su di esso.
I sistemi software degenerano e marciscono a causa della manutenzione, non a causa della mancanza di esso. Un sistema che esiste da anni senza modifiche al codice per definizione soddisfa tutti i suoi requisiti e obiettivi ed è un successo.
Sono i sistemi che richiedono un cambiamento costante perché sono partiti più vicini alla massima entropia, sono quelli che vengono costantemente stimolati e stimolati ed è la manutenzione che accelera il cambiamento negativo.
Abbastanza buono è abbastanza buono
I sistemi a ciclo di vita breve come i siti Web che cambiano costantemente non traggono vantaggio dalla costosa enorme progettazione anticipata con una copertura del codice del 100% nei test unitari, poiché i tempi di ammortamento sono troppo brevi per ricoprire i costi.
I sistemi a ciclo di vita lungo come la suddetta linea interna di app aziendali, non beneficiano in realtà di ingenti investimenti di test unitari di copertura del codice al 100%, poiché il tasso di cambiamento nel corso della vita del progetto si avvicina a una costante che è quasi zero in un moda non lineare.
Questo è il motivo per cui i piani di fine vita sono più importanti e i sistemi di sostituzione dovrebbero essere pianificati proprio nel momento in cui qualcosa viene rilasciato, non quando lo ha superato per alcuni anni e insopportabile, quindi un nuovo sistema deve essere messo in atto.
Per quanto ne so, non insegnano la BBM, non ho mai incontrato un neolaureato CS che sapesse di cosa si trattasse, tanto meno perché accada.
Ecco perché Good Enough è Good Enough , niente di più o di meno non lo è.
Slumlords del software
Ci sono signori dei bassifondi immobiliari per un motivo, fanno profitti sugli edifici fatiscenti che possiedono. Il guadagno è maggiore di quello che spendono per la manutenzione incrementale della proprietà fatiscente. In caso contrario, demolirebbero l'edificio e lo rimpiazzerebbero. Ma non lo fanno, perché i costi incrementali sono molto inferiori alla revisione o alla sostituzione dell'intero edificio. Ci sono anche clienti (inquilini) che sono disposti a pagare per la proprietà in rovina.
Nessun proprietario di un edificio, signore dei bassifondi o no spenderanno denaro in una proprietà solo a causa di una nozione accademica di perfezione che non si traduce in un profitto sostanziale rispetto al costo associato.
Nessun cliente pagherà per gli aggiornamenti di un sistema software che funziona in modo accettabile per loro. Nessuna impresa spenderà denaro semplicemente scrivendo e riscrivendo il codice per nessun profitto sostanziale tangibile.
Microsoft è lo slumlord software più dominante e di successo che ci sia. Windows non ha iniziato a ricevere importanti riscritture di base fino a poco tempo fa. E non hanno ancora eliminato tutto il codice legacy dal kernel. Non ha senso per loro, le persone sono più che disposte ad accettare il basso livello di aspettative che hanno fissato nell'ultimo decennio.
Prognosi
Questo è stato un modello per oltre 20 anni in cui sono stato nello sviluppo di software. Non cambierà presto. Questo non è il modo in cui le persone vogliono che esca da qualche sistema di credenze, è una realtà di forze esterne in un'azienda. Le imprese guidano il processo decisionale, i profitti non sono malvagi, pagano il tuo stipendio, la visione a breve o lungo termine è irrilevante, questo è un settore a breve termine di costante cambiamento per definizione. Chiunque si opponga abbastanza bene per realizzare un profitto non capisce gli affari.
Ho trascorso 15 anni a consultarmi e ho imparato molto rapidamente che era abbastanza buono , qualsiasi altra cosa mi stava costando soldi. Sì, volevo che le cose fossero perfette, ma a meno che tu non stia vendendo una base di codice, che nel 99,99999% delle volte stai vendendo una soluzione , tutto quel prefetto codice pulito organizzato elegante è perso e hai solo perso il tuo tempo per cui non verrai mai rimborsato .
Progresso e speranza
Le metodologie agili sono un buon passo nella giusta direzione, almeno filosoficamente. Si rivolgono al caos e al costante cambiamento come cittadini di prima classe e lo accettano. Rifiutano le pratiche dogmatiche, riconoscendo che le metodologie e le pratiche dovrebbero cambiare, nonché i requisiti e le tecnologie.
Accettano l'entropia che viene introdotta dalla mancanza di tempo o dal cambiamento dei requisiti, dal cambiamento del personale e dalla vivacità di un sistema software con il concetto di debito tecnico.
Ma Agile non è una panacea, non cambierà le leggi fondamentali della fisica e le basi di codice marciranno a prescindere. Spetta al management pianificare la gestione del marciume prima che diventi completamente fuori mano e non gestibile.
Agile se fatto correttamente, aiuta a gestire l'entropia, rallentandola, rintracciarla, misurarla e affrontarla in modo pianificato. Non lo fermerà!
Decisione di carriera
Se questo è un vero problema filosofico per te, dovresti probabilmente considerare altre scelte di carriera, perché il modo in cui le cose funzionano ha un valido merito commerciale dietro di esso. I progetti Open Source non hanno precedenti migliori, e in molti casi il codice è persino peggiore della maggior parte del codice aziendale che ho visto.