In un team multidisciplinare, quanto dovrebbero sovrapporsi le abilità di ciascun membro? [chiuso]

4

Ho lavorato allo sviluppo di software embedded per questa piccola startup e il nostro team è piuttosto piccolo: circa 3-4 persone. Siamo responsabili di tutta l'ingegneria che coinvolge un dispositivo RF controllato da un microcontroller integrato che si connette a un host PC che esegue una sorta di software di raccolta e analisi dei dati.

Sono venuto a sviluppare queste due linee guida quando lavoro con i miei colleghi:

  1. Definisci una chiara separazione delle responsabilità e assicurati che il contributo di ciascuna persona al prodotto finale non si sovrapponga.
  2. Non dare per scontato che i tuoi colleghi sappiano tutto sulle loro responsabilità. Presumo che ci sia un qualche tipo di tecnologia di cui dovrò essere competente per interfacciarsi correttamente con il lavoro dei miei colleghi.

Il primo punto è abbastanza facile per noi. Faccio firmware, un ragazzo fa la RF, un altro fa il software per PC e l'ultimo funziona con il DSP. Nulla si sovrappone in termini di lavoro misto di due persone nel prodotto finale. Perché ciò accada, un ragazzo deve consegnare il lavoro a un altro ragazzo che lo controllerà e lo integrerà da solo.

Il secondo punto è il cuore della mia domanda. Ho imparato nel modo più duro di non fidarmi assolutamente delle conoscenze dei miei colleghi, indipendentemente da quanti anni di esperienza dichiarino di avere. Almeno fino a quando non me lo hanno dimostrato un paio di volte. Quindi, dato che ogni volta che sviluppo un pezzo di firmware, se si interfaccia con una tecnologia che non conosco, cercherò di impararlo e sviluppare un pezzo di codice di test che mi aiuti a capire cosa stanno facendo. In questo modo se il mio pezzo del prodotto entra in conflitto con un altro pezzo, allora ho una certa conoscenza delle possibili cause.

Ad esempio, il ragazzo PC ha iniziato a implementare la sua GUI in .NET WPF (C #) e l'uso di LibUSBdotNET per l'accesso USB. Quindi ho imparato C # e la libreria USB .NET che usa e ho creato una piccola console per aiutarmi a capire come funziona quella libreria USB.

Ora tutto ciò richiede più tempo ed energia, ma ritengo che sia giustificato in quanto mi dà un punto d'appoggio per affrontare i problemi di integrazione. Inoltre mi piace imparare questa nuova roba quindi non mi dispiace. D'altra parte, posso vedere come questo può trasformarsi in una sincronizzazione temporale per un lavoro che non può trasformarsi nel prodotto finale e potrebbe non trasformarsi mai in un problema.

Quindi quanta esperienza / abilità si sovrappongono ti aspetti nei tuoi compagni di squadra rispetto alle tue abilità? Questo problema scompare quando i team diventano più grandi e diversificati?

    
posta spade78 04.03.2011 - 00:09
fonte

3 risposte

3

Nelle prime fasi di una startup, ogni persona di solito fa un lavoro di diversi reparti e non c'è posto per la ridondanza. Tuttavia, in un team di programmatori (3 o più), idealmente proverei a raggiungere la ridondanza totale, cioè ogni membro del team dovrebbe essere almeno temporaneamente sostituibile. Ad esempio, una persona potrebbe essere sysadmin a tempo pieno, ma un programmatore dovrebbe essere in grado di saltare quando sysadmin prende una vacanza. Le persone sono brave in cose diverse, e non è possibile impiegare due programmatori Java e due programmatori Javascript solo per motivi di ridondanza. Ma un programmatore Java potrebbe essere interessato abbastanza a Javascript, e il programmatore Javascript potrebbe essere OK con la gestione delle comunicazioni con il client quando il project manager è assente. La sovrapposizione del 100% di solito non è possibile, ma almeno una parziale sovrapposizione in parti importanti del lavoro non è così difficile da ottenere in una squadra ben bilanciata.

Devo sottolineare che un professionista non dovrebbe cercare di essere indispensabile. Anche se potrebbe essere una buona posizione per negoziare un salario migliore, se lo fai, stai fottendo sia il tuo datore di lavoro che te stesso. Voglio essere in grado di spegnere il cellulare quando sei in vacanza. E soprattutto perché un progetto ha portato il mio lavoro, tra le altre cose, a rendermi completamente sostituibile. Voglio poter lasciare il mio progetto e lavorare su qualcos'altro senza che qualcuno mi abbia chiamato per un progetto su un progetto cinque anni dopo aver lasciato l'azienda. E come manager, devo lo stesso alla mia squadra, motivo per cui è importante assumere una squadra equilibrata.

Ci sono anche grandi vantaggi per la ridondanza. I programmatori possono scegliere / negoziare quale parte ricevono al programma. Puoi fare revisioni del codice quando ti serve. Se tutti sanno qualcosa di ciò che fanno gli altri, la comunicazione è solitamente migliore. Inoltre, questo permette alle persone di crescere e imparare altre cose - ad esempio, il nostro beta tester che inizialmente non era un programmatore era in grado di entrare in JUnit e test automatici. Ad un certo punto avevamo un solo DBA che era sempre in servizio, quindi uno dei programmatori ha espresso interesse e la società lo ha inviato al workshop di Informix e ora ha qualcosa da mostrare nel suo CV.

    
risposta data 04.03.2011 - 03:08
fonte
2

Alcune sovrapposizioni sono salutari, esattamente per la ragione che descrivi: tutti noi siamo umani fallibili, quindi è utile se i membri del team riescono a ricontrollare le idee e i risultati del lavoro l'uno dell'altro.

Un altro motivo, perlomeno altrettanto convincente, è quello di non avere persone indispensabili nella squadra. Se un tale ragazzo dovesse mai smettere / essere investito da un autobus / ... il tuo progetto potrebbe essere condannato. Vedi anche fattore di bus .

    
risposta data 04.03.2011 - 00:18
fonte
0

Come stai scoprendo, dovrebbero esserci delle sovrapposizioni.

  1. Devi capire qualcosa di ciò che fanno gli altri membri della tua squadra in modo che tu possa apprezzare quando hanno difficoltà con un particolare problema.
  2. Quando arrivi a integrare i tuoi componenti separati in un insieme funzionante, è meglio che tu abbia un'idea del motivo per cui i tuoi colleghi hanno fatto le cose come hanno fatto.

    Potresti avere idealmente bisogno di coordinate in doppia precisione (per esempio) ma arrivano come galleggianti a causa di una limitazione nell'hardware. Se non lo sapessi potrebbe causare problemi.

  3. Assumere nuovi membri del team diventa uno sforzo comune, come tutti sapete (in una certa misura) cosa è richiesto da un "ragazzo del firmware".
risposta data 04.03.2011 - 00:18
fonte

Leggi altre domande sui tag