Come organizzi un team di medie dimensioni con un codebase molto grande e vecchio?

3

Ci sono già alcune domande qui sui programmatori sull'organizzazione di piccoli team, ma abbiamo una squadra più grande (di medie dimensioni?), e questo è un animale un po 'diverso.

Quindi, la mia domanda è questa: Come organizzi un team di medie dimensioni con una base di codice molto grande e precedente ?

O meglio, quantificiamolo un po 'più chiaramente:

Il team ha:

  • 20 sviluppatori (buon mix di senior e junior)
  • 7 QA Folks

Il prodotto è di grandi dimensioni (2 milioni di righe di codice) con 10-12 moduli principali suddivisi su tre aree principali (client desktop, server back-end, web).

Il team deve fare:

  • supporto / manutenzione per la base clienti esistente
  • Personalizza il prodotto per supportare nuove vendite e clienti esistenti
  • Crea nuove funzionalità per far avanzare il prodotto
  • fornisce test di regressione per tutte le nuove funzionalità e regola la regressione per il debito tecnico

Sottotemi specifici:

  • Quali sono le opinioni su "Team di supporto specifico" e "I team del modulo risolvono tutti i loro bug"
  • Come ottimizzare il tempo di sviluppo e ridurre al minimo il tempo di amministrazione (recensioni del codice, altre "risorse per sviluppatori principali")
  • In che modo integri / organizzi le persone addette al controllo qualità per garantire le corrette suite di test e regressione?
  • Quali posizioni non tecniche (QA Manager, Dev Manager, ecc.) potrebbero essere utili per massimizzare la produttività degli sviluppatori?

I tuoi pensieri in merito sono molto apprezzati.

EDIT: dovrei aggiungere che non sono indifferente qui, sto solo cercando di stimolare alcune idee. Questo non è un problema facile, e quindi sono aperto alla saggezza di voi brave persone qui.

    
posta Nick Hodges 25.05.2011 - 16:05
fonte

3 risposte

4

Odio avere team di supporto e team di sviluppo.

Quando ciò accade gli sviluppatori iniziano a guardare in basso alle persone di supporto (è un ruolo meno affascinante). Le persone vengono etichettate come suppport e quindi non possono tornare a fare lo sviluppo, dove tendono ad essere la paga e le promozioni migliori.

Inoltre, il team di sviluppo non sente il dolore dei propri errori (che è fondamentale per migliorare!) e tende a ripetere le stesse cose ripetutamente che il team di supporto finisce per aggiustare. Ciò finisce con il pensare che siano grandi sviluppatori (non hanno mai sentito il contrario) e il team di supporto pensa di essere degli idioti.

L'altro svantaggio è che lo sviluppatore originale può spesso trovare e correggere un bug in un sistema complesso più veloce di una persona di supporto che deve aggiornarsi su cosa è stato fatto e perché prima di risolverlo. Inoltre, ho visto spesso che le persone di supporto rompono le cose di più perché non capivano il perché di qualcosa in primo luogo. Ciò è particolarmente vero quando si hanno sviluppatori che fanno semplicemente ciò che viene loro richiesto senza metterlo in discussione o respingere una cattiva richiesta. Quindi, quando il cliente chiede qualcosa che è in conflitto con un altro requisito di cui non è a conoscenza perché non funzionava in quella parte del sistema, la modifica è stata apportata e qualcosa che prima non funzionava più. È vero che questo può accadere anche quando lo staff di sviluppo originale supporta ma è meno probabile che abbiano più internalizzazioni e informazioni interne.

Non vedo il problema come ridurre al minimo il tempo di amministrazione per gli sviluppatori, ma più come farli fare il lavoro amministrativo necessario a tutti! Penso che nella pianificazione del lavoro, si dovrebbe pianificare solo 6 ore al giorno di tempo produttivo. Devi tenere conto delle ferie, dei doveri della giuria, del lavoro amministrativo, delle riunioni, ecc. E se pensi di ottenere 8 ore al giorno per determinare la tua scadenza, hai già una scadenza che non sarà soddisfatta o chiederai al tuo le persone a lavorare per gli straordinari continui o non concedere loro il tempo libero necessario per ricaricarsi. Uno sviluppatore stanco è uno sviluppatore inefficiente. Non progettare di costringere le persone a lavorare sfinite.

