Progetta in un team, codifica in un altro


28

Sarò coinvolto in un progetto in cui tutto il design del software è realizzato da un team locale e questi design vengono inviati a un team offshore per la codifica.

Questa è la prima volta che mi trovo ad affrontare un progetto con queste caratteristiche e per me sembra strano: i manager si aspettano che realizziamo documenti di progettazione molto dettagliati, quindi non c'è spazio per errori per il team offshore; dal mio punto di vista ci stanno facendo codificare su carta mentre possiamo farlo in un IDE.

Quindi, la mia domanda è: questo approccio è buono o dimostrato, giusto? Quali sono le principali considerazioni che il nostro processo software deve avere per avere successo nel nostro progetto?



5
@mike: il software per veicoli spaziali è leggermente diverso rispetto alla maggior parte dei software. Deve funzionare perfettamente tutto il tempo, altrimenti si possono verificare perdite di vite umane e beni estremamente costosi. Vedi fastcompany.com/28121/they-write-right-stuff
Robert Harvey

9
Immagino che il team offshore sia più economico, è anche il doppio del team di progettazione? Presenta alcuni vantaggi reali rispetto al team interno? ad esempio parlano il linguaggio naturale degli utenti finali mentre tu no? Hanno una sorta di talento che non hai in casa? In caso contrario, vedo che la tua azienda ha un brutto caso di avvelenamento da PHB .
ZJR

1
@mike: Penso che sarebbe più preciso affermare che nella maggior parte dei software un numero limitato di bug è considerato accettabile, perché il software privo di bug è un asintoto e ottenere quei rimanenti bug è molto costoso.
Robert Harvey,

9
Ti suggerisco di iniziare subito a cercare un altro lavoro. I programmatori non sono ingranaggi intercambiabili, che è il presupposto alla base di questo tipo di disposizione. Separare il design dallo sviluppo in questo modo - onshore o offshore - garantisce una disconnessione tra il cliente e gli sviluppatori che rende altamente probabili i guasti.
Steven A. Lowe,

Risposte:


36

La mia opinione:

Se tutto ciò che darai alle persone in mare aperto saranno documenti e diagrammi, avrai molte comunicazioni errate e delusioni .

La mia raccomandazione

  • Non fornire loro così tanti documenti, ma piuttosto interfacce e classi astratte al fine di inserirle nei tuoi obiettivi di progettazione .

  • Richiedere loro di utilizzare uno standard di denominazione noto.

  • Richiedere loro di utilizzare i test unitari.

  • Invia uno dei tuoi designer / architetti al largo delle loro sedi per supervisionare il processo, sarà ancora più economico della codifica interna, ma otterrai risultati migliori.


2
I team offshore non funzionano come fanno i team onshore. Devi essere molto, molto specifico su ciò che desideri, altrimenti non otterrai ciò che desideri.
Robert Harvey,

32
... Il che è parte del motivo per cui molto sviluppo sta tornando a terra negli Stati Uniti; questo approccio di progettazione onshore, sviluppo offshore, quindi debug di nuovo onshore richiede che tu abbia le stesse risorse onshore che utilizzeresti per sviluppare l'intera zuppa con le noci in primo luogo. In qualsiasi altro processo di produzione, in cui i materiali diretti e la manodopera per realizzare la cosa sono alti, l'approccio offshore ha senso. Quando il design per quello che stai realizzando non è solo la maggior parte dei tuoi costi, ma potrebbe anche essere il prodotto finale, lo sviluppo offshore diventa ovviamente più ridondante.
KeithS

@KeithS Ottimo commento. Accetto% 110 con te.
Tulains Córdova,

2
Costringerli ad usare le classi e le interfacce che hai creato senza aver scritto tu stesso il codice è una ricetta per il disastro.
Mike Weller,

2
@Euforico C'è un lungo tratto tra la scrittura abstract void calculateDroneTrajectoryBasedOnCNNNewsFeed()e la sua effettiva attuazione.
Tulains Córdova,

26

Si chiama Big Design Up Front, alias Waterfall. Non è ampiamente considerato come una metodologia di grande successo. Ma l'ho visto funzionare e quando funziona funziona molto bene. È molto costoso fare bene.

È anche quello che i tuoi datori di lavoro ti hanno chiesto di fare.

I team offshore non funzionano come fanno i team onshore. Devi essere molto, molto specifico su ciò che desideri, altrimenti non otterrai ciò che desideri.


Puoi approfondire un po 'di più su "molto specifico"? Ho dovuto arrivare al livello di pseudocodice del metodo include?
Carlos Gavidia-Calderon,

8
Lo pseudocodice migliorerà le tue possibilità di ottenere il codice dal team offshore esattamente come lo desideri. Come altri hanno sottolineato, il processo per far funzionare con successo l'offshoring può essere più costoso che tenere tutto il lavoro internamente. Ma questa non è la tua decisione da prendere.
Robert Harvey,

2
Non dovrebbe essere It's very expensive when it goes wrong. :-)
LarsTech

@LarsTech: ecco perché è giustificabile la spesa aggiuntiva per farlo nel modo giusto.
Robert Harvey,

A pseudocodice piace fare lo stesso sforzo di scrivere codice reale, + spese di comunicazione offshore
Web Devie

16

L'ultimo progetto sono stato il progettista del software. Tutto lo sviluppo era offshore. Abbiamo avuto successo. Quindi questo processo può funzionare.

Ho prodotto molta documentazione, ma non è stata affatto esaustiva e non è stata fornita istruzioni dettagliate o dettagliate fino ai nomi delle classi, ai nomi delle funzioni ecc. Ad esempio, ho prodotto diagrammi di sequenza, casi d'uso, flussi di lavoro, sistema e integrazione diragrammi, nonché una documentazione di progettazione più dettagliata in base alle esigenze.

