Est-il approprié dans la description de travail d'un développeur d'avoir «sans erreur» comme sortie clé? [fermé]

10

Dans le cadre d'un examen de toutes les descriptions de poste, mon entreprise a décidé d'inclure les éléments suivants comme résultat clé:

développement du site Web terminé à temps, dans les spécifications et sans erreur

Étant donné que les spécifications changent régulièrement, il n'y a pas de processus formel de contrôle des changements et les environnements sont, disons, un peu imprévisibles, dans quelle mesure ce KPI est-il réaliste et raisonnable?

Phil.Wheeler
la source
20
Complètement irréaliste. Cela a probablement été écrit par quelqu'un qui a travaillé avec un trop grand nombre de mauvais développeurs. Mais cela pourrait aussi être la faute d'une mauvaise gestion. Pas assez d'informations fournies.
Mark Canlas
11
Le développeur qui arrive avec "écrit un code sans erreur" sur son CV sera assez ridicule pour correspondre à la position.
P.Brian.Mackey
12
Le seul code qui peut prouver qu'il n'a pas de bogues et atteindre son objectif est une base de code vide qui prétend ne rien faire.
unholysampler
8
pfft ... ressemble à une clause bouc émissaire pour pouvoir facilement les gens. "Désolé, vous n'avez pas respecté votre contrat de travail ... nous allons vous licencier sans préavis ni cause supplémentaire. Tootles."
Steven Evers
5
Bien sûr, c'est sans erreur. Le compilateur dit: 0 erreurs, 0 avertissements. Cela répond complètement aux exigences du poste :-)
Ferruccio

Réponses:

21

"Sans erreur" est beaucoup trop subjectif . La «demande de fonctionnalité non satisfaite» d'un homme est «l'erreur» d'un autre homme. Quelque chose comme «Devrait répondre sensiblement aux spécifications de conception» serait plus approprié. Je n'ai jamais vraiment vu ce que vous décrivez dans une description de poste. Je l'ai vu pour le travail à contrat , mais pas pour les employés.

GrandmasterB
la source
9

Je prendrai une position opposée à la plupart des réponses et dirai que c'est absolument raisonnable et réaliste.

Est-ce que tout le développement sera terminé à temps? Bien sûr que non, pas toujours.

Est-ce que tout le développement sera terminé conformément aux spécifications? Vous souhaitez l'espérer, mais parfois cela ne sera tout simplement pas possible et vous devrez signaler une déviation par rapport à une spécification impossible ou contradictoire.

Et tout développement sera-t-il sans erreur? Jamais .

Mais c'est à cela que sert un KPI. C'est quelque chose qui peut être mesuré et par lequel vous pouvez suivre les performances et les progrès.

Si les spécifications changent régulièrement, il n'y a pas de processus formel de contrôle des modifications et les environnements sont imprévisibles, il sera difficile de garder ce chiffre proche de "sans erreur". Mais ce défi est votre travail , et c'est un travail que vous ferez, espérons-le, assez bien - et encore mieux l'année prochaine, à mesure que vous vous familiariserez avec la gestion de la saveur particulière du chaos de votre entreprise.

Contre question: quels KPI proposeriez- vous pour un programmeur? C'est difficile. Beaucoup de ce que nous faisons est difficile à mesurer.

Carson63000
la source
4
Une base de code de n'importe quelle taille significative est pratiquement impossible à garantir comme "sans erreur", car il pourrait y avoir une erreur que vous n'avez tout simplement pas trouvée. Aussi, qu'est-ce qu'une erreur? Un bug? Comment est-ce mesuré?
philosodad
1
@philosodad - c'est un peu mon point. Ce ne sera pas sans erreur . Mais si cette année, des erreurs x sont trouvées dans le code que vous avez écrit, et l'année prochaine x-4 , vous avez amélioré votre KPI. Quant à savoir ce qu'est une erreur, c'est vraiment une question pour votre organisation, et sans aucun doute celle qui provoquera certains arguments: "erreur" contre "exigence non documentée" contre "exigence modifiée" contre "différence d'opinion".
Carson63000
3
@ Carson63000: mais c'est mon point! Un KPI qui est garanti pour provoquer plusieurs arguments, conduire à des désaccords inévitables entre les parties, et définit vaguement une métrique clé est, à tout le moins, problématique. Pour prendre votre exemple, si une "erreur" est une mesure subjective, il est prévisible que les gestionnaires définiront les erreurs afin de les rendre plus beaux, donc tout le monde aura un taux d'erreur réduit pour les mêmes performances exactes. Mais un nouveau gestionnaire pourrait le définir vers le haut, puis vers le bas, pour montrer comment ils ont "amélioré" la même sortie exacte.
philosodad
3
Il serait préférable de n'avoir pour cible aucune erreur critique (définir critique). Ou d'avoir un taux d'erreur en amélioration. Et mieux encore, ces éléments devraient être des cibles pour l'évaluation annuelle des performances, et non pas faire partie d'une description de poste.
quick_now
3
Les KPI impliquent un objectif qui peut non seulement ne pas être tout à fait atteint mais aussi être dépassé. Vous l'utilisez pour mesurer si vous faites pire ou mieux que la cible KPI. Je ne vois pas comment "sans erreur" peut être dépassé. Par conséquent, même s'il est conçu comme un KPI, il est défectueux. Un meilleur KPI serait de mesurer le nombre d'erreurs, les rapports de test soumis par rapport au code que vous avez écrit qui ont abouti à des changements de code réels, etc.
Marjan Venema
4

