Quali competenze dovrei coltivare per diventare un capo tecnico / di sviluppo? [chiuso]


82

Sono attualmente un programmatore professionista. Voglio espandere il mio set di competenze, ma voglio anche fare in modo che la carriera salti come leader dello sviluppo come parte di una squadra. So che ci deve essere molto da imparare (e questa non sarà una cosa istantanea) ma penso di essere abbastanza intelligente da farlo e sono all'altezza della sfida.

Sono sicuro che molti dei membri qui probabilmente lo hanno superato da soli, e ora sono leader di sviluppo di successo. Sfortunatamente, anche se conosco alcune aree personali che vorrei migliorare (profondità delle conoscenze, ampiezza delle conoscenze, skillset, ecc.), Non sono davvero sicuro di come iniziare qualcosa del genere.

Come programmatore ora, quali passi devo prendere per raggiungere questo obiettivo? Cosa devo dare la priorità?


Ci sono opportunità nella tua attuale azienda per essere promossi a capo di una squadra? Senza l'esperienza del team leader, mi chiedo se troppe compagnie assumano solo dall'interno.
JeffO

@JeffO In realtà ho appena cambiato lavoro. Non so se avrò l'opportunità qui - penso che ci sia una possibilità, ma è una piccola startup e penso che ci sarà solo un lead di sviluppo alla volta.
lunchmeat317

2
Una sola abilità: capacità di persuadere una persona che può dare questa posizione per darti questa posizione.
vortexwolf

1
A quanto pare, c'è una possibilità ben distinta che in realtà non sono tagliato per questo. Per quanto mi piacerebbe avanzare nella mia carriera in questa direzione, penso di ricadere maggiormente sul lato degli sviluppatori: a volte voglio solo abbassare la testa e scrivere codice. Considerando ancora le possibilità, ma ora con cautela.
lunchmeat317

Risposte:


90

Per diventare un capo tecnico, è essenziale quanto segue

  • La capacità di guidare i membri dello staff a tutti i livelli di anzianità, da qualcuno che è stato fuori dall'università per 3 mesi a una persona che ha programmato per 30 anni

  • Una buona conoscenza del tuo dominio di sviluppo. Ciò include: lingue, framework, utility, ambienti di sviluppo

  • Una solida conoscenza dei sistemi di gestione dei problemi, capacità di gestione dei progetti e controllo delle versioni

  • Diventa il killer insetto

  • Sapere come condurre revisioni tempestive del codice, cosa cercare e come ridurre al minimo il tempo necessario per la conservazione e le modifiche da apportare

  • Tieniti aggiornato con gli sviluppi nel tuo dominio di sviluppo. Ad esempio, se non avessi appreso nuovi framework o tecnologie da .NET 2, oggi faresti le cose piuttosto indietro.

  • Come scrivere test unit e simulazioni e convincere anche i tuoi sviluppatori a scriverli

  • Conoscenza di cosa sono i modelli di design e quando utilizzarli

  • Conoscenza di cosa sono gli odori di codice e come mitigarli

  • Integrazione continua

  • La capacità di pianificare progetti e rilasci

A seconda della tua organizzazione e se disponi di architetti nel personale, probabilmente avrai bisogno di sapere quanto segue:

  • La capacità di strutturare i tuoi progetti e suddividerli in parti funzionali

  • Una conoscenza approfondita della sicurezza, incluso il modo corretto di gestire le password, separare i sistemi, proteggere i dati, ecc

  • Concetti aziendali come bus di servizio, code di messaggi, BizTalk

  • Modelli di progettazione aziendale

  • Architetture di servizio / RPC come SOAP e REST

  • Framework ORM come Hibernate, Entity Framework, Doctrine

  • Dispiegamento continuo

  • La nuvola

  • La capacità di raccomandare le tecnologie corrette da utilizzare per un progetto. Questo potrebbe essere difficile se il tuo team / negozio fa solo .NET, PHP o Java.

  • Progettare l'applicazione in modo che i futuri miglioramenti possano essere facilmente sistemati

Se vuoi diventare un responsabile dello sviluppo, dovrai anche:

  • Capacità di intervistare e come trovare il personale giusto
  • Come affrontare i problemi delle persone con i membri del tuo team
  • Gestire le direttive / gli obiettivi aziendali e convertire quelle pertinenti in informazioni per i tuoi sviluppatori
  • La capacità di stimare il tempo per i programmatori di abilità diverse
  • La capacità di assegnare compiti agli sviluppatori corretti in base alle loro capacità e capacità

