Mi era stato affidato il compito di gestire un progetto che era stato esternalizzato ad alcuni sviluppatori ucraini.
La compagnia li assunse attraverso Elance a un prezzo fisso . A quel punto il mio capo mi ha lasciato solo per gestirli e portare a termine il lavoro. Ho creato una specifica dettagliata di tutto ciò che doveva essere fatto.
Il progetto prevedeva di occuparsi di cose come XMPP, RabbitMQ e Database. Nel mio primo incontro con loro (sempre IM) ho spiegato a fondo cosa dovevano fare. Sembravano capirlo - ed erano molto fiduciosi che sarebbe stato facile farlo.
Fin qui tutto bene. Ma dopo una settimana, quando ci siamo incontrati di nuovo, erano pieni di incomprensioni su ciò che doveva essere fatto. Quando ho chiesto a uno degli sviluppatori se conosceva XMPP, mi 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 di 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. È andato tutto bene 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 piccole modifiche
Ho chiesto loro di apportare queste modifiche (tranne la documentazione) - E abbiamo avuto una discussione.
Dissero che, dato che il prezzo era stato fissato, non ero giusto nel chiedere loro di apportare modifiche una volta completato il codice di lavoro. Che avevano lavorato per un periodo irragionevole sul progetto e ora era completamente sbagliato chiedere qualcosa.
Finalmente ora hanno apportato le modifiche e il progetto è finito. Ma mi vengono in mente alcune domande ...
Hanno fatto ciò che era necessario, ma io ne avevo bisogno nel modo giusto , e quindi i cambiamenti. ero davvero ingiusto?
Perché ho accettato di lasciarli codificare senza avere una specifica funzionale?
Perché non mi sono assicurato che capissero tutto la prima volta?
Qualcuno si ritrova nella stessa posizione? Pensi che ci sia un modo migliore per gestire i progetti in outsourcing?
-- AGGIORNARE --
Grazie per tutte le opinioni - dopo aver riflettuto sull'intera esperienza, posso concludere ...
Anche se non ero vago nelle specifiche dalla mia parte, certamente non li ho resi coraggiosi come suggerito. Quindi il take away è: sii sempre il più specifico possibile - leggi anche le tue specifiche dalla loro prospettiva e vedi se ti sei perso qualcosa. Ripeti almeno tre volte.
Basta specificare cosa dovrebbe fare il codice non abbastanza. È necessario specificare l'aspetto del codice. Quale sarà la struttura delle directory; anche i nomi dei file, se possibile. Questo ti salverà da molti fastidi in seguito. Specificare rigorosamente le linee guida di codifica, le convenzioni di denominazione variabili, il formato della documentazione interna, ecc. Accertarsi che rispettino tali linee guida e, in caso contrario, urlare.
Richiedi una specifica funzionale dalla loro parte - insisti che sia scritta prima di qualsiasi codice. Ciò eliminerà molte confusioni e incomprensioni.
Rivedi il codice mentre viene sviluppato in modo da identificare le anomalie in precedenza e farle correggere. Parla con loro almeno una volta ogni due giorni.
Infine, cerca di stabilire un buon rapporto con loro. Fagli sentire che apprezzi il loro lavoro. Non spingerli in modo esagerato per adattarli alle tue linee guida, ma richiedi loro di farlo e di dire loro che renderebbe il mantenimento del codice molto più facile per te una volta completato il progetto.