Come condurre un progetto di sviluppo senza competenze tecniche


17

Sono stato uno sviluppatore pratico per tutta la mia carriera e amo lavorare con il codice. Ho sempre risentito del leader del team che ha poca o nessuna esperienza in merito a una particolare tecnologia e insiste su una certa implementazione.

Ora mi trovo dall'altra parte dello specchio. Sono lo sviluppatore principale di un client grasso da implementare in C #, tuttavia la mia esperienza è nella creazione di applicazioni Web Java. Mentre so di poter sfruttare i modelli di progettazione e i paradigmi OO in qualsiasi lingua, mi sono perso quando si tratta di standard di codifica, strumenti del ciclo di vita del progetto e procedure di rilascio / distribuzione. Non ho dubbi sul fatto che posso imparare le basi entro un mese o due, ma ci sono alcune esperienze che si possono raccogliere solo con il tempo.

Cosa devo fare e come posso evitare di diventare il capo del progetto che odiavo durante lo sviluppo?


12
per evitare di odiarti in quel modo, parla solo con i membri del tuo team. Parla regolarmente, parla spesso, parla 1: 1 "... La tua ricompensa per una cultura di 1: 1 sano è una netta mancanza di drammaticità."
moscerino il

1
Qual è il tuo titolo e la tua responsabilità esattamente per questo argomento? Sei un PM, sviluppatore senior, ...?
NoChance,

Impara dai migliori ... youtube.com/watch?v=GjJCdCXFslY
jfrankcarr

1
Ma seriamente, ho scritto questa serie di articoli qualche tempo fa che potresti trovare utili: vbnotebookfor.net/2007/07/25/…
jfrankcarr

Risposte:


19

Onestamente, non importa quanta esperienza hai con una tecnologia, il mio consiglio è lo stesso: non applicare decisioni tecnologiche su coloro che dovranno convivere con loro mentre sei impegnato nella gestione.

Sii onesto con te stesso. Scommetto che il motivo per cui odiavi quei precedenti manager non era perché non avevano la base di conoscenza da cui prendere le decisioni, era perché hanno imposto decisioni e non hanno mai affrontato le conseguenze.

Questo vale se non hai mai toccato .NET prima o sei lo sviluppatore più esperto del team. Il tuo compito ora è gestire, non prendere decisioni tecniche.

Gestire potrebbe, a seconda del livello di abilità dei tuoi sviluppatori, significare avvisarli quando lo richiedono. "Hai guardato Spring.NET?" (nota la mancanza di istruzioni lì) è una cosa perfettamente buona da dire. Inoltre, "Google in giro, guarda cosa sta facendo il resto del mondo, non siamo i primi ad affrontare questo problema".

Per alcuni aspetti, come sviluppatore Java esperto, potresti trovarti in una posizione migliore della maggior parte per questo. La maggior parte dei framework e delle tecnologie Java ha un analogo equivalente in .NET. Quindi non devi dire "Ecco la cosa migliore da usare", puoi dire "L'ho usato in Java, conosci un equivalente .NET?"

Incoraggia anche molte conversazioni all'interno della squadra. Organizza incontri settimanali di discussione tecnica. Tutto ciò di cui hai bisogno sono informazioni, alla fine; devi sapere quali decisioni hanno preso e perché. Non è necessario prendere quelle decisioni per la squadra.


2
Giusto. La cosa principale è essere disposti a lasciare che le tue "stelle" tecniche prendano decisioni diverse da quelle che avresti preso. Se riesci a farlo, allora tutti (tranne, ovviamente, i dirigenti) saranno felici e produttivi.
Daniel R Hicks,

'Quindi non devi dire "Ecco la cosa migliore da usare", puoi dire "L'ho usato in Java, conosci un equivalente .NET?" Nella maggior parte dei casi, se esiste uno strumento equivalente, sarà preceduto da una "N", quindi in genere puoi trovarli tu stesso.
Dan Neely,

Ricorda che si sta definendo "Lead Developer" e non "Project Manager". Nella mia esperienza, queste sono due cose molto diverse.
Wonko the Sane,

@WonkotheSane: È vero che l'OP si riferisce a Project Lead, Team Lead e Lead Developer come se fossero tutti la stessa cosa, e questo è confuso. Ma ho preso spunto dal contesto in cui sono utilizzati.
pdr,

@pdr: d'accordo, quasi. La parte su "Sono in grado di sfruttare i modelli di progettazione e i paradigmi OO" mi fa meravigliare un po '.
Wonko the Sane,

6

Ho avuto dei manager / team leader molto bravi che sapevano molto poco della tecnologia e alcuni dei miei peggiori manager sono stati quelli che pensavano di sapere tutto.