E infine, alcuni altri punti consigliati:

  • Impara al di fuori del tuo dominio di sviluppo

  • Impara a dire NO quando le cose non sono possibili o sono fuori campo o sono in conflitto con restrizioni come budget o tempo.

Gestire una squadra è un ruolo stimolante in cui devi essere. Devi essere la persona che può rispondere a qualsiasi domanda, devi conoscere le giuste tecnologie da usare (a meno che tu non abbia un architetto), devi avere capacità di gestione delle persone ed essere accessibile dal personale (assumendo una posizione dirigenziale). Inoltre, è necessario disporre di competenze di stima accurate per garantire la redditività del progetto ed essere in grado di sporcarsi le mani con il codice di chiunque per individuare i problemi e risolverli rapidamente. Devi evitare di voler fare tutto da solo e promuovere un ambiente di squadra che non sia tossico. Devi rimanere costantemente in cima al tuo stack tecnologico e apprendere gli ultimi sviluppi e le tecniche, nonché le tendenze più ampie del settore.

Dovresti anche conoscere almeno una piattaforma di database e conoscerla bene. Sapere come eseguire la replica, le stored procedure, come funziona Query Optimizer e come progettare correttamente uno schema e quali campi indicizzare.

Indipendentemente dalla posizione esatta, qualsiasi ruolo senior richiede la capacità di comunicare in modo efficace. Se non sei un oratore fiducioso, guarda a fare qualcosa come Toast Masters (parlare in pubblico). Scopri come stabilire e mantenere il contatto visivo. Sii fiducioso. Vestirsi in modo appropriato per la posizione. Dare l'esempio.


2
Ho appena delineato alcune idee a cui potrei pensare in fretta. Rivisiterò e ne aggiungerò altri in seguito. Buona domanda.
Sam

Posso distaccare i benefici di Toastmasters. Mi ha aiutato molto nella mia carriera. Essere in grado di comunicare chiaramente i tuoi pensieri (specialmente quelli tecnici a persone non tecniche) è un'abilità preziosa da possedere.
Jason Swett,

27

