Dare ai nuovi assunti un sottoprogetto separato da sviluppatori esperti aiuta i neofiti a salire più rapidamente?

12

Abbiamo 7 sviluppatori in un team e dobbiamo raddoppiare il ritmo di sviluppo in un breve periodo di tempo (circa un mese). So che esiste una regola di buon senso secondo cui "se assumi più sviluppatori, perdi solo produttività per i primi mesi". Il progetto è un servizio web di e-commerce e ha circa 270.000 linee di codice.

La mia idea per ora è quella di dividere il progetto in due sotto-progetti più o meno indipendenti e lasciare che il nuovo team lavori sul più piccolo dei due sotto-progetti, mentre il team attuale lavora sul progetto principale. In particolare, il nuovo team lavorerà sulla funzionalità di checkout, che alla fine diventerà un servizio web indipendente al fine di ridurre l'accoppiamento. In questo modo, il nuovo team lavora su progetti con solo 100K linee di codice.

La mia domanda è: questo approccio aiuterà gli sviluppatori principianti ad adattarsi facilmente al nuovo progetto? Quali sono gli altri modi per estendere rapidamente il team di sviluppo senza aspettare due mesi prima che i neofiti inizino a produrre più software e bug?

=======

UPDATE

Questa impresa ha fallito completamente, ma non per le ragioni che hai menzionato. Prima di tutto, ero disinformato riguardo alle dimensioni e alle capacità della nuova squadra. Avrei dovuto valutarli da solo. In secondo luogo, l'assunzione si è rivelata un duro lavoro in quel sito. Nel sito dell'ufficio principale l'affitto era molto più facile, ma nella città del secondo team apparentemente c'era carenza di sviluppatori con la qualifica richiesta. Di conseguenza, invece di 1.5 mesi proiettati, il lavoro è stato esteso a circa 4,5 mesi, ed è stato annullato a metà dal top management.

Un altro errore che ho fatto (ed è stato avvertito da Alex D) è che stavo cercando di vendere il refactoring al top management. Non vendi mai refactoring, solo funzioni.

L'avvio si è rivelato comunque un successo. Il refactoring che non è mai accaduto si è trasformato in debito tecnico: il sistema è diventato più monolitico e meno manutenibile, la produttività degli sviluppatori è gradualmente diminuita. Non sono nella squadra ora, ma spero che lo completino nel prossimo futuro. Altrimenti, non darei un soldo per la sopravvivenza del progetto.

    
posta Dmitry Negoda 26.01.2012 - 08:09
fonte

7 risposte

1

In alto, sono d'accordo come tutti gli altri qui, che:

"... l'aggiunta di altri sviluppatori a un progetto in ritardo, rende il progetto, per ritardare di più ..."

Ho la sensazione, lo farai, ovunque, quindi ...

La tua idea potrebbe aiutarti, se il tuo progetto esistente è abbastanza organizzato, da moduli, sottosistemi o sottoprogetti.

Che cosa potresti voler provare, è dare loro piccoli pezzi / moduli / forme / classi del tuo progetto, con cui lavorare, invece di tutto il progetto.

Se usi un database, potresti voler fare una copia di un D.B. con i dati e accedervi dal modulo o sottosistema di codice con cui lavoreremo.

Avere nuovi sviluppatori che conoscono il linguaggio di programmazione o l'ambiente di programmazione, non è sufficiente, le applicazioni software possono diventare molto complesse.

Hai una documentazione dell'aplicazione come: U.M.L., E.R., Codd-Yourdon, qualunque cosa?

Buona fortuna.

    
risposta data 27.01.2012 - 02:17
fonte
15

My question is will this approach help newbie developers to adapt easily to the new project?

"Newbie" potrebbe significare nuovo per te, o potrebbe significare nuovo per lavorare come sviluppatori di software. Se intendi assumere un gruppo di sviluppatori per lavorare su un progetto importante in base a una pianificazione, assicurati che almeno la maggior parte dei nuovi assunti siano sviluppatori esperti, e preferibilmente quelli che hanno scritto progetti simili a quello che stai provando costruire.

What are other ways to extend the development team rapidly without waiting two months until they start producing more software then bugs?

  • Acquista o concedi in licenza un prodotto esistente invece di provare a crearne uno tuo. davvero hai bisogno di reinventare la ruota del checkout?

  • Come ho detto sopra, assumi persone che hanno esperienza nel creare il tipo di sistema che desideri.

  • Anche prima di assumere questo nuovo team, dovresti pensare a quello che avranno bisogno di sapere sulle tue cose esistenti. Assicurati di riservare abbastanza tempo per le sessioni di allenamento per aiutarle a migliorarle.

  • Hai creato una serie scritta di requisiti? Altrimenti, fallo ora. Se prevedi di progettare il progetto invece di lasciare che il nuovo team lo faccia, dovresti preparare anche un documento di design chiaro, ma sii aperto alle modifiche in risposta all'input dei nuovi membri del team.

  • Hai un processo di sviluppo ben definito? Database di bug? Controllo della versione? Processo di revisione del codice? Guida di stile? Metti a posto queste cose.

  • Non aspettarti miracoli. vuoi assumere una squadra di sette persone e farle lavorare in modo produttivo in poche settimane, ma volerlo non significa che tu possa averlo. A seconda di dove ti trovi, potrebbe volerci molto più di un mese solo per trovare sette persone adatte. Cercare di affrettare le cose ora causerà solo dolore e spese più tardi.