S'il s'agit d'une description de travail, je ne m'inquiéterais pas trop à ce sujet car travailler vers un code sans erreur fait partie du travail d'un programmeur typique (même si nous ne pouvons jamais y parvenir).

Cependant, en tant qu'indicateur de performance clé, il va trop loin, mais ne blâmez pas la personne qui l'a suggéré si ce ne sont pas des programmeurs. Expliquez simplement que cette déclaration fixe un objectif qui pourrait être indésirable pour l'organisation. Autrement dit, "sans erreur" est un standard extrêmement élevé pour les logiciels qui coûteraient une fortune à livrer. Expliquez qu'un projet logiciel bien géré nécessite de prendre des décisions quant à savoir si chaque défaut vaut la peine de consacrer un temps précieux au développeur.

Voici un exemple qui fait bien le point.
Un programmeur découvre que notre logiciel a un bug "an 3000" et cessera de fonctionner après le 31 décembre 1999. Il faudra 6 à 8 mois pour résoudre le problème. Sur la base du KPI est encouragé à entreprendre ce projet bien qu'il n'ait pas de réelle valeur pour l'entreprise.

D'accord, cet exemple est donc un peu extrême, mais dans tout projet logiciel, il y aura littéralement des dizaines de petits défauts découverts qui, de la même manière, ne génèrent pas le retour sur investissement requis pour les corriger. Si le KPI était plutôt destiné à impliquer que le programmeur n'introduise jamais le défaut en premier lieu, est-il raisonnable pour TOUT employé d'être tenu à la norme de ne jamais commettre d'erreur dans l'exécution de son travail?

JohnFx
la source
Il semble peu probable que vous disposiez d'un KPI couvrant "les défauts de correction qui ont été jugés par la direction comme n'étant pas un problème et n'ayant pas besoin d'être réparés".
Carson63000
@Carson - pas dans certaines grandes entreprises que je connais. Des objectifs stupides font partie de leur façon de faire des affaires.
quick_now
3

Non

Non seulement ce n'est pas approprié, c'est ridicule

Les tests ne peuvent que prouver l'existence d'erreurs, pas leur absence, donc chaque programme écrit dans le cadre de cet engagement devrait inclure une preuve d'exactitude rigoureuse ... et une couverture de test à 100%

"Méfiez-vous des bogues dans le code ci-dessus; je l'ai seulement prouvé correct, pas essayé." - D. Knuth
Steven A. Lowe
la source
Les KPI sont une mesure du succès et des progrès vers un objectif. Ce n'est pas une bascule binaire "code sans erreur = succès, une seule erreur = échec, vous êtes viré!"
Carson63000
@Carson: "sans erreur" n'est pas un KPI, c'est un fantasme.
Steven A. Lowe
1
Cela me ressemble à une couture. Mettez quelque chose de stupide dans le JD puis chaque fois qu'une excuse est nécessaire, la personne peut être renvoyée parce qu'elle ne fonctionne pas comme le JD l'exige.
quick_now
3

Bien sûr, c'est le travail et la responsabilité de chaque programmeur d'écrire du code sans erreur. C'est une attente parfaitement raisonnable. Comment pouvez-vous être un programmeur professionnel si vous publiez du code qui ne fonctionne pas? Comment pouvez-vous vous considérer comme un programmeur professionnel si vous publiez du code que vous ne connaissez pas ?

Si vous embauchez un peintre, vous vous attendez à ce qu'il fasse bien son travail. Vous vous attendez à ce que le résultat de son travail soit sans erreur. S'il y a des erreurs, vous vous attendez à ce qu'il assume la responsabilité de ces erreurs et les corrige gratuitement. De plus, si les erreurs vous coûtent de l'argent, vous vous attendez à ce qu'il vous rembourse. Pourquoi avez-vous ces attentes? Parce que le peintre est un professionnel.

Les programmeurs aiment blâmer tout le monde pour leurs erreurs. "Mon programme a des bugs à cause des exigences, ou à cause du calendrier, ou parce que la Lune est dans la 8ème maison" Mais il n'y a vraiment personne d'autre à blâmer. Si votre programme contient des erreurs, vous les mettez là.

Notre profession ne sera jamais être une profession jusqu'à ce que les programmeurs se rendent compte que l'argent cesse avec eux. Ce qu'ils sont responsables de la qualité de leurs programmes.

Savez-vous pourquoi les entreprises ont créé des départements Software QA? Parce que les programmeurs ne faisaient pas leur boulot! Les programmeurs libéraient tellement de conneries que les entreprises devaient former de nouveaux départements pour les vérifier.

