Quali competenze dovrei coltivare per diventare uno sviluppo / vantaggio tecnico? [chiuso]

81

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

Sono sicuro che molti dei membri qui hanno probabilmente fatto tutto da soli, e ora sono lead di successo. Sfortunatamente, anche se conosco alcune aree personali che vorrei migliorare (approfondimento della conoscenza, ampiezza di conoscenze, competenze, ecc.), Non sono sicuro di come iniziare qualcosa di simile.

Come programmatore ora, quali passi dovrei fare per portarmi a questo obiettivo? Quale dovrebbe essere la priorità?

    
posta lunchmeat317 19.03.2013 - 01:31
fonte

4 risposte

87

Per diventare un lead tecnico, sono essenziali

  • 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, utilità, ambienti di sviluppo

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

  • Diventa il killer di successo

  • Sapere come condurre revisioni di codice tempestive, cosa cercare e come ridurre al minimo il tempo di attesa e le modifiche da apportare

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

  • Come scrivere unit test e mock, e per far scrivere anche ai tuoi sviluppatori

  • Conoscenza di quali sono gli schemi di progettazione e quando usarli

  • Conoscenza di quali sono gli odori del codice e come ridurli

  • Integrazione continua

  • La capacità di pianificare progetti e versioni

A seconda della tua organizzazione e se hai architetti sullo staff, probabilmente dovresti sapere quanto segue:

  • La possibilità di eseguire la componentizzazione dei progetti e di 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

  • Quadri ORM come Hibernate, Entity Framework, Doctrine

  • Implementazione continua

  • Il cloud

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

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

Se hai intenzione di essere un responsabile dello sviluppo allora avrai anche bisogno di:

  • Intervistare le competenze e trovare il personale giusto
  • Come gestire i problemi delle persone con i membri del tuo team
  • Gestione di direttive / obiettivi aziendali e conversione di informazioni pertinenti per i tuoi sviluppatori
  • La possibilità di stimare il tempo per i programmatori di varie abilità
  • La capacità di assegnare compiti agli sviluppatori corretti in base alle loro abilità e capacità

Infine, alcuni altri punti consigliati:

  • Scopri fuori dal tuo dominio di sviluppo

  • Impara a dire NO quando le cose non sono possibili o non rientrano nell'ambito o sono in conflitto con restrizioni come budget o tempo.

Gestire una squadra è un ruolo impegnativo. Devi essere la persona che può rispondere a qualsiasi domanda, devi conoscere le tecnologie giuste da usare (a meno che tu non abbia un architetto), devi avere abilità di gestione delle persone ed essere accessibile dal personale (assumendo una posizione di gestione). Oltre a questo, è necessario disporre di abilità di stima accurate per garantire la redditività del progetto e bisogna 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. È necessario continuare a rimanere in cima al proprio stack tecnologico e apprendere gli ultimi sviluppi e le tecniche, nonché le più ampie tendenze del settore.

