Come misurare il tempo perso a causa di problemi ambientali?

4

Sto provando a determinare come possiamo misurare quanto tempo gli sviluppatori stanno perdendo in un ambiente gestito male e in modi di lavoro inefficienti.

Gli obiettivi sono:

  1. Mostra a managment quanto è grande il problema, in termini a cui possono riguardare. I.e $$$
  2. Ottieni una buona base di partenza in modo che possiamo misurare i progressi.

Breve background:

Gestiamo l'ambiente di programmazione per 500 sviluppatori. Ciò include IDE (principalmente Eclipse e Visual Studio), i sistemi di controllo delle versioni (ClearCase), quali programmi hanno a disposizione. Fondamentalmente, tutto ciò che riguarda il computer che comporta la programmazione.

Esempi:

Non essere in grado di lavorare con gli strumenti a cui sono abituati a causa di severi requisiti di sicurezza. Usare il sistema di controllo delle versioni in modo sbagliato causando problemi quando si lavora in parallelo. L'impostazione dell'ambiente del progetto viene eseguita manualmente e diversa ogni volta. Utilizzo di framework homecook, piuttosto che cosa sono gli standard del settore. La costruzione richiede più tempo del necessario a causa di pratiche fatte in casa. L'implementazione richiede più tempo del necessario a causa di pratiche fatte in casa.

Questo non include le effettive pratiche di codifica, la gestione del progetto o le riunioni. Certo, possiamo influenzare anche queste cose, ma per queste domande quelle cose sono fuori portata.

La domanda:

Quindi, come possiamo determinare quanto tempo si perde a causa dell'ambiente del progetto?

L'unica cosa che posso pensare per ottenere dei buoni dati sono sondaggi e questionari.

Qualcuno ha fatto qualcosa del genere? Quali sono state le esperienze e i risultati?

Ci sono altre pubblicazioni o ricerche in cui posso ottenere idee o confrontare i risultati con?

Esistono altre domande sull'inefficienza dei programmatori (come questo ), ma quelli relativi a pratiche e bug di codifica.

    
posta Fredrik 12.12.2011 - 17:11
fonte

2 risposte

3

Quello che sembra che stia facendo è tentare di misurare la produttività. Misurare la produttività è notoriamente difficile. Ecco come me ne occupo ...

Ho scoperto che non vuoi affrontare la situazione misurando perdite , vuoi misurare i guadagni di potenziali soluzioni. Da un punto di vista puramente filosofico, il primo implica che stai facendo qualcosa di sbagliato, che potrebbe non essere vero.

Le cose cambiano e, periodicamente, qualcuno (come te stesso, sembra) deve dare un'occhiata al paesaggio e vedere se tali cambiamenti possono fornire un ambiente migliore. Detto questo, guardo:

Cose che non esistono

  • Strumenti (ad esempio computer, controllo della versione)
  • Pratiche (ad es. TDD)
  • Processi (ad es. recensioni di codici, agile)

Questo è un problema comune e ho sostenuto con successo l'adozione di alcune cose basate su:

Documentazione del prodotto e informazioni di vendita

Questo è sempre il primo punto di partenza. Se il prodotto costa denaro, la documentazione di vendita è quasi sempre mirata o formulata per tipi di gestione. È facile da trovare, facile da accedere e un umano che lavora per il venditore è quasi sempre disponibile per fornire altre risorse come le seguenti ...

Case study

Un buon esempio che ho è il libro "Best Kept Secrets of Peer Code Review" è stato scritto da Jason Cohen (fondatore di Smart Bear IIRC) che contiene casi di studio al fine di rendere il caso per le revisioni del codice. Certo, il libro è stato fondamentalmente scritto dal venditore, ma gli studi di casi erano legittimi.

Proofs of Concept

Se si tratta di un'implementazione potenziale (pensando a CI, sistema di compilazione, TCM o qualsiasi altro processo o strumento di automazione), il modo migliore per farlo è ottenere una prova e configurarla. Dopo aver eseguito alcune indagini iniziali (ad esempio, utilizzandolo su progetti fasulli) potrebbe essere una buona idea provarlo in un piccolo progetto, o eventualmente in coppia con la soluzione esistente.

Per i processi, è simile. Questo è fondamentalmente il modo in cui molti sviluppatori introducono i test unitari. Mantengono i loro test per un po 'e quando la "BAM! Regression Caught!" Critica colpi di scenario, eseguono la rivelazione e mostrano come ha salvato il progetto. Un po 'drammatico, sì, ma ha senso. Le persone hanno bisogno di vedere i benefici con i loro occhi.

Cose che esistono ma sono rotti / inefficienti

Questa sarà quasi sempre un'analisi comparativa. Se ti avvicini in questo modo, dovresti essere in grado di ottenere numeri con cui lavorare.

Le informazioni di vendita del venditore non funzionano sempre bene qui, a meno che non si tratti di un prodotto che compete direttamente e ovviamente con la soluzione attualmente implementata - in questo caso, di solito è possibile che il fornitore ti aiuti qui. (Sto pensando a SourceGear Vault vs SourceSafe come esempio)

Ho scoperto che raramente esistono studi di casi che mettono a confronto strumenti / pratiche ma esistono per i processi (si pensi agli studi Agile vs. Waterfall).

Nella mia esperienza, le dimostrazioni di concetto sono spesso i modi più efficaci per convertire la gestione / gli sviluppatori da uno strumento o una pratica a un'altra. Devono vederlo funzionare e, cosa ancora più importante, vederlo funzionare meglio di ciò che già esiste. Poi li colpisci con i numeri. "Questo sistema, che è solo un POC, è ancora x volte più veloce del nostro precedente, il che si traduce in una riduzione delle ore di lavoro e della riduzione di overhead" Ricorda che a volte i POC possono essere fatto su piccoli progetti per testare un processo, di solito dopo che sono state fornite sufficienti prove di potenziali guadagni.

Cose che non abbiamo un'idea

Ecco dove entrano in gioco sondaggi e questionari ... ma questi ti porteranno alle categorie sopra descritte.

    
risposta data 12.12.2011 - 18:49
fonte
1

Suppongo che intenda i tempi di inattività dell'ambiente e la perdita di produttività quando gli ambienti di sviluppo e test diminuiscono o hanno bisogno di tempo per gli sviluppatori per il debug dei problemi ambientali.

Crea un semplice strumento di monitoraggio che sia così facile da usare che gli sviluppatori non debbano pensarci. Ogni volta che un problema di ambiente viene sottoposto a debug da uno sviluppatore o semplicemente non può funzionare a causa di esso, ho creato uno strumento simile al cronometro con qualcosa di semplice come AutoHotKeys (uno strumento che consente di mappare rapidamente e facilmente combinazioni di tasti a uno script) ha iniziato un timer. Al termine del tempo di inattività, premi nuovamente la combinazione di tasti e AutoHotKeys invierà una semplice richiesta GET a una pagina PHP che ho configurato sul server web. Ha semplicemente calcolato i totali in millisecondi e li ha memorizzati in un file.

    
risposta data 12.12.2011 - 17:28
fonte

Leggi altre domande sui tag