Suggerisco che se la tua applicazione è centrata sul database, dovresti avere diversi sviluppatori di database (non DBA ma persone che scrivono database basati su database e database di progettazione, in particolare persone con conoscenze di ottimizzazione delle prestazioni). La tua applicazione funzionerà meglio se hai queste persone fin dall'inizio nella fase di progettazione. Dovrai anche leggere il refactoring del database e impostare un processo in cui le modifiche al database possono essere fatte correttamente quando necessario.

Un designer della GUI del contratto è bello avere in giro pure. Questo tipo di designer spesso non è necessario a tempo pieno, ma è utile avere qualcuno che conosci che puoi assumere quando viene eseguita una riprogettazione dell'interfaccia utente.

Un buon analista di business è un must. Un cattivo può distruggere un progetto e la squadra. Non tenere un analista cattivo più a lungo del necessario per elaborare i documenti per licenziarlo. Questa persona può fare più male a un progetto di chiunque altro. Aggiungerà mesi e anni ai progetti che cercano di aggirare la spazzatura che gli sviluppatori dedicano al lavoro e ti ritroveranno a spingere i rilasci che funzionano ma che non fanno ciò che è necessario rovinando la tua credibilità.

    
risposta data 25.05.2011 - 17:05
fonte
10

Quasi impossibile rispondere a questa domanda senza essere il project manager.

I team auto-organizzanti potrebbero funzionare, con una comunicazione corretta.

Oppure potresti raggruppare 3 sviluppatori e 1 persona QA insieme per formare 7 squadre "commando".

Se non hai abbastanza sviluppatori senior per guidare 7 squadre, organizza i team attorno agli sviluppatori senior.

A meno che gli sviluppatori senior non vogliano condurre team.

Etc.

Quasi tutte le organizzazioni dei team potrebbero lavorare, a seconda delle dimensioni e della portata dei progetti che si verificano.

Il mio consiglio: parla al tuo popolo invece di noi. Non sappiamo jack sul tuo progetto, lo fanno .

    
risposta data 25.05.2011 - 16:21
fonte
4

•What are the thoughts on "Specific support team" vs. "Module teams fix all their bugs"

Sono un grande sostenitore del team di supporto per una serie di motivi. Scoprirai che le emergenze dei clienti, le patch release, i bug urgenti e altri problemi di produzione possono richiedere molto tempo ai team modulari e rendere la stima del lavoro del progetto molto più difficile per loro. Avere il team di supporto composto da sviluppatori di grande esperienza e molto ben pagati, essendo il loro obiettivo principale, aumenterà la produttività a tutti i livelli dei moduli.

•How do you maximize development time and minimize admin time (code reviews, other "lead developer stuff")

Non sono così sicuro che le recensioni del codice dovrebbero essere considerate "amministrative". Li considero intrinsechi al processo di sviluppo e dovrebbero essere considerati quando valuti le storie degli utenti. Le riunioni, i manager di progetto e simili devono essere gestiti dal responsabile di una squadra e il ruolo guida dovrebbe proteggere la sua squadra da quella spazzatura.

•How do you integrate/organize the QA people to ensure proper testing and regression suites?

Offri loro un manager con esperienza nel controllo qualità e assicurati che abbiano requisiti aziendali dettagliati o storie utente in modo che possano scrivere casi di test completi e completi e test automatici. Mantieni il QA coinvolto in riunioni di stato che comportano la discussione delle funzionalità e assicurati che abbiano la possibilità di rivedere le funzionalità prima che lo sprint sia completato.

•What non-technical positions (QA Manager, Dev Manager, etc.) might be good for maximizing developer productivity?

I project manager sono importanti e gli analisti di business che trattano direttamente con i clienti possono essere una risorsa preziosa per un team.

    
risposta data 25.05.2011 - 16:23
fonte

Leggi altre domande sui tag