Quali sono le peggiori false economie (ovvero i modi per risparmiare denaro che alla fine costano più di quanto risparmiano) prevalenti nel settore del software e come le combatti?
Quali sono le peggiori false economie (ovvero i modi per risparmiare denaro che alla fine costano più di quanto risparmiano) prevalenti nel settore del software e come le combatti?
Risposte:
vale a dire "Fallo velocemente, rifatteremo più tardi". In primo luogo perché non ho ancora visto qualcuno impegnarsi in questo comportamento in realtà refactoring più tardi. In secondo luogo perché fare le cose nel modo più rapido, invece che nel modo giusto, rende più difficile l'aggiunta di funzionalità future o la risoluzione di bug futuri in modo da perdere tempo a lungo termine.
Purtroppo, molti pensano ancora che salvi i cicli degli sviluppatori per far loro fare qualcosa in fretta. Immagino sia possibile, ma devo ancora vederlo in pratica.
Assumere 2 sviluppatori economici invece di 1 davvero fantastici. (per lo stesso prezzo)
Il mio esempio sarebbe l'esatto contrario dell'esempio di NimChimpsky , vale a dire:
Cercando di sviluppare internamente qualcosa che può essere acquistato immediatamente.
Normalmente ciò accade a causa di un fallimento nel controllare effettivamente il mercato per vedere se esiste già qualcosa che risolverà il problema. Ciò può essere aggravato dagli sviluppatori a cui piace "immergersi" nel codice prima di fare qualsiasi ricerca e dai project manager che non riescono a tenere conto di quel tempo = denaro.
Uno degli esempi più comuni che ho visto nel mio campo, lo sviluppo web, sono le aziende che cercano di sviluppare un sistema CMS interno. Questi inevitabilmente iniziano in piccolo, ma presto si gonfiano e sfuggono al controllo man mano che le funzionalità sono fissate, mentre per tutto il tempo ci sono molti prodotti e framework gratuiti là fuori che sarebbero molto più adatti.
Nessuna risorsa dedicata per la gestione del progetto
Ho sperimentato diverse volte quando alcuni programmatori erano appaltati e qualcuno che ha già un lavoro diurno impegnativo avrebbe dovuto gestire il progetto, ma in realtà era troppo impegnato con altre attività, quindi il progetto non ha mai acquisito slancio. I programmatori realizzarono "prototipi" e roba del genere, ma senza una guida, gran parte di essa correva in cerchio per sembrare occupata.
Attrezzatura difettosa per i nuovi programmatori
Una volta ho sperimentato un'azienda in cui la politica era "i nuovi programmatori devono lavorare su un PC molto vecchio con un piccolo schermo fino a quando non dimostrano che sono degni". Nessuna sorpresa che una tale politica abbia causato una selezione negativa che ha spinto le persone buone che hanno sempre la scelta di lavorare in un ambiente più sano.
Possiamo risparmiare denaro facendo raddoppiare i programmatori come tester / scrittori tecnici
Se stai pagando gli stipendi del programmatore per il lavoro di tester / scrittore tecnico, allora stai sprecando soldi e probabilmente stai ottenendo un lavoro di qualità inferiore rispetto a qualcuno che ha dedicato la propria carriera a tale compito. Inoltre, quando un programmatore si trova ad affrontare una scadenza serrata, è molto probabile che i test e la documentazione vengano lasciati cadere o facciano mezzo culo per soddisfarlo.
A proposito: gli sviluppatori sono SEMPRE in controtendenza.
Ricercare / leggere / scrivere codice non correlato allo sviluppo del prodotto è uno spreco di risorse.
Alcuni programmatori e persino i manager ci credono. Normalmente, semplicemente programmano in base alle conoscenze in testa e fanno ricerche e cercano risposte quando affrontano problemi. Non migliorano continuamente le loro conoscenze in modo proattivo. Secondo me, dovremmo sempre tenerci aggiornati e le conoscenze che abbiamo raccolto ci sarebbero utili per risolvere i problemi esistenti e futuri. Ovviamente, devi dedicare saggiamente il tuo tempo per farlo.
Questo è anche simile alla risposta di Dan . Alcuni manager vogliono solo che gli sviluppatori si immergano rapidamente e sviluppino il prodotto in base alle esigenze senza effettuare ricerche sui prodotti esistenti sul mercato.
In molti casi l'offshoring costa più denaro. Nella mia azienda è molto difficile ottenere nuovi posti per i dipendenti, siamo fortemente spinti ad esternalizzare. È anche difficile ottenere appaltatori in loco; c'è un rapporto di 3: 1 offshore a onshore che dovrebbero mantenere. Di conseguenza, molti team assumono solo una dozzina in mare aperto e li usano a malapena, solo per ottenere 4 appaltatori in loco.
Cicli di feedback lunghi!
Succede a tutti: costruisci qualcosa che ritieni fantastico e si scopre che hai sbagliato. Non è questo il problema. Il problema è quanto tempo impieghi a costruire prima di scoprire che dovresti smettere.
Ad alto livello, si riscontra questo problema con lunghi cicli di rilascio. Se costruisci per un anno senza feedback, stai giocando tutto l'anno. Più spesso rilasci, più piccole sono le tue scommesse e migliore diventa il gioco.
Ma succede anche ai livelli più bassi. Come sviluppatore, mi piacciono molto le frequenti revisioni del codice (o, meglio, accoppiare la programmazione) perché limita la quantità di tempo in cui posso continuare a fare qualcosa di stupido prima che qualcuno dica: "Ehi, c'è un modo più semplice!" Per lo stesso motivo, mi piace che i test delle mie unità vengano eseguiti rapidamente e frequentemente, quindi posso catturare e uccidere i bug prima che crescano.
Una volta che inizi a notare l'importanza di brevi cicli di feedback, lo vedrai ovunque. Ad esempio, la nozione militare del ciclo OODA .
Non il mio aneddoto, ma una volta ho sentito parlare di un negozio che ha smesso di fornire caffè gratis ai suoi sviluppatori, dicendo loro che ogni volta che volevano prendere un caffè, erano liberi di camminare fino alla caffetteria più vicina (qualcosa come un dieci minuti viaggio in entrambe le direzioni) e acquistarne un po '.
Praticamente la definizione di falsa economia.
Fornire workstation a schermo singolo perché un secondo monitor è troppo costoso . Anche se ti fa risparmiare solo un'ora di lavoro ogni anno, un secondo schermo è comunque un buon investimento. So per certo che il mio mi ha risparmiato molte, molte ore di lavoro.
Una configurazione multi-monitor può rendere quasi tutte le attività più efficienti, non solo le attività di sviluppo. Tre monitor sono addirittura meglio di due, ma l'effetto diventa meno pronunciato con ogni schermo aggiuntivo.
Configurazioni multi-monitor:
Hardware più economico dato a un consulente quando il consulente costa più di 150 $ / ora .
Mettendolo in prospettiva, un hardware migliore può almeno rendere il lavoro di 30 minuti più efficace al giorno. Ciò darebbe 30 minuti * 20 giorni di lavoro al mese = 600 minuti / mese = 10 ore / mese> più di 1 giorno di lavoro = 10 ore * 150 $ / ora = 1500 $
Ora un consulente non sarebbe più efficiente se avesse un computer da 1500 $? Renderebbe il consulente meno irritato?
Ora il problema sembra essere che ci sono due budget, uno per il consulente e uno per l'hardware del PC.
Mesi di lavoro risparmiano giorni di pianificazione
(Non investire abbastanza tempo nella pianificazione)
La maggior parte sospetto è che i manager semplicemente non forniscano agli sviluppatori gli strumenti di cui hanno bisogno per svolgere il proprio lavoro in modo efficiente.
Fondamentalmente, punto 9 sul test Joel .
"Lancia (abbastanza) corpi al problema" può ancora essere usato in alcuni punti, sfortunatamente. Brook's Law contrasta da The Mythical Man-Month , anche se alcuni richiedono esperienza per imparare questa lezione. Generalmente questo non è qualcosa in mio potere da fermare poiché il management può credere alla falsa dichiarazione sull'aggiunta di persone e sul fatto di non dover pagare un prezzo.
Incontri giornalieri :
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
Acquistare il software standard invece di svilupparlo internamente.
Ho esperienza di sistemi di gestione su scala aziendale, focalizzati sia sui laboratori delle risorse umane che su quelli biologici.
Una soluzione pronta all'uso costava £ 50-100.000 e aveva bisogno di ulteriore sviluppo e personalizzazione per soddisfare i requisiti aziendali.
La soluzione sviluppata internamente ha richiesto (<6) mesi per svilupparsi, con altri progetti su cui si sta lavorando in parallelo e che utilizzava uno sviluppatore già impiegato.
Sono passato dal settore pubblico dove avevamo installato e funzionante un LIMS (sistema di gestione delle informazioni di laboratorio) sviluppato internamente, fino a un grande settore farmaceutico internazionale in cui l'implementazione di una soluzione standard era durata oltre un anno e non era completa.
(6 mesi di uno sviluppatore già assunto che lavora su altri progetti in parallelo. Quindi ~ 10k. E questo non include i costi di supporto associati alla soluzione off shelf). Il punto principale è che il sistema sviluppato internamente veniva effettivamente utilizzato! Quindi hai il vantaggio in termini di costi aggiuntivi associato a quello, che non posso calcolare.
Sono d'accordo per i siti Web di base ecc., Perché preoccuparsi di sviluppare il proprio. Ma per qualsiasi sistema complesso di grandi dimensioni e se hai già competenze interne, lo costruirò da solo .
Acquistare costosi prodotti pronti all'uso quando le alternative open source sono migliori e gratuite.
Quante aziende usano git? Quante aziende usano un pessimo controllo della versione aziendale?
Sì, è più facile trovare programmatori per mantenere il codice, ma è più difficile trovare buoni programmatori che non imparano solo le ultime parole d'ordine che li faranno assumere. Sì, semplifica la comprensione del codice dei singoli bit, ma lo rende anche rigido come un 2x4 e aumenta il volume di codice che deve essere compreso. Sì, è supportato da un'enorme società, ma ha detto che un'enorme società innova lentamente e burocraticamente.
Responsabili di progetto / lead team inadeguati
Dal momento che una persona incompetente ha il potere di rovinare il lavoro di un gruppo di persone. Alla fine, il progetto farebbe molto meglio senza le decisioni del management superiore (project / team lead).
Dose la decisione "Fallo velocemente, rifatteremo più tardi".
Requisiti utente mancanti
Un passaggio importante e difficile nella progettazione di un prodotto software è la determinazione di ciò che il cliente desidera effettivamente che faccia.
Che ci crediate o meno a volte questa parte manca o è obsoleta. Ciò che costa è che si creano funzionalità che l'utente finale non ha mai richiesto.
La produttività vale più della creatività
La creatività è difficile da misurare in generale, e molto spesso impossibile persino osservarla, non importa misurare, quando si tratta di sviluppo del software. La produttività, d'altra parte, può essere misurata (spesso male) e può essere osservata.
Di conseguenza, gli sviluppatori che possono (scrivere più righe di codice | scrivere codice più velocemente | recitare tecnobabble più velocemente in risposta alle domande | sono visibilmente più produttivi) tendono ad essere valutati più di quelli che (usano meno righe di codice per risolvere lo stesso problema | impiega più tempo a scrivere codice, ma produce un prodotto più affidabile | capisci l'argomento abbastanza bene da rispondere alle domande in modo chiaro, facile da capire, l'inglese | risolve in modo creativo i problemi).
Tutto sotto può essere male se usato o non usato in modo inappropriato
software esterno vs interno
Conformità ISO 9001 (economia - una mitigazione del rischio di perdita MSS se la qualità del prodotto cala)
sviluppo / outsourcing del QA
procedure di sviluppo / costruzione / rilascio / supporto
Avere troppi gestori di consegna non fatturabili.
Un paio di anni fa, nella nostra azienda avevamo in corso diversi progetti con budget elevati e il reclutamento era al culmine. A quel tempo la nostra azienda assumeva troppi gestori delle consegne (molti dei quali non erano IT!) E pochissimi programmatori / tester. Il rapporto Manager / Programmer era letteralmente 1: 2. Più tardi, dopo il completamento di quei progetti, abbiamo avuto una situazione in cui molti di questi manager (alcuni erano veri e propri allentatori) seduti su una panchina senza fare nulla. Abbiamo avuto un ciclo di valutazione in cui tutti hanno ottenuto un rilancio scarso / nullo (anche noi programmatori laboriosi, sospiro) in modo che la compagnia non debba licenziare nessuno! Fortunatamente, la società ha capito questa situazione e ha fatto il RIGHTSIZING nel primo trimestre di quest'anno!
Ottimizzazione prima della profilazione (ovvero ottimizzazione prematura).
Troppe volte ho visto qualcuno cercare una soluzione intelligente che complica inutilmente la manutenzione e la leggibilità perché è più veloce. Naturalmente, il codice non è stato contrassegnato da un punto di riferimento (nemmeno con i micro-benchmark), quindi diventa rapidamente "più veloce in base all'argomento più persuasivo" su una sezione di codice che molto probabilmente non ha influito sulle prestazioni complessive dell'intero applicazione di molto.
In quanto tale, è un'economia molto falsa e il tipo di falsa economia che occasionalmente impiglia anche i professionisti esperti.
Accesso a Internet limitato o assente
Perché ovviamente i tuoi dipendenti useranno Internet per giocare a giochi di Facebook e non cercare troppo le risposte a domande tecniche su Stackoverflow.
In realtà, naturalmente, Internet è un enorme aumento della produttività e, sebbene possa essere appropriato utilizzare una sorta di filtro del sito per siti veramente malvagi, c'è qualcosa di sbagliato se blocca il file readme di Visual Studio o blocca le pagine del governo locale per motivi "turismo sessuale"
Fare in modo che i tuoi sviluppatori utilizzino un monitor da 15 pollici e un PC con specifiche ridotte poiché è lo standard aziendale.
I monitor di dimensioni ragionevoli sono economici, veloci da installare e rendono i programmatori più produttivi, oltre a far pensare ai programmatori che ti interessano.
Troppi Bachelor of Business Administration (o simili), organizzati gerarchicamente, che cercano di applicare ciò che pensano sia il management moderno: disturbare le persone con "KPI", "SLA" e cosa no, che richiedono "report" (senza, ovviamente, preoccupandosi dell'infrastruttura per generarli), in modo che i programmatori perdano le loro giornate compilando fantasiosi fogli EXCEL, rapporti Q4 e cosa no e copiando da un nuovo fantastico strumento di gestione e incollandoli in un altro (sembra essere la regola che questi strumenti non sono mai integrati né integrabili tra loro) e partecipano alle riunioni in cui vengono presentati i rapporti e le cifre (e tutti si sentono in colpa per non aver completato questo o quel KPI).