Mi è stato affidato il compito di gestire un progetto che è stato esternalizzato ad alcuni sviluppatori ucraini.
La società li ha assunti tramite Elance con un prezzo fisso . A quel punto il mio capo mi ha lasciato da solo per gestirli e portare a termine il lavoro. Ho creato una specifica dettagliata della cosa completa che doveva essere fatta.
Il progetto prevedeva la gestione di cose come XMPP, RabbitMQ e Database. Nel mio primo incontro con loro (sempre IM) ho spiegato accuratamente cosa dovevano fare. Sembravano capirlo - e erano molto fiduciosi che sarebbe stato fatto facilmente.
Fin qui tutto bene. Ma dopo una settimana, quando ci siamo incontrati di nuovo, erano pieni di equivoci su ciò che doveva essere fatto. Quando ho chiesto a uno degli sviluppatori se conoscesse XMPP, ha detto che ci stava lavorando per la prima volta. Al nostro primo incontro avevo menzionato in modo molto specifico la complessità del progetto e le tecnologie coinvolte. Inoltre, avevo ripetutamente chiesto loro di scrivere una specifica funzionale esattamente come lo avrebbero fatto. Ma hanno detto NO e hanno insistito sul fatto che avrebbero preferito scrivere il codice. Ho detto OK.
Il progetto è stato completato dopo 3 settimane e hanno consegnato ciò che era necessario. A quel punto ho iniziato a rivedere il codice. Era okay per la maggior parte, ma ci sono alcuni problemi importanti:
- hanno codificato alcune delle cose che dovevano essere separate in un file di configurazione
- c'erano più file di configurazione che dovevo consolidare in uno
- hanno scritto assolutamente NESSUNA documentazione
- alcune altre modifiche minori
Ho chiesto loro di apportare queste modifiche (eccetto la documentazione) - E abbiamo avuto un argomento.
Hanno detto, dal momento che il prezzo è stato fissato, ero ingiusto nel chiedere loro di apportare modifiche una volta completato il codice di lavoro. Che avevano lavorato per un periodo di tempo irragionevole nel progetto e ora era completamente sbagliato chiedere qualcosa.
Finalmente ora hanno fatto i cambiamenti, e il progetto è finito. Ma lascia alcune domande nella mia mente ...
-
Hanno fatto ciò che era necessario, ma io avevo bisogno di correttamente eseguito , e quindi delle modifiche. ero davvero ingiusto?
-
Perché sono stato d'accordo nel lasciarli codice senza avere una specifica funzionale?
-
Perché non mi sono assicurato che avessero capito tutto la prima volta?
Qualcuno si trova nella stessa posizione? Pensi che ci sia un modo migliore per gestire i progetti in outsourcing?
- UPDATE -
Grazie per tutte le opinioni - dopo aver riflettuto su tutta l'esperienza, posso concludere ...
-
Anche se non sono stato vago nelle specifiche dalla mia parte, certamente non li ho fatti ironclad come suggerito. Quindi il take away è: sii sempre il più specifico possibile - leggi le tue specifiche anche dal loro punto di vista e vedi se ti sei perso qualcosa. Ripeti almeno tre volte.
-
Basta specificare cosa il codice dovrebbe fare non abbastanza. È necessario specificare come dovrebbe apparire il codice. Quale sarà la struttura della directory; anche i nomi dei file, se possibile. Questo ti salverà da un sacco di fastidio più tardi. Specifica rigorosamente le linee guida di codifica, le convenzioni di denominazione delle variabili, il formato della documentazione interna, ecc. Verifica che rispettino tali linee guida e, in caso contrario, urli.
-
Richiedi una specifica funzionale dalla loro parte - insisti che sia scritto prima di qualsiasi codice. Ciò causerà un sacco di confusione e incomprensioni.
-
Rivedi il codice mentre viene sviluppato in modo da identificare le anomalie in precedenza e correggerle. Parla con loro almeno una volta ogni altro giorno.
-
Infine, prova a creare un buon rapporto con loro. Falli sentire che apprezzi il loro lavoro. Non spingerli esageratamente per soddisfare le tue linee guida, ma chiedi loro di farlo e di dire loro che renderà il codice molto più semplice per te una volta completato il progetto.