Ho letto un'idea per aumentare la produttività in un'azienda. È andata così:
Avere un certo fondo, sarà un bonus. Diciamo $ 100.000. Per ogni bug tangibile trovato, i tester vengono pagati $ 5 - $ 15. Tutto ciò che resta alla fine del mese / anno va agli sviluppatori.
Sembra un'idea abbastanza meravigliosa in teoria, anche se non sono sicuro di come funzionerà bene nella pratica . L'ovvia conseguenza di ciò è che promuove l'antagonismo tra sviluppatori e tester. Il bug business diventa un gioco a somma zero.
L'antagonismo è una brutta cosa? In che modo influirà sulla produttività e, soprattutto, sull'organizzazione? L'esperienza personale sarà molto apprezzata.
(Mi rabbrividisco quando leggo schemi "motivazionali" come questo.)
Forse l'autore di questa idea definisce la "produttività" in modo diverso di quanto farei.
L'obiettivo della maggior parte delle aziende produttrici di software è fare soldi e forse massimizzare la quantità di denaro che guadagnano. L'obiettivo di un sistema di bug bounty è meno chiaro e certamente non ha nulla a che fare con la produttività. Si spenderebbe molto tempo cercando di ottenere denaro bonus e poco tempo sarebbe speso cercando di spedire il software (che è il modo in cui l'azienda guadagna).
Immagina che un'azienda abbia uno sviluppatore e un tester .
Se tu fossi lo sviluppatore, la tua strategia ottimale sarebbe quella di trattenere tutto il software dal tester fino a quando non ci fossero più bug rimasti o fino a quando non ci fosse tempo nella pianificazione per il tester di trovarne .
Ho lavorato per un'azienda che premiava gli sviluppatori con elogi, piuttosto che denaro, e questa era esattamente la strategia utilizzata da uno sviluppatore. Le build venivano rilasciate al QA ogni 2 settimane. E ogni altro venerdì, abbiamo avuto una riunione del team completo in cui è stato annunciato il conteggio dei bug nella build corrente. Se uno sviluppatore avesse mai avuto zero bug, sarebbe stato scelto e lodato per aver svolto un ottimo lavoro.
Uno sviluppatore ha deciso di giocare con il sistema. Avrebbe tenuto la build (sempre con scuse ragionevoli) fino a poco prima della riunione settimanale. Ha quindi rilasciato la build, il rapporto sul conteggio dei bug è stato eseguito e "magicamente" ha avuto un conteggio dei bug pari a zero giusto in tempo per la riunione.
Sebbene fosse una brava sviluppatrice, il suo codice non era nessuno meglio della maggior parte degli altri. La sua abilità consisteva nel manipolare il sistema a suo vantaggio.
Attualmente lavoro in un negozio che punisce gli sviluppatori per il numero di bug attribuiti al loro lavoro durante un progetto. Ci si aspetta che "migliorino" il numero dei bug rispetto all'anno precedente. Questo fa parte dei loro MBO e parte di ciò che va al pagamento del bonus annuale.
Non sorprende che abbiano impiegato molto tempo per produrre la prima build verificabile per il QA. E hanno chiesto al QA di dedicare molto tempo ai test nell'ambiente di sviluppo (dove non è possibile scrivere rapporti sui bug). Hanno avuto tutte le possibilità di produrre meno bug nel sistema di segnalazione, e quindi di massimizzare il loro bonus.
Il Product Manager ha persino deciso di cambiare molte segnalazioni di bug in "richieste di miglioramento" in modo da non influire MBO per sviluppatori. La sua argomentazione era "beh, gli sviluppatori non hanno sviluppato completamente quella funzione, quindi la miglioreranno quando avranno tempo".
Se venissi pagato "dal bug" potrei trovare un sacco di bug abbastanza facilmente, non importa quanto sia bravo lo sviluppatore. (Faccio questo lavoro da quasi 30 anni). Inizialmente mi concentravo sul frutto a bassa pendenza e saltavo tutto ciò che richiedeva tempo. Le mie segnalazioni di bug sarebbero minime e non molto utili, praticamente tutto ciò che è necessario per inserire la segnalazione di bug nel sistema e ottenere i soldi.
Il risultato sarebbe un sacco di segnalazioni di bug superficiali che erano "solo abbastanza tangibili" e il software sarebbe inevitabilmente lasciato con alcuni bug critici importanti. Non riesco a immaginare che il sistema venga mai spedito.
Gli sviluppatori concentrerebbero tutto il loro tempo e la loro attenzione sul nuovo codice. Non ci sarebbe assolutamente alcun vantaggio finanziario nella correzione di eventuali bug già trovati. E sarebbero incentivati a produrre pubblicazioni minuscole e insignificanti. Se producono una versione contenente solo una singola riga di codice perfetto, ottengono un bonus di $ 100k! Perché aggiungere funzionalità complicate?
Entrambi i team discutono con veemenza su ogni segnalazione di bug e se si tratta veramente di un bug "tangibile" o meno. (Questo è un termine carino e sfocato. Mi piacerebbe sentire un team che cerca di definirlo concretamente). Questo tipo di argomenti non pone le basi per qualcosa che chiamerei produttività.
E né i tester né gli sviluppatori spenderebbero tempo su nient'altro. Nessuna riunione, nessuna documentazione, nessun supporto clienti, nessun aiuto agli altri, nessuna preparazione per la spedizione. Ehi, se fosse importante, ci sarebbe stato denaro contante, giusto?
E quest'ultima parte è significativa. Per i lavoratori della conoscenza, spesso attribuire bonus in denaro a compiti che ritengono intrinsecamente importanti è un grande disincentivo. Se desideri una maggiore comprensione dei tipi di disfunzioni che possono derivare da questi tipi di sistemi di incentivi, ti consiglio vivamente di leggere Misurazione e gestione delle prestazioni nelle organizzazioni di Robert D. Austin.
In breve, questa è un'idea terribile.
La maggior parte delle buone società di software riconoscono la follia di un tale piano e cercano di stare alla larga da questo tipo di sistema. La maggior parte delle aziende di software comprende che il rilascio di software senza bug non è un obiettivo realistico e che è più importante rilasciare il software in modo tempestivo.