Il mio capo è venuto da me oggi per chiedermi se potremmo implementare una determinata funzionalità in 1,5 giorni. Ho dato un'occhiata e gli ho detto che 2 o 3 giorni sarebbero stati più realistici. Poi mi ha chiesto: "E se lo facessimo veloce e sporco?" Gli ho chiesto di spiegare cosa intendeva con "veloce e sporco".
Si scopre che vuole che scriviamo il codice il più rapidamente possibile (copiando, ad esempio, bit e pezzi da altri progetti, inserendo il codice tutti nel code-behind delle pagine WebForms , smetti di preoccuparti di DRY e SOLID e supponendo che il codice e le funzionalità non debbano mai essere modificati o modificati. Cosa c'è di peggio, non vuole che lo facciamo solo per questa caratteristica, ma per tutti il codice che scriviamo.
We can make more profit when we do things quick and dirty. Clients don't want to pay for you taking into account that something might change in the future. The profits for us are in delivering code as quick as possible. As long as the application does what it needs to do, the quality of the code doesn't matter. They never see the code.
Ho cercato di convincerlo che questo è un brutto modo di pensare come il gestore di una società di software, ma semplicemente non ascolterebbe i miei argomenti:
- Motivazione dello sviluppatore: ho spiegato che è difficile mantenere motivati gli sviluppatori quando sono costantemente sotto pressione di scadenze e budget non realistici per scrivere codice sciatto molto rapidamente.
- Leggibilità: quando un progetto viene passato a un altro sviluppatore, un codice più pulito e meglio strutturato sarà più facile da leggere e comprendere.
- Manutenibilità: È più facile, più sicuro e richiede meno tempo per adattare, estendere o modificare un codice ben scritto.
- Testabilità: di solito è più facile testare e trovare bug nel codice pulito.
I miei colleghi sono confusi quanto lo sono dal punto di vista del mio capo, ma non possiamo sembrarlo. Continua a dire che, rendendo le cose più velocemente, possiamo vendere più progetti, chiedere un prezzo più basso per loro pur continuando a realizzare un profitto maggiore. E alla fine questi progetti pagano gli stipendi dello sviluppatore.
Che altro posso dire per fargli vedere che ha torto? Voglio comprargli copie di Peopleware e The Mythical Man-Month, ma ho la sensazione che non cambieranno idea neanche.
Molti di voi probabilmente diranno qualcosa come "Esegui! Esci da lì adesso !" o "I'd quit!", ma non è un'opzione in quanto i lavori di sviluppo Web .NET sono piuttosto rari nella regione in cui vivo ...
Aggiornamento
Wow, non mi aspettavo di ricevere così tante risposte. Grazie a tutti per i vostri contributi e le vostre opinioni!
Come molte delle risposte e dei commenti sottolineano, il tipo di azienda e il tipo di progetti giocano un ruolo importante in questo argomento. Ho spiegato alcune cose qui nei commenti su alcune risposte, ma probabilmente è meglio aggiungerlo anche qui.
L'azienda per cui lavoro è piuttosto piccola. Abbiamo 4 sviluppatori, 1 designer, 1 capo e 1 mestiere tuttofare (la moglie del capo). I progetti che facciamo possono essere divisi in due categorie:
- Siti web di piccole dimensioni creati con il nostro CMS o struttura di e-commerce (65%)
- Applicazioni web di medie dimensioni (35%)
Quindi, mentre molti dei nostri progetti sono piuttosto piccoli, sono costruiti sullo stesso sistema. Questo sistema ha circa 4 anni e la base del codice è al di sotto della media a dir poco. È sempre un terrore aggiungere nuove funzionalità o modificare funzionalità standard per clienti specifici.
Uno degli obiettivi stabiliti dal capo è quello di iniziare a spostare la nostra attenzione allo sviluppo del prodotto. Ciò significa che svilupperemo applicazioni più grandi che serviranno da base per altri progetti o sono qualcosa di simile a Saas.
Sono assolutamente d'accordo sul fatto che fare le cose in modo rapido e sporco può essere la soluzione migliore per determinati progetti. Ma quando estendi un CMS esistente che verrà utilizzato da tutti i siti che svilupperai nei prossimi anni o che creerai un prodotto SaaS da zero, ci sono approcci migliori che penso.