Libérer le potentiel du génie logiciel pour de meilleurs produits
Devenir une équipe autonome signifie résoudre des problèmes plutôt que fournir des fonctionnalités. Autonomiser les ingénieurs logiciels et les impliquer tôt dans le travail de découverte peut se traduire par de meilleurs produits. Si nous mesurons les résultats plutôt que les résultats, nous pouvons également tenir les équipes responsables. Martin Mazur a parlé de libérer le potentiel d’ingénierie au NDC Oslo 2023.
Soutenir les ingénieurs logiciels pour les responsabiliser signifie leur faire confiance et s’écarter de leur chemin, a déclaré Mazur. Nous avons, pendant des années, brisé la capacité d’innovation des ingénieurs logiciels en les retirant de la discussion sur ce qu’il faut construire, a-t-il mentionné. L’innovation se produit lorsque de vrais problèmes de clients rencontrent une nouvelle technologie – personne ne sait ce que la technologie peut faire, à l’exception des ingénieurs. En impliquant les ingénieurs dès le début du travail de découverte, nous pouvons créer des produits qui dépassent les attentes de nos clients, a déclaré Mazur.
Afin de faire face à un travail responsabilisé, les ingénieurs doivent être capables de naviguer dans l’incertitude, de planifier leur travail, d’avoir des conversations significatives et de comprendre comment la valeur est créée, a déclaré Mazur. Ce sont des compétences qu’ils peuvent acquérir, mais dans le contexte dans lequel la plupart des ingénieurs travaillent, ils n’ont jamais eu de raison de les acquérir, a-t-il mentionné.
Mazur a mentionné que si nous considérons la compétence à la fois en largeur et en profondeur, à un moment donné de votre carrière, vous n’obtenez vraiment pas un effet énorme en approfondissant. Au lieu de cela, élargir les compétences et examiner des éléments tels que les modèles commerciaux, les principes de conception et les compétences interpersonnelles peut élever les ingénieurs à de nouveaux niveaux, a-t-il suggéré :
Il est facile de commencer, par exemple, en assistant à une conférence inhabituelle lors d’une conférence ou en choisissant un livre que vous ne liriez pas normalement.
Garder les équipes responsables des résultats peut être délicat si vous n’avez pas la bonne culture et la bonne organisation, a déclaré Mazur. Les gens doivent se sentir responsabilisés et en contrôle de leur travail pour accepter la responsabilité. Il a mentionné que la meilleure chose que nous puissions faire est de mesurer le succès de notre équipe sur le résultat, c’est-à-dire l’impact qu’ils ont créé pour l’utilisateur, le produit ou l’entreprise, et non le résultat qu’ils ont généré :
Si nous mesurons les résultats, nous pouvons également tenir les équipes responsables de ce résultat. Si nous mesurons la production, nous savons seulement qu’ils ont travaillé au rythme souhaité, et non quelle valeur ce travail a réellement généré.
Mazur a suggéré que les développeurs de logiciels devraient investir dans d’autres types de compétences que des compétences purement techniques. Ces investissements sont plus rentables pour ces individus, leurs équipes, leurs produits et, en fin de compte, pour le monde, a-t-il conclu.
InfoQ a interviewé Martin Mazur sur la façon de libérer le potentiel de l’ingénierie.
InfoQ : Qu’est-ce qui rend la résolution des problèmes des utilisateurs plus importante que la fourniture de fonctionnalités ?
Martin Mazur: Tout dépend de la valeur que nous créons avec nos logiciels. Une fonctionnalité n’a de valeur que pour l’utilisateur, son organisation et, en fin de compte, le monde si elle résout quelque chose – c’est-à-dire que les fonctionnalités que nous construisons et qui ne sont jamais utilisées sont un énorme gaspillage de potentiel humain.
InfoQ : De quoi les équipes ont-elles besoin pour être en mesure de résoudre les problèmes ?
Mazur: Ce n’est pas une seule chose, il y a plusieurs facteurs qui doivent être présents pour que les équipes puissent résoudre les problèmes. En fin de compte, la plupart des équipes et des organisations ont besoin d’un changement de culture. Nous devons atteindre un point où les gens se soucient profondément de l’impact de leur logiciel sur l’utilisateur final. Cela nécessite des organisations dirigées avec le contexte et non le contrôle ; les équipes doivent se voir déléguer les problèmes, leur faire confiance pour les résoudre et être tenues responsables des résultats.
InfoQ : Comment les équipes peuvent-elles améliorer leur façon de prendre des décisions ?
Mazur: La chose la plus importante pour devenir meilleur dans la prise de décisions est de distinguer les bonnes décisions des bons résultats, et vice versa. Une bonne décision est quelque chose qui, compte tenu de toutes les informations disponibles, est la bonne ligne de conduite. Cela signifie que si vous deviez refaire la décision, vous auriez fait le même appel encore et encore. De bonnes décisions peuvent encore conduire à de mauvais résultats.
Une fois que nous comprenons cela, nous savons que nous devons agir sur la base des informations dont nous disposons, et non sur celles que nous souhaiterions avoir. Pour résumer, une décision est comme un pari – et tout comme un pari, elle a des cotes ; la bonne décision est celle qui a la meilleure cote.
Souvent, les ingénieurs sont bloqués sur toutes les informations qu’ils n’ont pas et se retrouvent dans une paralysie d’analyse. Ce qui se passe alors, c’est qu’il n’y a généralement pas de temps à attendre, et ne pas prendre de décision est aussi une décision. Nous nous retrouvons avec l’option par défaut qui peut être bonne ou mauvaise – l’équivalent d’un tirage au sort.
InfoQ : Quel est votre conseil aux équipes ? Et aux développeurs de logiciels individuels ?
Mazur: Le meilleur conseil pour les deux est de toujours poser deux questions sur votre travail.
« Pourquoi est-ce? » et « Pour qui ? » et ne pas faire un travail de surface pour répondre à ces questions. Creusez vraiment en profondeur et déterminez quel problème le produit résout et pour qui – cela créera une nouvelle perspective pour votre travail.
!function(f,b,e,v,n,t,s)
if(f.fbq)return;n=f.fbq=function()n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments);
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)(window,document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘842388869148196’);
fbq(‘track’, ‘PageView’);