Quelle est la longueur de la liste des bogues? Est-il professionnel d'avoir des milliers de bogues dans la base de données de bogues? Ce n'est clairement pas le cas. C'est le reflet d'un mauvais comportement, d'une mauvaise discipline et, franchement, d'un déshonneur.

Nous ne serons jamais une profession jusqu'à ce que nous réalisions que c'est notre travail de nous assurer que l'AQ ne trouve rien.

Oncle Bob.
la source
+1, mais j'aimerais considérer l'absence d'erreur comme un objectif personnel plutôt que comme une réalité. Nous devrions tous y aller, mais à moins de disposer de ressources infinies, nous n'y arriverons pas, du moins pas compte tenu de la façon dont nous développons les logiciels maintenant.
rjnilsson
Je ne pouvais pas être plus d'accord avec les sentiments de l'oncle Bob. C'est une question de professionnalisme.
Johnsyweb
1
Cette position est légèrement compliquée par le fait que ma direction est absolument claire qu'ils préféreraient que je leur donne un logiciel buggé maintenant, plutôt qu'un logiciel correct plus tard. Je ne pense pas que je suis seul dans cette situation.
Tom Anderson
3

Malheureusement, cela semble être un moyen pour eux de "couvrir toutes les bases", et ce n'est clairement pas recommandé et est susceptible de provoquer une désillusion chez les développeurs.

Cela dit, cela n'a vraiment d'importance que lorsque vous voyez ce qu'ils font de ce texte pendant la période à l'examen. Donc, ne réagissez pas trop rapidement - il pourrait y avoir encore de la raison au bout du tunnel.

Stephen Bailey
la source
Compte tenu de mon environnement de travail actuel, je me méfierais beaucoup de la façon dont ils appliqueraient cette formulation.
Phil.Wheeler
2

"Sans erreur" comme dans "parfait?" Comme dans "écrit par Dieu et les anges, pas les humains?" (nous parlons ici de logique de programme et peut-être d'erreurs de logique matérielle)

Je ne peux pas dire franchement qu'une seule ligne de code est sans erreur. C'est parce que nous, les humains, eh bien, nous ne pouvons prouver aucune hypothèse négative!

Le mieux que je puisse dire, c'est que la probabilité d'erreur est un nombre compris entre 0 et 1. J'atteins ce nombre par le biais de principes de développement et de test de logiciels bien ou mal définis et bien ou mal compris; par un décompte des lignes de logiciel source en question; en comprenant à quel point je me porte bien ou mal, pauvre candidat, applique ces principes pour produire ces lignes de code; et plus.

Et je ne peux exprimer cette compréhension que comme une probabilité. Le terme «sans erreur logique» signifie donc presque rien.

Si je voyais une annonce pour un ingénieur logiciel qui produisait du code "sans erreur", je l'appliquerais immédiatement ou je courrais tout de suite: l'entreprise n'a pas beaucoup réfléchi à la façon dont elle développe, teste et livre ses logiciels. . Ce sera donc soit une grande opportunité, soit un cauchemar sans fin.

De tout logiciel, cependant, je peux facilement - et je dois - dire que je m'attends à du code qui ne comporte pas d'erreurs qui tombent en dehors de ce truc de logique, sombre: du code qui compile et relie sans erreurs ni avertissements; c'est-à-dire "html valide" ou "css valide"; JavaScript (par exemple) qui ne génère aucun message d'erreur inexpliqué ou défaut de navigateur. Je peux mesurer cette partie directement et la marquer en noir et blanc sur un graphique.

Cette partie est simple comme bonjour. Tout le monde peut faire cela .

Hé, bonne chance dans votre recherche :-)

Pete Wilson
la source
1

Suis-je stupide, ou "erreur" ne signifie-t-elle pas "message fatal du compilateur équivalent à du code non compilable"?

Selon cette définition, c'est une exigence très raisonnable ...

Chris Browne
la source
1
Vrai. Avoir un texte mal aligné sur un pied de page peut être une erreur, mais ce n'est certainement pas dans la même classe d'erreur que quelque chose qui empêche une page de ne pas se charger et qui renvoie des erreurs d'exécution à l'utilisateur.
FrustratedWithFormsDesigner
Dans le développement Web, "l'erreur" peut signifier beaucoup de choses. L'affichage des prix incorrects pour tous vos produits peut être considéré comme une erreur majeure, mais cela n'empêchera pas nécessairement quoi que ce soit de s'exécuter et ne signalera aucun problème dans les journaux du serveur.
Simon B
Au cours des quatre années qui se sont écoulées depuis la rédaction de ce commentaire, j'ai fait beaucoup plus de développement Web et je suis totalement d'accord - exceptionnellement cependant, je vais m'en tenir à ma réponse d'il y a 4 ans et dire que le point que j'essayais de faire est que la définition d ' « erreur » est arbitraire, et pour (très) Certaines définitions , il est une exigence raisonnable.
Chris Browne