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:
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.