Dovresti conoscere davvero almeno una piattaforma di database e conoscerla bene. Sapere come eseguire la replica, le stored procedure, il funzionamento dell'ottimizzatore della query e come progettare correttamente uno schema e quali campi indicizzare.

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

    
risposta data 19.03.2013 - 01:44
fonte
27

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

  1. Investi più tempo nella progettazione e negli inseguimenti e nello sviluppo dell'architettura . Come guida, la tua funzione si concentrerà sul fornire indicazioni tecniche e indicazioni alla tua squadra. Ti verrà assegnato un ulteriore compito per capire come si incastrano pezzi di un tutt'uno e meno di come funziona l'impianto idraulico. Non fraintendetemi, è necessario disporre di solidi abbinamenti tecnici per essere un vantaggio efficace e competente, ma una visione più elevata di ciò che sta succedendo e di come funzionerà sarà più cruciale qui. Dovresti conoscere più modelli di progettazione delle migliori pratiche e pratiche di codifica efficaci

  2. Impara a gestire più attività e a gestire il tempo . Se sei bravo ora, è bello: sviluppare di più. Come sviluppatore, hai solo il tuo attuale compito / progetto di cui preoccuparti. Come lead, avrai

    • Per partecipare a più riunioni di quelle a cui tieni. Questa è forse la parte più avvincente della leadership del team
    • Lavora sull'allocazione delle risorse. Se sei fortunato, le risorse saranno scarse e i progetti abbondanti.
    • Assumi la guida dell'architettura e del design del progetto
    • A seconda delle dimensioni e della struttura dell'organizzazione, fornire una miriade di report, nei tempi e nei tempi previsti. Pensa al ruolo guida come project manager a basso costo.
  3. Preparati a delegare in modo efficace . Questo IMO sarà il bit più difficile da regolare. Come sviluppatore, sei abituato a sporcarti le mani, a fare le cose. Fare tutto l'impianto idraulico e la ricerca. Dovrà fermarsi o essere ridotto. I concerti arrivano, lo dai alla squadra. Riceverai un pezzo dell'azione, non solo quanto sei abituato. E ti morderai la lingua per resistere alla tentazione di mettere in campo più azione per te stesso.

  4. Lungo la linea più professionale, considera un allenamento che non solo aumenterà le tue capacità, ma cambierà le tue prospettive . Un corso accelerato per dire che la gestione dei progetti software non farà male. Lean Six Sigma è anche un ottimo programma di allenamento (posso testimoniare la sua efficacia) che ti aiuterà a risolvere i problemi da un punto di vista più logico. Per non parlare del fatto che dalla posizione Lead, sei pronto per ruoli ancora più alti che richiedono meno abilità tecniche e una maggiore capacità di gestione.

  5. Migliora le tue abilità 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à / team nella tua organizzazione si interfacciano con te su tutto ciò che riguarda la squadra prima. Gestirai la risorsa più difficile e imprevedibile di tutti: le persone. Devi crescere una pelle spessa, imparare a inghiottire grandi quantità di orgoglio e assumerti la responsabilità per il fallimento della tua squadra.

risposta data 19.03.2013 - 02:26
fonte
14

Le cose che Sam non ha detto sono altrettanto importanti:

  • Come aggiungere elementi e dare lavoro ad altri sviluppatori. Parte del tuo lavoro è di mantenere gli altri sviluppatori al 100% utilizzati. La scrittura di specifiche non ambigue è molto importante.

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

  • Come promuovere un buon morale di 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 nel futuro - se un problema si verificherà tra 3 mesi, vorresti provare a eliminarlo il prima possibile. Se uno sviluppatore va in vacanza per 7 settimane, devi iniziare a programmarlo subito.

  • Come parlare alla direzione. Parlano una lingua diversa per noi. Offri loro soluzioni, non problemi. Di 'loro che cosa significano le cose tecniche per loro.

E mentre Sam lo ha già detto, una delle cose più importanti è imparare come dire di no . Lo farai un lotto . L'altro modo di guardarlo è di dire si , ma "solo se possiamo ottenere più soldi / tempo / risorse" - o "questo è per la seconda versione":)

    
risposta data 19.03.2013 - 01:54
fonte
11

Tutti questi sono dal libro e buone risposte. Permettimi di colpirti per realtà.
Che ci crediate o no, il più delle volte passerete a spiegare i manager

  • in che modo un problema è difficile da risolvere o
  • perché non può essere risolto in una data linea temporale o
  • anche se è meno importante da risolvere.

Per questo è necessaria la capacità di spiegare cose tecniche a persone non tecniche, in termini non tecnici. Ed è molto difficile. per esempio. considerare di spiegare P = NP a 6 anni. Sfortunatamente non c'è un allenamento formale per questo, e devi imparare da solo.

Anche questa è la posizione in cui i politici cominciano 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 a causa della mancanza di capacità tecniche per non un buon membro della squadra. Quindi devi ancora lavorare non solo con questa persona, ma anche dare dei 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 si prega di gestione e quindi ottiene meno voti.
Poi ci sono riunioni inutili in alta posizione da una postazione remota, una lezione sui processi efficaci e su come la sua ultima variazione di processo aumenterà la produttività. Devi sapere come nascondere la tua faccia noiosa e avere un aspetto energico.

    
risposta data 19.03.2013 - 05:31
fonte

Leggi altre domande sui tag