Nella mia esperienza, il Lead ha un po 'meno a che fare con il lavoro sporco della programmazione pratica e più con la gestione. A tal fine, consiglierei quanto segue

  1. Investi più tempo nella ricerca e nello sviluppo dell'architettura e del design . Come guida, la tua funzione sarà incentrata sul fornire assistenza tecnica e direzione al tuo team. Ti verrà assegnato di più il compito di capire come pezzi di un tutto si incastrano e meno di come funziona l'impianto idraulico. Non fraintendetemi, avete bisogno di solide costolette tecniche per essere un vantaggio efficace e ben informato, ma una visione di livello superiore di ciò che sta succedendo e di come funzionerà sarà più cruciale qui. Dovresti conoscere altri schemi di progettazione delle migliori pratiche e pratiche di codifica efficaci

  2. Impara come multi-task e gestisci il tempo . Se sei bravo ora, è bello: sviluppane di più. Come sviluppatore, devi solo preoccuparti del tuo attuale compito / progetto. Come piombo, avrai

    • Per partecipare a più riunioni di quelle a cui tieni. Questa è forse la parte più assordante della leadership del team
    • Lavora sull'allocazione delle risorse. Se sei fortunato, le risorse saranno scarse e i progetti saranno abbondanti.
    • Prendi il comando dell'architettura e del design del progetto
    • A seconda delle dimensioni e della struttura dell'organizzazione, fornire una miriade di rapporti, nei tempi e nei tempi previsti. Pensa al lead come a un project manager a basso costo.
  3. Preparati a delegare in modo efficace . Questa IMO sarà la parte più difficile a cui adeguarsi. Come sviluppatore, sei abituato a sporcarti le mani, a fare le cose. Fare tutto l'impianto idraulico e la ricerca. Dovrà fermarsi o ridursi. I concerti entrano, lo distribuisci alla squadra. Otterrai un pezzo dell'azione, non solo quanto sei abituato. E ti morderai la lingua per resistere alla tentazione di angolare più azione per te stesso.

  4. Sulla linea più professionale, prendi in considerazione un allenamento che non solo aumenterà le tue capacità, ma cambierà le tue prospettive . Un corso intensivo in cui la gestione dei progetti software non farà male. Lean Six Sigma è anche un ottimo programma di allenamento (posso testimoniarne l'efficacia) che ti aiuterà a guardare la risoluzione dei problemi da un punto di vista più logico. Per non parlare del fatto che dalla posizione di Lead, sei pronto per ruoli ancora più senior che richiederanno meno abilità tecniche pratiche e più capacità di gestione.

  5. Affina le tue capacità comunicative e interpersonali . Sarai il principale punto di accesso alla tua squadra dal mondo esterno. Il tuo manager o altro supervisore verrà prima da te. Altre unità / squadre nella tua organizzazione si interfacciano con te su qualsiasi cosa riguardante prima la squadra. Gestirai la risorsa più difficile e imprevedibile di tutte: le persone. Devi far crescere una pelle spessa, imparare a ingoiare grandi quantità di orgoglio e assumerti la responsabilità del fallimento della tua squadra.


2
Grandi risposte, mi piace il modo in cui hai notato tutte le cose di cui come sviluppatore in genere non hai idea - in particolare la delegazione. L'ultimo lavoro ho delegato tutto ciò che potevo e avevo ancora una montagna di cose da tenermi occupato. Quindi durante i (rari) momenti liberi farei le cose "noiose": offrirmi aiuto per correggere bug minori, documentazione. Devo guidare dalla parte anteriore.
Rocklan

2
+1 per evidenziare che i ruoli "guida" spesso implicano molta più gestione rispetto alle competenze tecniche
Krease

Questa è una risposta eccezionale e cattura davvero l'essenza del ruolo. Molto bene.
Lloyd Moore,

14

Le cose che Sam non ha detto che sono anche importanti:

  • Come specificare le cose e far lavorare gli altri sviluppatori. Parte del tuo lavoro è mantenere gli altri sviluppatori utilizzati al 100%. Scrivere specifiche non ambigue è molto importante.

  • Come costruire un'applicazione scheletro / prototipo che tutti gli altri dovrebbero seguire

  • Come favorire un buon morale della squadra

  • Come partecipare, guidare e condurre riunioni, come documentare gli elementi di azione

  • Come stimare, scrivere un piano di progetto e aggiornare il piano di progetto

  • Come guardare al futuro: se entro 3 mesi si verificherà un problema, dovrai provare a risolverlo il prima possibile. Se uno sviluppatore va in vacanza per 7 settimane, è necessario iniziare a pianificarlo ora.

  • Come parlare con la direzione. Parlano una lingua diversa per noi. Dai loro soluzioni, non problemi. Dì loro cosa significano le cose tecniche per loro.

E mentre Sam lo ha già detto, una delle cose più importanti è imparare a dire di no . Lo farai molto . L'altro modo di vederlo è dire di , ma "solo se riusciamo a ottenere più denaro / tempo / risorse" - o "questo è per la seconda versione" :)


Penso che molti dei tuoi pezzi vadano nel secchio Architect o PM. Ma sì, a volte il lead dev deve farlo.
SandRock

11

Tutti questi sono dal libro e buone risposte. Permettimi di colpirti dalla realtà.
Che ci crediate o no, passerete molto del tempo a spiegare i manager

  • come è difficile risolvere un problema o
  • perché non può essere risolto in una data linea temporale o
  • anche quanto meno importante sia risolvere.

Per questo hai bisogno delle capacità di spiegare cose tecniche a persone non tecniche, in termini non tecnici. Ed è molto difficile. ad es. considerare di spiegare P = NP a 6 anni. Sfortunatamente non esiste un addestramento formale per questo e devi impararlo da solo.

Anche questa è la posizione in cui la merda politica inizia a colpirti. Il manager ti dirà di favorire una persona perché segue il processo, ma sai che la persona non è utile nella tua squadra per vari motivi, dalla mancanza di competenze tecniche a non un buon membro della squadra. Quindi devi ancora non solo lavorare con questa persona, ma anche dare buoni voti a questa persona. L'opposto è la persona che ha buone capacità e un membro del team molto efficace ma che non sa come soddisfare la direzione e quindi ottiene meno voti.
Poi ci sono incontri inutili che qualcuno in posizione elevata tiene da remoto, tenendo lezioni sui processi efficaci e su come la sua ultima variazione di processo aumenterà la produttività. Devi sapere come nascondere il tuo viso noioso e apparire energico.


1
"deve sapere come nascondere il tuo viso noioso e sembrare energico" hahaha
Adrien Be

Mi sento sempre annoiato quando iniziano questi incontri, tranne per il fatto che si discute di qualcosa di tecnico
Akshay Mukadam,
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.