Per essere un leader, se hai persone ragionevolmente competenti, la cosa principale è essere in grado di giudicare la loro competenza e giudizio, e dare a ciascuno la massima latitudine che può gestire, mantenendo le "anatre selvatiche" sul compito e il "a malapena concorrenti "impegnati con attività" sicure "ma produttive. Assicurati che tutti stiano marciando verso lo stesso batterista.

La tua sfida più grande è probabilmente quella di tenere a bada i dirigenti. Vorranno rapporti, pianificazioni e segni di spunta, e devi capire cosa vogliono e come farseli ragionevolmente bene. (Beh, non esattamente "falso", ma produce documentazione che li soddisfi senza perdere tempo o tempo della tua squadra.)


4

Non sei stato scelto per le tue abilità di codifica C # e, a meno che tu non stia scrivendo codice fin dall'inizio, non importa se conosci C # o no. Devi iniziare a pensare a un livello superiore:

  • Quali abilità porta ogni persona nella tua squadra al tavolo?
  • Quali componenti sono fondamentali per il successo del progetto?
  • Cosa devi produrre oltre al codice attuale? (Test? Documentazione?)
  • Come raccoglierai i requisiti, se non l'hai già fatto?
  • In che modo tu e il tuo team affronterete il processo di progettazione?
  • Sai che avere uno standard di codifica è importante, ma puoi fare affidamento sul tuo team per capire esattamente quale standard vogliono seguire.
  • Come si possono rilevare i problemi in anticipo?

Alcune di queste cose possono attraversare il territorio della gestione del progetto, ma come sviluppatore principale lavorerai a stretto contatto con il project manager su questi e altri problemi.

Sicuramente impara ad essere efficace lavorando in C # il più velocemente possibile. Ricorda solo che il tuo ruolo è quello di vedere oltre la sintassi e i dettagli del framework e guardare l'immagine più grande.


2

Prendi un approccio pratico. Inizia prendendo un semplice primer C # e scrivi un po 'di codice. Prova alcune cose di base che potresti sapere con gli occhi bendati in un'altra lingua.

Leggi su stile di programmazione e convenzione. Dovresti trovarlo in parte nel tuo primer, ma puoi anche usare prodotti come StyleCop e Resharper per applicare regole di stile che non conosci. Questo ti insegnerà molto rapidamente a fare le cose in un modo comunemente accettato per evitare problemi nella compilazione del tuo software.

Sii solo te stesso e applica le conoscenze di progettazione che già possiedi. Le basi sono essenzialmente le stesse indipendentemente dalla lingua. Dove ci saranno differenze sarà il modo in cui le lingue differiscono in termini di struttura saranno abbastanza minime, e gran parte di esse apparirà molto rapidamente quando si mettono insieme una o due app di prova.

Se ci sono cose ovvie che non conosci, sii imminente. La tua squadra rispetterà l'onestà più che limitarsi a barattare senza indizi. Prendi decisioni ben informate e motivate e prenditi sempre un paio di minuti a parte per considerare la tua risposta. Dovrai essere assertivo senza tentare di dominare e non puoi lasciare che la tua mancanza di conoscenza in un'area appaia come una riflessione sulla tua capacità di guidare la squadra. La leadership implica il mentoring, ma il mentoring non significa che non puoi anche mostrare la volontà di imparare qualcosa di nuovo.


3
Direi che questo è esattamente l'opposto di cosa fare come manager. Potrebbe essere allettante entrare e buttare giù un po 'di codice, ma non è più il tuo lavoro ... il tuo compito è quello di consentire al tuo team di fare ciò per cui li hai assunti e fidarti della loro esperienza e giudizio. Cercare di accelerare su una piattaforma diversa è controproducente.
Michael Brown,

@MikeBrown Questo vale solo se la posizione è di gestione. Tutte le posizioni di leadership del team che ho ricoperto hanno richiesto una notevole quantità di tempo nella codifica oltre alla gestione del progetto, alla pianificazione e ad altre responsabilità che ti aspetteresti da questa posizione. Se l'OP avesse detto che sarebbe stato un manager , la mia risposta sarebbe stata molto diversa.
S.Robins,

Hai ragione. Stavo assumendo il manager dal fatto che era per una tecnologia in cui non aveva esperienza. Apporta una modifica e annullerò il mio voto negativo :)
Michael Brown,

@MikeBrown Non sono sicuro di cosa pensi di dover modificare. Ho risposto alla domanda del PO basandomi sulla sua affermazione che sarebbe diventato responsabile del progetto ... tuttavia, estenderò un po 'la risposta. :)
S.Robins,

