Ce qui est bon et ce qui est mauvais. La carrière de développeur à travers les yeux de son leader

Quelle est la différence entre le regard sur la carrière du développeur et de son leader


La vie est pleine de contradictions. Même la lumière ne peut pas déterminer qui elle est - une particule ou une onde.
Dans le monde du développement logiciel, les contradictions entre les acteurs sont une voiture et un petit chariot. Regardons un couple - un développeur et un responsable du développement (cela peut être un chef de projet, un responsable technique, un chef d'équipe). En fin de compte, ces deux-là regardent souvent les choses différemment et ont généralement tendance dans des directions différentes.



Ce que le développeur veut


Tout le monde veut une chose différente. Mais comme nous ne pouvons pas nous passer de généralisations, nous prenons un développeur de niveau intermédiaire sphérique dans le vide. Il est modérément paresseux, modérément curieux et il aime généralement son métier. Il aurait seulement un calendrier plus doux, de meilleurs processus, des tâches plus intéressantes.

Comment veut-il se développer? Mais comme ça:

  • Apprenez de nouvelles technologies
  • Résolvez des problèmes plus intéressants.
  • Participez à de nouveaux projets
  • Moins d'activités hors développement
  • Prenez vous-même vos décisions

En même temps, son manager veut:


  • Pour que le développeur connaisse bien les technologies utilisées
  • Pour que le développeur fasse bien face aux tâches: avec la bonne qualité et à temps
  • Que le développeur était responsable et a toujours accompli ce qu'il avait entrepris
  • Pour que le développeur donne des évaluations adéquates aux tâches
  • Pour que le développeur comprenne les besoins de l'entreprise et du produit dans son ensemble
  • Pour que le développeur signale les problèmes en temps opportun

Vous voulez savoir comment faire des compromis? Bienvenue au chat.

Alors ce que nous avons. Il y a une contradiction complète dans les intérêts.

Le développeur veut apprendre de nouvelles choses et le gestionnaire veut qu'il soit capable d'utiliser correctement des outils familiers.

Le développeur veut résoudre des problèmes intéressants, et le gestionnaire a un sac de tâches ordinaires que quelqu'un devrait faire.

Le développeur souhaite participer à de nouveaux projets et le gestionnaire a besoin de quelqu'un pour soutenir les projets existants.

Le développeur ne veut rien faire d'autre que le développement, et le gestionnaire a besoin que le code soit documenté, que le processus de développement soit transparent et gérable, pour respecter les plans, publier les versions, etc. Pour ce faire, il demande des évaluations, procède à des stand-up, des rétrospectives et l'oblige à planifier ses activités.

Le développeur veut prendre des décisions par lui-même (il sait comment le faire correctement), et le gestionnaire exige qu'il soit informé des problèmes identifiés afin qu'il puisse contrôler la décision.

Il n'est pas surprenant que de nombreux responsables de développement aient une mauvaise réputation auprès de leurs développeurs - ils ne vous permettent pas de faire ce que vous voulez, mais plutôt, ils vous forcent à faire ce qui vous rend malade.

Les causes


La raison à mon avis est très simple. Le développeur et son chef ont des objectifs différents.

L'objectif du développeur est d'être plus sollicité sur le marché du travail.

L'objectif du leader est de livrer le projet à temps.

Et pourtant, malgré ces différences radicales, il est possible de parvenir à un compromis qui convienne aux deux parties.

Essayons de comprendre plus en détail.

Développeur


Apprenez de nouvelles technologies


C'est vraiment intéressant et inspirant. Au stade initial de devenir un spécialiste, il est utile d'avoir une vision large de l'industrie et de comprendre ce qu'il y a généralement des opportunités de développement. Cependant, au fil du temps, la quantité devrait se transformer en qualité.

Je ne vous connais pas, mais je me méfie souvent du curriculum vitae d'un développeur (avec 2 à 4 ans d'expérience), qui répertorie des dizaines de langues, de frameworks et de bibliothèques. Cela peut être le signe qu'une personne faisait un peu de tout, mais qu'elle ne sait rien en profondeur (bien qu'il y ait des exceptions). Il est préférable de rencontrer une personne qui ne sait pas grand-chose mais qui sait avec certitude. Et cela nécessite une expérience pratique significative dans l'application de la technologie. Ensuite, il y aura une compréhension de ses subtilités et limites d'application, ce qui est extrêmement important.

Ainsi, il est important et nécessaire d'étudier les nouvelles technologies, mais il est hautement souhaitable que la pratique réelle soit derrière cela. Même si vous développez un projet pour animaux de compagnie, assurez-vous que la technologie n'est pas utilisée pour le spectacle, mais résout vraiment le problème commercial.

Résolvez des problèmes plus intéressants.


Je pense que tout le monde connaît le concept de «routine». Personne ne veut faire la même chose tout le temps. Cependant, il y a un détail très important. Il est injuste de vouloir de nouvelles tâches intéressantes si vous gérez à peine de vieilles tâches sans intérêt. Toute compétence a des étapes et vous ne pouvez pas les sauter - tôt ou tard, cela entraînera une chute douloureuse.

En général, tout est comme dans un jeu vidéo. Pour passer à un nouveau niveau, vous devez bien passer les précédents. Avant d'exiger des tâches intéressantes du gestionnaire, apprenez à résoudre les problèmes actuels rapidement et efficacement, il deviendra alors évident que vous méritez plus.

Participez à de nouveaux projets


Évidemment. Un bon nombre de personnes sont engagées avec enthousiasme à soutenir le projet de façon régulière. Corriger leurs propres bugs et ceux de leurs camarades pendant qu'ils développent quelque chose de nouveau est une honte.

Mais après tout, c'est sur le support que l'on acquiert souvent une compréhension des besoins de l'entreprise, indispensable à tout projet. Le développeur apprend à regarder son logiciel à travers les yeux de l'utilisateur - et c'est l'une des compétences les plus précieuses pour le programmeur. De plus, la capacité de comprendre le code existant apparaît, refactorisez-le soigneusement, sans casser tout le système. Ces compétences seront utiles non seulement pour le soutien, mais aussi lors du développement d'un nouveau projet - ne répétez pas les erreurs passées, maintenez la base de code dans un état décent et faites face à la dette technique.

Ne refusez pas de soutenir les projets que vous avez développés - c'est une expérience inestimable qui peut accélérer considérablement votre carrière.

Moins d'activités hors développement


De nombreux développeurs considèrent la rédaction de documentation, la planification de réunions, les rétrospectives, la communication avec le client comme une perte de temps. L'essentiel est d'écrire du code? Que tout était net, beau, conforme aux directives.

Non. L'essentiel est que les logiciels fassent ce qui est nécessaire: résoudre les problèmes commerciaux. De plus, il est hautement souhaitable que le développement respecte les délais et les budgets. Sinon, il est tout à fait possible que notre code idéal ne fonctionne jamais.

Vous devez être clairement conscient que pour tout développement complexe, vous avez besoin d'un plan, d'une synchronisation régulière des participants au projet (y compris le client), d'une documentation de qualité et d'autres choses qui ne sont pas de l'écriture de code.

Si vous voulez être un participant important et utile au projet, vous devez avoir une compréhension des processus qui se produisent sur le projet et essayer de les suivre. C'est une autre expérience utile que tout le monde devrait avoir.

Superviseur


Connaître les technologies utilisées pour
faire face aux tâches définies: avec la bonne qualité et dans les délais


Un leader a besoin de personnes sur lesquelles compter. Si la tâche est définie, elle doit être résolue. Peu importe si le développeur était intéressé à le faire ou si c'était une routine douloureuse pour lui. Cela se produit si vous «résolvez les problèmes dès qu'ils deviennent disponibles» et «vivez dans le présent». Mais pour résoudre la contradiction, il faut agir différemment. En enseignant constamment aux développeurs de nouvelles choses et en leur transmettant l'expérience de la résolution de problèmes existants, nous augmentons leur niveau. En acquérant des connaissances, une expérience et une largeur d'esprit supplémentaires, ils résoudront les problèmes existants beaucoup plus rapidement et offriront peut-être une amélioration du processus. De tels changements, initiés «par le bas», sont précieux non seulement pour leur résultat direct, mais aussi pour les développeurs une grande motivation pour rechercher et proposer de nouveaux.

En allouant du temps pour que les gens apprennent les nouvelles technologies de manière indépendante ou les forment, vous pouvez obtenir une équipe hautement productive et motivée.

Soyez responsable et complétez toujours ce qu'il a fallu


Je pense que tout le monde conviendra que la programmation professionnelle vise avant tout à obtenir des résultats. Pour réussir, tous les participants au projet doivent terminer leurs tâches. Par conséquent, peu importe à quel point un développeur est techniquement cool, s'il ne peut pas terminer une seule tâche et lance tout à mi-chemin. La vérité universelle posée par les grands programmeurs est que le problème doit être résolu de la manière la plus simple possible. C'est peut-être généralement la qualité la plus importante du développeur - pour pouvoir résoudre des problèmes sans difficultés inutiles. Compliquer est facile, simplifier est difficile.

Je n'ai pas peur de dire que ce sont ces personnes qui sont les plus appréciées sur les vrais projets. Tant le chef de file que les partenaires du projet savent que vous pouvez compter sur une personne qu'il n'échouera pas.

L'éducation des personnes ayant précisément de telles attitudes professionnelles est l'une des tâches importantes d'un leader. Le mécanisme le plus important en la matière est la promotion des résultats. En conséquence, vous obtenez non seulement une équipe de développement, mais une équipe de personnes partageant les mêmes idées, chacune souhaitant atteindre un objectif commun.

Donner des évaluations adéquates aux tâches


De nombreux développeurs ont probablement pensé - pourquoi me demandent-ils constamment des estimations, comment je vais le faire, je le ferai, de toute façon, avant de terminer, rien n'apparaîtra. Les évaluations semblent être un mécanisme de contrôle humiliant. Cependant, regardez cela à travers les yeux d'un leader.

Comme je l'ai déjà écrit, pour que le projet réussisse, le gestionnaire doit avoir un plan. Il y a des exceptions heureuses, mais dans le cas général, sans plan, le développement se transforme en chaos. Même si le plan n'est pas mis en œuvre sur une base de calendrier, il en profite toujours - le gestionnaire voit où est le problème et peut le réorganiser pour résoudre le problème. Pour faire un plan, le leader a besoin d'évaluations. Même si le développeur a sous-estimé ou surestimé la tâche, pour le gestionnaire, ce n'est qu'une excuse pour introduire un facteur de correction. Ainsi, en ayant des estimations des développeurs et des facteurs de correction historiquement confirmés, le leader peut construire un plan proche de la réalité.

Les développeurs sous-estiment souvent le besoin de planification car ils se concentrent sur le développement. Mais comme nous le savons, un projet réussi n'est pas seulement un développement. Cela nécessite des tests, de la documentation, la délivrance au client, l'organisation de l'UAT, etc. L'équipe doit agir de concert, planifier et suivre le plan pour assurer une telle cohérence.

Étant donné que la réussite du projet est également la réussite de chaque participant, afin d'atteindre son propre succès, le développeur doit être en mesure d'évaluer correctement les tâches.

C'est le leader qui doit donner aux développeurs une compréhension de tous les processus qui se produisent en dehors du développement. Expliquez le sens de chaque action et décision, l'importance de la planification, de la communication. La sensibilisation est la clé du succès.

Comprendre les besoins de l'entreprise et du produit dans son ensemble


Très souvent, les développeurs se concentrent sur l'écriture de code, ignorant le problème commercial qu'ils résolvent. Malheureusement, cela est caractéristique non seulement pour les débutants, mais aussi pour les spécialistes bien établis et titrés.

Comme je l'ai déjà écrit, je considère la solution aux problèmes de l'entreprise comme la tâche principale de la programmation. Par conséquent, de manière naturelle, seul celui qui peut résoudre efficacement ces problèmes peut être considéré comme un bon programmeur. Pour ce faire, il est essentiel de bien comprendre ce qui se passe dans l'entreprise que nous automatisons.

Ainsi, le désir du gestionnaire que le développeur comprenne les besoins de l'entreprise et considère chaque tâche principalement de ce point de vue (quelle tâche commerciale nous résolvons et pourquoi) est plus qu'un désir naturel. Ce n'est que de cette manière qu'un développeur peut atteindre une véritable maîtrise. Ainsi, les véritables intérêts du leader et du développeur coïncident ici.

Comme dans le paragraphe précédent, le devoir du leader est d'expliquer clairement et clairement au développeur ce dont l'entreprise a besoin et pourquoi. De plus, il est nécessaire de transmettre une vérité simple - celui qui peut se plonger dans le sujet et résoudre un problème spécifique est apprécié, et non pas celui qui écrit simplement un beau code.

Signaler les problèmes en temps opportun


Pour assurer la réussite du projet, il est essentiel que le gestionnaire reçoive en temps opportun des informations sur les problèmes liés à l'exécution des tâches. Le développeur, au contraire, préfère souvent traiter complètement le problème et le signaler uniquement lorsque tous les délais raisonnables sont passés. Il faut dire que le désir de comprendre indépendamment le problème est toujours louable. Cependant, pour le bénéfice du projet, il est nécessaire d'informer le chef des problèmes qui peuvent augmenter le temps de résolution du problème, afin qu'il puisse en tenir compte dans le plan.

La compétence la plus importante du développeur est la capacité de communiquer de manière opportune et ouverte avec les autres participants au projet. Signaler un problème en temps opportun est un élément important de la communication.
Dans ce cas, le leader ne doit pas se précipiter immédiatement pour résoudre le problème. Il est plus sage de donner au développeur le temps de le découvrir par lui-même, de prendre les décisions nécessaires et de présenter le résultat. Cela lui donnera confiance en ses capacités, l'habitude de se fier à lui-même et en même temps de se libérer de la peur de signaler les problèmes en temps opportun.

Résumer. Comment conjuguer les intérêts du développeur et de son leader?


Au développeur


  • Le succès d'un projet est le succès de chacun de ses participants. Chaque projet réussi est un pas en avant dans votre carrière. Lors de chaque entretien, vous gagnerez beaucoup plus de points si vous avez terminé avec succès des projets dans votre dos.
  • La résolution des problèmes commerciaux est l'objectif principal du développement. Si le projet échoue, peu importe la qualité de l'architecture et la beauté du code.
  • – : , , , – .
  • , . , . . , .
  • – , , , , , , - .


  • , . , . .
  • , .
  • , .
  • .
  • .
  • .

All Articles