Je suis actuellement programmeur professionnel. Je veux élargir mes compétences, mais je veux aussi faire sauter la carrière pour devenir un chef de file au sein d'une équipe. Je sais qu'il doit y avoir beaucoup à apprendre (et ce ne sera pas instantané) mais je pense que je suis assez intelligent pour le faire et je suis prêt à relever le défi.
Je suis sûr que de nombreux membres ici sont probablement passés par eux-mêmes et sont désormais des leaders du développement. Malheureusement, même si je connais certains domaines personnels que j'aimerais améliorer (profondeur des connaissances, étendue des connaissances, compétences, etc.), je ne sais pas vraiment comment je pourrais commencer quelque chose comme ça.
En tant que programmeur maintenant, quelles mesures dois-je prendre pour atteindre cet objectif? Que dois-je prioriser?
Pour devenir un responsable technique, les éléments suivants sont essentiels
La capacité d'encadrer des membres du personnel à tous les niveaux d'ancienneté, d'une personne qui a quitté l'université depuis 3 mois à une personne qui programme depuis 30 ans
Une bonne connaissance de votre domaine de développement. Cela inclut: les langages, les frameworks, les utilitaires, les environnements de développement
Une solide compréhension des systèmes de gestion des problèmes, des compétences en gestion de projet et du contrôle de version
Soyez le tueur de bogues incontournable
Savoir comment effectuer des révisions de code en temps opportun, ce qu'il faut rechercher et comment minimiser le temps nécessaire à la conservation et les modifications à apporter
Restez à jour avec les développements dans votre domaine de développement. Par exemple, si vous n'avez pas appris de nouveaux frameworks ou technologies à partir de .NET 2, vous feriez les choses de manière assez inversée aujourd'hui.
Comment écrire des tests unitaires et des simulations, et faire en sorte que vos développeurs les écrivent aussi
Connaître les modèles de conception et quand les utiliser
Connaissance des odeurs de code et comment les atténuer
Intégration continue
La capacité de planifier des projets et des versions
Selon votre organisation et si vous avez des architectes parmi le personnel, vous devrez probablement connaître les éléments suivants:
La possibilité de composant vos projets et de les décomposer en parties fonctionnelles
Une compréhension approfondie de la sécurité, y compris la manière correcte de gérer les mots de passe, la séparation des systèmes, la sécurisation des données, etc.
Concepts d'entreprise tels que les bus de service, les files d'attente de messages, BizTalk
Modèles de conception d'entreprise
Architectures de service/RPC telles que SOAP et REST
Cadres ORM tels que Hibernate, Entity Framework, Doctrine
Déploiement continu
Le nuage
La capacité de recommander les technologies appropriées à utiliser pour un projet. Cela peut être difficile si votre équipe/boutique ne fait que .NET, ou PHP ou Java.
Concevez l'application de manière à ce que les améliorations futures soient facilement prises en compte
Si vous allez être responsable du développement, vous aurez également besoin de:
Et enfin, quelques autres points recommandés:
Apprenez en dehors de votre domaine de développement
Apprenez à dire NON lorsque les choses ne sont pas possibles ou sont hors de portée ou en conflit avec des contraintes telles que le budget ou le temps.
La gestion d'une équipe est un rôle difficile à jouer. Vous devez être la personne qui peut répondre à toutes les questions, vous devez connaître les bonnes technologies à utiliser (sauf si vous avez un architecte), vous devez avoir des compétences en gestion des personnes et être accessible par votre personnel (en assumant un poste de direction). En plus de cela, vous devez avoir des compétences d'estimation précises pour assurer la rentabilité du projet et vous devez être en mesure de vous salir le code de n'importe qui pour identifier les problèmes et les résoudre rapidement. Vous devez éviter de vouloir tout faire vous-même et favoriser un environnement d'équipe non toxique. Vous devez constamment rester au top de votre pile technologique et apprendre les derniers développements et techniques, ainsi que les tendances plus larges de l'industrie.
Vous devez également connaître au moins une plate-forme de base de données et bien la connaître. Savoir comment faire de la réplication, des procédures stockées, comment fonctionne l'optimiseur de requêtes, comment concevoir correctement un schéma et quels champs indexer.
Quel que soit le poste exact, tout poste de direction nécessite que vous ayez la capacité de communiquer efficacement. Si vous n'êtes pas un orateur confiant, envisagez de faire quelque chose comme Toast Masters (parler en public). Apprenez comment établir et maintenir un contact visuel. Soyez confiant. Habillez-vous convenablement pour le poste. Mener par l'exemple.
D'après mon expérience, le responsable a un peu moins à voir avec le sale travail de la programmation pratique et plus à voir avec la gestion. À cette fin, je recommanderais ce qui suit
Investissez plus de temps dans la conception et les activités architecturales et le développement. En tant que responsable, votre fonction va se concentrer sur la fourniture de conseils et d'orientations techniques à votre équipe. Vous serez davantage chargé de comprendre comment les pièces d'un ensemble s'emboîtent et moins comment fonctionne la plomberie. Ne vous méprenez pas, vous avez besoin de solides atouts techniques pour être un responsable efficace et compétent, mais une vue de plus haut niveau de ce qui se passe et de la façon dont cela va fonctionner sera plus cruciale ici. Vous devriez connaître davantage de modèles de conception de meilleures pratiques et de pratiques de codage efficaces
Apprenez à effectuer plusieurs tâches et à gérer le temps. Si vous êtes bon maintenant, c'est bien: développez plus. En tant que développeur, vous n'avez qu'à vous soucier de votre tâche/projet actuel. En tant que chef de file, vous aurez
Préparez-vous à déléguer efficacement. Cette OMI sera le bit le plus difficile à régler. En tant que développeur, vous avez l'habitude de vous salir les mains, de faire avancer les choses. Faire toute la plomberie et la recherche. Cela va devoir s'arrêter ou être réduit. Les concerts arrivent, vous les distribuez à l'équipe. Vous obtiendrez un morceau de l'action, pas seulement autant que vous en avez l'habitude. Et vous vous mordrez la langue pour résister à la tentation d'accumuler plus d'action pour vous-même.
Le long de la ligne plus professionnelle, pensez à une formation qui non seulement augmentera vos capacités, mais changera vos perspectives. Un cours intensif sur la gestion de projet logiciel ne fera pas de mal. Lean Six Sigma est également un très bon programme de formation (je peux témoigner de son efficacité) qui vous aidera à envisager la résolution de problèmes sous un angle plus logique. Sans oublier que depuis le poste de chef de file, vous êtes prêt pour des rôles encore plus élevés qui nécessiteront moins de compétences techniques pratiques et plus de capacité de gestion.
Aiguisez vos compétences en communication et en relations interpersonnelles. Vous serez le principal point d'entrée de votre équipe depuis le monde extérieur. Votre manager ou autre superviseur viendra vers vous en premier. Les autres unités/équipes de votre organisation interagiront avec vous sur tout ce qui concerne l'équipe en premier. Vous allez gérer la ressource la plus difficile et la plus imprévisible de toutes: les personnes. Vous devez développer une peau épaisse, apprendre à avaler de grandes quantités de fierté et assumer la responsabilité de l'échec de votre équipe.
Des choses que Sam n'a pas dites sont également importantes:
Comment spécifier des choses et donner du travail aux autres développeurs. Une partie de votre travail consiste à garder les autres développeurs 100% utilisés. La rédaction de spécifications sans ambiguïté est très importante.
Comment créer une application squelette/prototype que tout le monde devrait suivre
Comment favoriser un bon moral d'équipe
Comment assister, animer et diriger des réunions, comment documenter les actions à entreprendre
Comment estimer, rédiger un plan de projet et mettre à jour le plan de projet
Comment regarder vers l'avenir - si un problème survient dans 3 mois, vous devez essayer de le résoudre le plus tôt possible. Si un développeur part en vacances pendant 7 semaines, vous devez commencer à planifier dès maintenant.
Comment parler à la direction. Ils nous parlent une langue différente. Donnez-leur des solutions, pas des problèmes. Dites-leur ce que la technique signifie pour eux.
Et tandis que Sam l'a déjà dit, l'une des choses les plus importantes est apprendre à dire non. Vous ferez cela un lot. L'autre façon de voir les choses est de dire oui, mais "seulement si nous pouvons obtenir plus d'argent/de temps/de ressources" - ou "c'est pour la deuxième version" :)
Tout cela par le livre et les bonnes réponses. Permettez-moi de vous frapper par la réalité.
Croyez-le ou non, la plupart du temps vous passerez à expliquer aux gestionnaires
Pour cela, vous avez besoin des compétences nécessaires pour expliquer des choses techniques à des personnes non techniques, en termes non techniques. Et c'est très difficile. par exemple. envisager d'expliquer P = NP à 6 ans. Malheureusement, il n'y a pas de formation formelle pour cela, et vous devez l'apprendre par vous-même.
C'est aussi la position où la merde politique commence à vous frapper. Le manager vous dira de favoriser une personne car il/elle suit le processus, mais vous savez que la personne n'est d'aucune utilité dans votre équipe pour diverses raisons, du manque de compétences techniques à un mauvais membre de l'équipe. Vous devez donc non seulement travailler avec cette personne, mais aussi lui donner de bonnes notes. Le contraire est la personne qui a de bonnes compétences et un membre d'équipe très efficace mais qui ne sait pas comment plaire à la direction et obtient donc moins de notes.
Ensuite, il y a des réunions inutiles avec une personne occupant un poste élevé à distance, donnant des conférences sur les processus efficaces et sur la façon dont sa dernière variation de processus va augmenter la productivité. Vous devez savoir comment cacher votre visage ennuyeux et avoir l'air énergique.