Oh, non è che pensavo avessi bisogno di modificare ... solo che SO non mi avrebbe permesso di cambiare il mio voto senza una modifica :(
Michael Brown,

1

Se la pensi così e in realtà ti preoccupi, hai già evitato il rischio di diventare questo tipo di responsabile del progetto. È un tipo di personalità totalmente diverso che oserebbe prendere decisioni senza la giusta conoscenza. Tieni semplicemente una mente aperta su ciò che i tuoi colleghi ti dicono e crea e incoraggia una cultura del dialogo e dello scambio di informazioni nella tua squadra.


1

Sembra che qui ci siano alcuni problemi.

La tecnologia utilizzata nel progetto che stai conducendo e il processo che regola lo sviluppo di quel progetto.

Sei il capo squadra o uno sviluppatore principale? Uno sviluppatore principale svolge anche una parte del lavoro di progettazione e sviluppo. Quindi l'unico modo per aggirare questo è solo di tirarsi giù e imparare la nuova tecnologia .

Se stai effettivamente guidando il team, dovrai fidarti del team e lasciargli guidare la maggior parte della direzione tecnica del progetto. Naturalmente, concettualmente, sarai in grado di mantenere quel governo nella giusta direzione.

I processi che regolano lo sviluppo del progetto dovrebbero essere prevalentemente in atto . Si tratta solo di leggerli, comprenderli ed eseguirli.

In caso contrario, negozia con il tuo capo per ottenere un tutor che ti aiuti a mettere in atto un processo di sviluppo. Questo è abbastanza importante. Non funzionerà abbastanza rapidamente se il processo non è attivo ed è ad hoc.

In bocca al lupo!


0

L'opportunità arriva di tanto in tanto .. Afferralo .. Direi, prova ad imparare le basi di C #. Ottieni alcuni tutorial online, prova a lavorarci su. inizialmente sarebbe difficile imparare il nuovo concetto, più tardi, quando il tuo primo compito sarà completato, avrai una certa fiducia in esso.

Pensa positivo, prova a fare un duro lavoro, esegui il debug del tuo codice e sono sicuro che riuscirai a dominarlo.

Non perdere l'occasione.


0

Penso che se hai un buon gruppo di sviluppatori .Net ci sono molte conoscenze nel team che forse devi attingere per iniziare. Ci sono molte somiglianze tra Java e .Net che ciò che già sai potrebbe effettivamente applicare più o meno direttamente. L'importanza è sapere cosa è importante ottenere giusto per questo progetto e i rischi connessi. Comunica con il tuo team tutte le volte che è necessario. La pratica di ingegneria del software si evolve nel corso di un progetto, quindi potrebbe essere difficile avere una "migliore pratica" molto presto nel progetto.

Ho avuto il contrario della tua esperienza in cui mi è stato dato un team molto verde di laureati che non provengono dal campo relativo al software. Mentre ho tutte le ragioni per stabilire cosa deve essere fatto (ero impiegato), ho invece cercato pratica per farci muovere e un sacco di coaching e discussione per far evolvere la nostra pratica di ingegneria del software. Ho imparato un sacco dal team lungo la strada e siamo quasi lì a consegnare il nostro primo progetto interno dopo oltre un anno di lavoro!


-1

Mi sono perso quando si tratta di standard di codifica, strumenti del ciclo di vita del progetto e procedure di rilascio / distribuzione.

Trova un prodotto open source che utilizza la stessa tecnologia che utilizzerai.

Se possibile, trovane uno che sia in qualche modo simile al dominio problematico. Questo non è importante quanto trovare un progetto con la stessa tecnologia e gli aggiornamenti attivi.

Scarica il loro codice di lavoro. Leggilo.

Scopri quali strumenti usano. Usali.

Scopri come compilare e rilasciare il progetto open source. Costruiscilo e rilascialo.

Un progetto open source (con un numero di collaboratori) illustrerà le migliori pratiche.

Non ho dubbi sul fatto che posso imparare le basi entro un mese o due, ma ci sono alcune esperienze che si possono raccogliere solo con il tempo.

Vero.

Impara dalla comunità open source.


2
A volte le persone che lavorano ai progetti open source non usano i migliori strumenti disponibili o seguono gli standard (buone pratiche). Conosco pochi progetti open source (non voglio nominarli) che sono davvero pessimi in termini di utilizzo degli strumenti giusti o anche di seguire le convenzioni del settore.
Christian P,

@ChristianP: Mentre ci sono alcuni progetti open source tutt'altro che stellari, è facile trovarne di grandi che siano abbastanza buoni. E trovare qualsiasi progetto open source come esempio è meglio di nessun esempio.
S. Lott,

Sono d'accordo che qualsiasi esempio sia migliore di nessuno. Ma quando si cercano best practice, strumenti, ecc. Si può imparare di più da un buon progetto open source anche se il progetto non risolve lo stesso problema.
Christian P,
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.