Dipende davvero da quanto ti fidi dello sviluppo offshore. Confido che il mio team offshore sia sviluppatori competenti. Detto questo, ho fornito la direzione generale ma ho dato loro un margine di manovra per l'implementazione che il team offshore ha trovato piacevolmente soddisfacente. In passato erano più micro-gestiti. In alcune situazioni li guiderei usando gli schemi di progettazione secondo necessità. Ho anche eseguito periodicamente revisioni e analisi del codice sul codice che scrivevano e consiglierei il refactoring o ripulire gli sforzi. Inoltre, poiché alcuni membri del team hanno avuto incidenti con veicoli ricreativi, ho finito per scrivere alcune delle storie durante l'implementazione, dato che abbiamo finito per essere a corto di risorse.

Inoltre, penso che questo processo abbia davvero successo solo sulla base dei tuoi lead tecnici sul progetto e sulla comunicazione tra business, designer, lead e sviluppatori. Abbiamo passato molto tempo a esaminare ogni caratteristica e storia e ci siamo assicurati che i lead / risorse offshore fossero ben versati su quali fossero i requisiti. Se non stanno ponendo domande durante la revisione della funzione / storia, aspettatevi alcuni problemi. Inoltre, il lavoro non è stato considerato completo fino a quando non si è avuto un accordo commerciale. Ciò ha reso tutti responsabili in quanto tutto è stato monitorato in uno strumento che ha gestito lo sviluppo agile.

Come ha già accennato una delle altre risposte, il processo di sviluppo includeva standard di denominazione (regole del resharper integrate), copertura dei casi di test (ha usato TDD, Mocking, ecc.), Quindi se c'è un buon processo di codifica e procedure in atto aumenterà le tue possibilità per un progetto di successo.


Usi qualche particolare processo agile? Forse su misura?
Carlos Gavidia-Calderon,

2
Non era pura agilità, più come iterazioni pianificate. Tutto è stato pianificato in anticipo e poi ridotto in iterazioni di 2 settimane. Abbiamo usato processi agili in ogni interazione. Grafici di velocità e burn down utilizzati, stand-up giornaliero standard seguito da un'ora o due telefonate offshore. Sicuramente dedichiamo molto tempo al telefono all'offshore, ma il nostro giorno di sviluppo ideale è stato di 6 ore per tenere conto del tempo di comunicazione.
Jon Raynor,

2
Nota per sé: elimina i veicoli ricreativi dalle future iterazioni di software.
Robert Harvey,

Credi che il tuo successo abbia avuto più a che fare con la scelta del giusto team offshore, o semplicemente con la fiducia di loro nel fare la cosa giusta senza microgestione? Pensi che la tua tecnica di "iterazioni pianificate" sia stata fondamentale per il tuo successo?
Robert Harvey,

1
@Jess - No, il team è responsabile solo di fornire storie e funzionalità (funzionalità) approvate. Le funzionalità future non vengono fornite, sebbene la progettazione del software consenta in genere una certa flessibilità, ma forniamo solo ciò che è stato richiesto.
Jon Raynor,

2

Il costo maggiore dello sviluppo offshore è la comunicazione. La documentazione è un modo di comunicare, tuttavia, i documenti non sono in grado di coprire tutti i dettagli e i potenziali cambiamenti di solito.

Non sono sicuro di quanto sia grande il tuo progetto. Suppongo che sia grande, altrimenti non è utile utilizzare il team di sviluppo offshore. Quindi, la mia esperienza è

  1. Definire il codice scheletro, l'interfaccia pubblica, l'interfaccia di servizio, ecc. E rivederli insieme
  2. Definire i test di accettazione con l'altro lato
  3. Dividi il grande documento in piccole storie, lavora in base alle piccole storie. Il grande documento è solo una grande immagine dell'intero sistema
  4. Imposta i punti di controllo delle storie, una o due settimane

1 e 2 riguardano in realtà lo sviluppo, per assicurarsi che l'altra parte capisca bene il requisito e che entrambe le parti stiano usando lo stesso modello. 3 e 4 fanno parte della metodologia di sviluppo agile, ma per lo sviluppo offshore è difficile utilizzare l'intero processo agile.


1

Penso che tutti noi lavoriamo così. Qualcuno da qualche parte progetta qualcosa e noi programmiamo qualcosa che fa parte o che funziona con il sistema. Esempi sono la creazione di app basate su un framework, come le app non di gioco sui dispositivi mobili. Molte decisioni sull'interfaccia utente sono state prese dal team di progettazione delle persone che hanno creato il framework. Hanno controllato tutto, dall'imparare a scrivere un'app alla vendita della tua app. Se vuoi capire perché questo modello ha avuto successo, dai un'occhiata alla quantità di documentazione e strumenti forniti da alcuni venditori.

Un altro esempio sono le applicazioni web con molti di loro che cercano di implementare lo stile REST. Questo non dice davvero come implementare qualcosa, anche se ci sono specifiche su come usare HTTP. Ad ogni modo, ci sono specifiche e principi guida da seguire. Se vedi la quantità di discussioni sull'implementazione di REST su stackexchange o sul posto di lavoro, è come se un architetto dicesse alla gente di implementare qualcosa in determinati modi. È ancora un modello di successo, credo, con così tante persone che seguono lo stile.

Da questi due esempi puoi vedere come vengono propagati i progetti, alcuni come specifiche della carta, altri vengono forniti con libri, strumenti ed esempi. Puoi vedere come le persone chiedono (in volume), cercando di capire bene con gradi diversi a seconda degli standard / progetti che stanno cercando di seguire. Basta andare su StackOverflow e guardare;)

Se mi dai le tue specifiche, te lo chiederò. Se mi dai un test unitario, codificherò e testerò.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.