risposta data 26.01.2012 - 08:29
fonte
12

IMHO che mette tutti i nuovi sviluppatori sul nuovo progetto, separati dal tuo team esistente è destinato a portare problemi. Sì, questo (può) lasciare che la tua vecchia squadra continui a lavorare più o meno al suo ritmo attuale. Tuttavia, i nuovi ragazzi non avranno la minima idea dell'architettura generale e del quadro generale, quindi impiegheranno molto tempo ad alzarsi alla velocità ... e anche allora potrebbero essere nella direzione sbagliata.

Suggerisco di dividere la tua squadra esistente in due e di assumere nuovi membri in entrambi i team. In questo modo ci sono persone in entrambe le squadre che possono guidare i nuovi arrivati e assicurare che venga mantenuta una visione architettonica comune e coerente.

Altrimenti, sono d'accordo con Caleb per quanto riguarda la documentazione di requisiti chiari, la definizione del processo di sviluppo e degli strumenti, e il tempo dedicato all'allenamento ... e anche il fatto che aspettarsi che un team di 7 venga assunto e aggiornato entro un mese sia irrealistico.

    
risposta data 26.01.2012 - 11:13
fonte
9

Dmitry, raddoppiando il tuo ritmo di sviluppo in breve tempo è un obiettivo ambizioso incredibilmente . Alcuni buoni suggerimenti sono stati pubblicati qui; ma, qualunque cosa tu provi, tieni presente che potrebbe non succedere . se il tuo ritmo di sviluppo non è non doppio, quali sarebbero le conseguenze, dal punto di vista del business? Stai cercando di spingere per rispettare una scadenza?

Se stai cercando di rispettare una scadenza, potresti farlo in modo più affidabile tagliando le funzionalità? Ho trovato un ottimo modo per rendere "accettabili le scadenze" accettabili per un cliente è quello di fare rilasci incrementali; rilascia una versione con un sottoinsieme delle funzionalità richieste, quindi, man mano che altre funzionalità sono pronte, rilascialo in modo incrementale, fino alla versione finale.

    
risposta data 26.01.2012 - 11:47
fonte
4

Quindi stai cercando di essere la squadra che non è vittima del mese di Mythical Man . Avrai diversi problemi, qualcuno nel team dovrà fare le interviste tecniche, quindi dovrai attendere alcune settimane dopo aver accettato la posizione prima che possano iniziare. Potrebbero essere passati due mesi prima che i nuovi sviluppatori si trovino di fronte alle loro tastiere.

Ogni nuovo dipendente ha una produttività negativa nei primi mesi. È peggiorato perché gli attuali sviluppatori avranno bisogno di guidarli, riducendo ulteriormente la produttività dei sistemi.

L'altra parte del MMM è stata la crescita del team, così come i problemi di comunicazione. Le riunioni diventano più grandi, le catene di email diventano più lunghe ...

Li porterei in gruppi più piccoli e so che per molto tempo la produttività non sarà proporzionale all'aumento della dimensione della squadra. Comprendere anche che il drenaggio del flusso di cassa durante i primi mesi può essere significativo, a causa dei costi di imbarco e delle attrezzature.

Nel tuo commento ad Alex D hai detto "Non sono le scadenze che ci aspettano, la sua capacità dimostrabile di offrire nuove funzionalità". Quindi passa a uno stile di sviluppo che definisce le funzioni in blocchi più piccoli e più spesso. Chiedi ai nuovi membri del team di testare le nuove funzionalità, in modo da aiutarle a capire il codice base.

    
risposta data 26.01.2012 - 14:46
fonte
2

Sarebbe meglio non assumere nessuno di nuovo e osservare i tuoi processi per vedere dove è possibile apportare modifiche per rendere le cose più veloci. Prima vengono trovati i bug, meno tempo ci vuole per risolverli, quindi come stai testando? Stai facendo recensioni di codice? Stai prestando attenzione alla qualità del requisito? Avete processi di compilazione e disinstallazione automatizzati? Hai test automatici? Stai facendo incontri giornalieri standup (Incredibile quanto più veloce sviluppo può andare quando qualcuno ti chiederà il tuo prion ogni giorno!)? Stai usando processi agili? Hai alcuni difetti di progettazione di base che dovrebbero essere risolti per far andare più velocemente il resto dello sviluppo (un design errato può rallentare incredibilmente un progetto di sviluppo).

Leggi il mese di Mythical Man. Avrete chiaramente bisogno di essere in grado di dire agli alti dirigenti perché stanno facendo le scelte usurate per accelerare un progetto. .

    
risposta data 26.01.2012 - 16:14
fonte
0

Quindi vuoi buttarli da un dirupo e vedere se riescono a volare? Penso che quando scopri le cose da solo, tendono a restare con te a lungo termine piuttosto che semplicemente avere soluzioni a te. Tuttavia, ciò presuppone che in realtà trovi soluzioni migliori. Non vedo perché non si possa permettere a questa squadra di avere un leader qualificato che si equilibri lasciandoli fare degli errori da soli insieme a dare loro guida e istruzioni imparando dagli esempi di qualità.

    
risposta data 26.01.2012 - 16:19
fonte

Leggi altre domande sui tag