C'est généralement accepté que fixer des objectifs mesurables pour les développeurs de logiciels ne fonctionne pas , car trop se concentrer sur les objectifs peut conduire à un comportement contraire à les objectifs organisationnels (soi-disant " dysfonction de mesure ").
Cependant, dans mon entreprise, nous sommes tenus de fixer des objectifs pour tout le personnel et nous sommes encouragés par les ressources humaines à les faire INTELLIGENT . Dans le passé, mes collègues managers de premier niveau (chefs d'équipe) et moi avons essayé un certain nombre d'approches:
Rien de tout cela n'est idéal. Si vous avez été dans une situation similaire de devoir créer des objectifs significatifs et mesurables pour les développeurs de logiciels malgré les preuves de leur efficacité, quelle approche vous a le mieux fonctionné?
Questions connexes que j'ai trouvées qui ne répondent pas tout à fait au même point:
Mise à jour (18 novembre 2009): Il y a 10 votes positifs pour ma question, et les réponses les mieux notées n'ont que 4 votes positifs (dont un de moi) . Je pense que cela nous dit quelque chose: peut-être que Joel et les autres ont raison, et que la sagesse combinée de stackoverflow ne peut pas proposer n'importe quoi des objectifs convaincants et mesurables pour les développeurs qui ne pourraient pas être joués sans négativement affectant la vraie valeur (non mesurable) de leur travail. Merci d'avoir essayé!
quelle approche vous a le mieux fonctionné?
Un seul objectif: passer une inspection de code/examen par les pairs, avec moi en tant que réviseur, sans que je trouve de bugs ou de critiques, cela me demande de refaire quelque chose.
Remarques:
Personnellement, j'essaie de fixer deux sortes d'objectifs:
Des objectifs orientés métier (c'est pourquoi nous sommes finalement payés). Par exemple, "terminer le projet X d'ici le 1er juin 2009"). Ces objectifs sont souvent partagés entre plusieurs membres de l'équipe (et ils en sont conscients). L'équipe peut dépasser l'objectif en amenant le projet en avance ou en dépassant les fonctionnalités requises. Les individus peuvent dépasser l'objectif en produisant plus de fonctionnalités, en ayant moins de bugs contre eux, ou en encadrant et en soutenant d'autres membres de l'équipe.
Objectifs de croissance personnelle, par exemple, terminer un projet impliquant une technologie que le développeur souhaite ajouter à ses compétences, mieux comprendre le domaine de l'utilisateur, acquérir une expérience de leadership, etc.
Je pense qu'il est important que:
Enfin, je resterais loin des métriques logicielles comme objectifs - elles sont trop faciles à jouer et ne vous donneront probablement pas ce dont vous avez besoin. Je n'utiliserais une métrique que si je veux entraîner quelqu'un dans ou hors d'un comportement particulier.
Tout cela se résume au fait que la "gestion de premier niveau", et la plupart des gestionnaires ne connaissent pas leurs employés. Au lieu de faire partie de la planification et du développement au jour le jour, des choses comme SMART apparaît. Si les gestionnaires devaient passer plus de temps avec les gars qui font le travail réel, rien de tout cela ne serait nécessaire.
Personnellement, je préfère travailler dans un environnement agile où il est évident qui des développeurs effectue en termes de productivité et de sensibilisation à la qualité. Une véritable approche agile nécessite que non seulement les développeurs, mais aussi les concepteurs, les testeurs, les clients et les chefs de produit soient inclus dans le processus. Cela conduit naturellement à de meilleures perspectives du point de vue des gestionnaires.
Objectifs mesurables que j'ai vus jusqu'à présent:
Que diriez-vous de demander directement à vos développeurs s'ils ont des idées de développement personnel qui pourraient ensuite être utilisées pour des objectifs?
"Assurez-vous qu'au moins n% de votre code est testé par un test unitaire approprié" Utilisez un outil de couverture pour le prouver et demandez à quelqu'un d'autre de vérifier la qualité du test.
Devoir fixer des objectifs pour les développeurs, même s'ils ne fonctionnent pas
Si vos développeurs ne fonctionnent pas, certains objectifs sont peut-être juste de quoi ont-ils besoin pour les inciter? ;-)
Je pense qu'avoir des objectifs très spécifiques à l'avant, c'est-à-dire SMART (peut-être que nous travaillons au même endroit en fait), semble être une bonne idée dans la pratique, mais ce n'est pas très pratique pour la plupart des équipes .
Le problème est vraiment le changement progressif de nos objectifs. L'entreprise change et en tant que développeurs, nous devons réagir et réagir correctement et dans un délai raisonnable.
Pensez à définir des objectifs qui correspondent à l'objectif de votre équipe ou de votre groupe dans l'organisation. Votre équipe ne serait pas financée si elle ne servait pas un objectif - un objectif macro. Ayez des objectifs collectifs qui existent dans l'ensemble de votre équipe et qui correspondent à l'entreprise. Donner aux gens la responsabilité et tenir les gens responsables. Célébrez leurs succès et leurs échecs (si nous n'échouons pas parfois, nous n'essayons probablement pas et c'est ce que vous attendez des gens). HTH
Nous avons un certain nombre de mesures qui sont collectées au fur et à mesure que les programmeurs travaillent, telles que:
Ce sont tous des éléments tangibles que je trouve utiles dans les présentations pour la gestion et l'assurance qualité des logiciels. Mais je ne les ai jamais trouvés terriblement utiles dans les évaluations réelles des performances des personnes - ce qui est le point souligné par plusieurs des liens que vous avez énumérés. J'ai trouvé que les points de Joel ici sont valides - les mesures ne favorisent jamais une bonne ambiance d'équipe.
Malheureusement, nous vivons tous dans un monde où les mesures sont exigées par d'autres (gestion, assurance qualité, sous-traitants externes, etc.). J'ai trouvé qu'un acte d'équilibrage est nécessaire - fournir ces mesures, mais aussi fournir des preuves d'intangibles - intangible étant ce que chaque programmeur a accompli qui n'est pas nécessairement suivi. Par exemple, j'avais un programmeur qui a passé beaucoup de temps à enquêter sur le code hérité que personne d'autre ne voulait toucher. Même si ses mesures étaient faibles pour cette période de temps, cet effort était inestimable.
Le seul moyen que j'ai trouvé pour inclure de telles choses a été de pousser pour la création d'une catégorie immatérielle supplémentaire et de lui donner un poids égal avec les autres métriques. Habituellement, cela suffit pour balancer la balance pour un programmeur particulier.
L'un des problèmes semblerait être qu'en tant que division/département, les organisations informatiques n'ont pas d'objectifs stratégiques mesurables. S'ils le faisaient, il serait plus facile de fixer des objectifs pour les individus.
par exemple. S'il y avait une initiative ministérielle pour réduire le nombre de tickets problématiques soulevés, alors, vous pourriez définir des objectifs individuels en fonction du nombre de tickets liés au logiciel dont ils s'occupent.
Étant donné que le développement de logiciels est largement une collaboration, il serait plus logique de fixer des objectifs au niveau de l'équipe, puis de classer les individus en fonction de leur contribution à l'équipe.
Je pense que déterminer comment aligner le développement personnel avec les projets en cours est un point clé. Demander aux développeurs de s'analyser eux-mêmes pour trouver des faiblesses et de donner des commentaires sur les autres peut être un moyen de trouver ce qui peut être amélioré, puis de trouver un moyen de le mesurer. Par exemple, je peux constater que je documente rarement les éléments achevés et ainsi de suite mes objectifs pour l'année, je peux affirmer que je veux améliorer cela et que la quantité de documentation que je produis peut être une mesure de cela. Cela peut fonctionner ou se retourner contre moi en fonction de la façon dont je le suis vraiment. D'une part, il peut y avoir des préoccupations valables pour ce qui est de savoir comment améliorer mon travail et faire ce qui peut être considéré comme la bonne façon alors qu'une vision passive agressive ou enfantine serait de produire une montagne de documentation si elle n'est pas si bonne en termes de qualité car cela peut être amélioré l'année prochaine car cela peut être un autre point à considérer: Quelle est la motivation supposée pour s'améliorer autant que possible tout au long d'une année par rapport à l'espacement des choses?
La définition d'un développeur efficace en est un autre élément. Est-ce la personne qui corrige le mieux les bugs? Le nouveau travail fonctionne-t-il le plus rapidement? Est-ce que le nouveau travail se termine avec des tests et de la documentation même s'il n'est pas fait rapidement? Comment appelez-vous efficace puisque la réponse standard "ça dépend" doit être clarifiée ici.
Un des objectifs que j'aime est:
Sollicitez N évaluations positives de votre implication dans un projet auprès du client du projet.
Cela aide car il est toujours bon d'avoir des commentaires positifs écrits des clients (internes ou externes). Ce n'est pas difficile à obtenir, c'est pertinent et c'est une coche facile, mais pas dénuée de sens sur la liste.