Charte de responsabilité des programmeurs [fermée]

40

Nous avons donc tous entendu parler de la Charte des droits des programmeurs et XP a un concept similaire.

C'est une plainte commune de nos jours que nous entendons beaucoup parler des droits des personnes, mais pas tant de leurs responsabilités, alors que devrait être le cahier des charges des programmeurs. Ce sont des choses qu’ils devraient faire, qu’ils pourraient trouver désagréables, mais qui séparent les programmeurs agissant de manière professionnelle et responsable de ceux qui ne le font pas.

Je m'intéresse principalement aux désagréables et à ceux qui ont tendance à ne pas se produire. Ce sont ceux que les programmeurs ont tendance à éviter et à éviter, plutôt que ceux que 90% des programmeurs veulent réellement faire (comme toujours refactoriser et utiliser le contrôle de source).

Alors, que devrait figurer sur la charte de responsabilité des programmeurs?

Jon Hopkins
la source
4
En outre, je pense que cela correspond aux directives 1, 2, 4 et 6.
Stephen Furlani Le
2
Je pense que c'est une question importante à poser.
HLGEM
1
Un suivi important pourrait être "comment vous formez-vous pour être un programmeur responsable?"
Stephen Furlani
2
Cette question semble générer uniquement une liste d'éléments. Bien que les réponses soient plutôt impressionnantes (et je félicite les répondants qui ont mis du temps et des efforts dans leurs messages), elles sont centrées sur les opinions et le libellé de la question me semble être un sondage.
Thomas Owens
5
@ThomasOwens n'est pas du tout d'accord sur le fait que "cette question ne convient pas à notre format de questions-réponses." Cela a déjà généré une réponse concernant les tests des développeurs, les méthodologies de développement, les problèmes de freelance et d’entreprise, l’assurance qualité et l’ingénierie logicielle, mais on ne sait vraiment pas pourquoi nous avons ce site si des questions comme celles-ci ne cessent de se résoudre.
Joshua Drake

Réponses:

41
  • Un programmeur a la responsabilité de repousser les exigences peu élevées au lieu de les appliquer aveuglément. Cela implique de dire aux clients que ce qu'ils veulent coûte plus cher que les autres options ou comporte un ensemble de risques particulier. Cela implique également de communiquer de manière professionnelle les mauvaises nouvelles - ne pas crier, appeler des gens stupides, ce qui implique qu'ils sont stupides ou présentent un autre comportement enfantin. S'il repousse, il devrait avoir un ensemble de raisons (plus que "Je n'aime pas SQL Server et je ne l'utilise pas") et un plan alternatif à présenter.

  • Cependant, le programmeur a également la responsabilité d'accepter les décisions et d'utiliser des outils ou des conceptions qui ne lui plaisent peut-être pas si leur refoulement n'était pas accepté. Si un rapport a été demandé dans SSRS, son envoi dans Crystal Reports (ce que le client n'a peut-être pas) est inacceptable. Si une solution .net était nécessaire, sa livraison en Haskell est inacceptable. Si personne d'autre dans l'équipe n'utilise un outil ou un langage que vous souhaitez utiliser, il est peu professionnel de l'utiliser si la direction n'est pas d'accord pour dire qu'il s'agit du meilleur outil pour un travail donné.

  • Un programmeur a la responsabilité de tester son travail. (Cela ne devrait pas être le seul test, mais aucun programmeur professionnel ne devrait envoyer du code qu'il n'a pas encore testé.) Cela inclut de tester même les branches du code que vous ne vous attendez pas à frapper très souvent. Si vous avez un jeu de FI imbriqués, testez tous les itinéraires possibles.

  • Un programmeur a la responsabilité de gérer les erreurs et les exceptions avec élégance et d'écrire des messages d'erreur que l'utilisateur verra professionnels et neutres, pas de blagues ni d'insultes.

  • Un programmeur a la responsabilité de protéger les données privées, le code propriétaire qu'il écrit pour l'entreprise et de protéger les utilisateurs contre les catastrophes (même les catastrophes auto-infligées) de leur utilisation de l'application.

  • Un programmeur a la responsabilité de s’assurer que son code est maintenable et qu’il est en contrôle de source.

  • Un programmeur a la responsabilité de se coordonner avec les autres pour s’assurer que ses modifications n’affectent pas ce qu’ils font.

  • Un programmeur a la responsabilité de recommander au client le meilleur choix d'outils ou de langues en phase de conception, et non de l'outil / de la langue avec lequel il souhaite jouer et apprendre.

  • Un programmeur a la responsabilité de travailler avec tout le personnel approprié pour un projet, y compris ceux qu'il n'aime pas. Ce n’est pas votre travail d’aimer les gens, c’est votre travail de travailler avec eux et d’être poli.

  • Un programmeur a la responsabilité de produire un produit qui respecte ce qui a été spécifié dans un délai raisonnable. Si le délai ne sera pas respecté, il lui incombera d’en informer la direction dès que celle-ci sera connue.

  • Un programmeur a la responsabilité d'informer les gestionnaires de projet des obstacles à la réalisation du travail. Ils ne peuvent pas réparer ce qu'ils ne savent pas.

  • Un programmeur a la responsabilité de s’acquitter de l’ensemble de la tâche et pas seulement des parties amusantes et intéressantes. Chaque travail a des parties ennuyeuses, il reste encore à faire. Cela inclut des choses comme les feuilles de temps et l'ajout d'éléments de discussion au logiciel de gestion de projet. Cela inclut des choses comme la documentation, la révision de code, etc.

  • Un programmeur a la responsabilité d’apprendre le domaine commercial qu’il prend en charge, et pas seulement les concepts de programmation.

  • Un programmeur a la responsabilité de maintenir ses compétences à jour.

  • Lorsqu'un programmeur se trompe, il a la responsabilité de faire tout ce qui est en son pouvoir pour régler les problèmes le plus rapidement possible. Cela peut impliquer de porter les mauvaises nouvelles à la direction plutôt que d'essayer de cacher que vous venez de supprimer une table critique dans la base de données de production.

  • Un programmeur a les mêmes responsabilités que tout autre travailleur - se présenter à l'heure, travailler les heures contractées, demander des vacances à l'avance, répondre à des messages téléphoniques et des courriels (enfin, lire leurs courriels), remplir les formulaires requis RH, etc.

HLGEM
la source
7
J'adore les messages d'erreur blague. La situation est déjà assez mauvaise, pas besoin de la rendre plus sérieuse - essayez au moins de me faire rire en me giflant avec une erreur!
Dr. Hannibal Lecter
2
Je m'interroge sur la responsabilité qui incombe au développeur de tester personnellement son code dans toutes les situations ... Je reformulerais cette question pour s'assurer que son code est testé ... Si l'organisation dispose de testeurs professionnels (à la fois automatisés et humains) et d'un processus solide en place pour m'assurer que le code est testé, je ne vois pas pourquoi le développeur doit le faire personnellement. Si je développe une nouvelle fonctionnalité ou corrige un bogue, je le testerai moi-même, sinon je ne saurai pas si mon travail est terminé. Toutefois, si je procède à une refactorisation de grande envergure, il n’a aucun sens de procéder à un test de régression exhaustif de l’ensemble du produit.
JoelFan
Je n'ai pas dit test de régression, mais vous devriez tester vos modifications à l'unité pour vous assurer qu'elles correspondent à vos attentes.
HLGEM
2
Qu'en est-il des points d'exclamation dans les messages d'erreur ... c.-à-d. "La date n'est pas valide!"
JoelFan
1
Ceux-ci doivent être neutres. Les rendre impératifs rendrait cela plus facile, par exemple, au lieu de "Un programmeur a la responsabilité de tester son travail", devrait être "Testez votre travail".
Sigil
42

Chaque programmeur devrait rendre son code lisible par d’autres.

dan_waterworth
la source
D @ Kevin: C'est une responsabilité. Vous avez la responsabilité de produire un code lisible par l'homme.
doppelgreener
1
@ Axidos, c'est parce que j'ai changé de réponse une fois que j'ai compris ce que j'avais fait.
dan_waterworth
Je vais supprimer mon commentaire original car il n'est plus pertinent.
Kevin D
1
"Lisible" par qui? Mes "pairs" (c.-à-d. Quelqu'un avec une éducation et une expérience similaire à la mienne)? Quelqu'un qui est vraiment bien éduqué dans l'art et la science? Ou un singe de code de vol qui n'a AUCUNE affaire avec quelque chose de plus avancé que Dartmouth BASIC?
John R. Strohm
7
@ John, les autres dans ce contexte impliquent d'autres programmeurs. Dans la phrase: "La girafe était plus grosse que les autres.", Nous ne prenons pas les autres pour des singes volants. "Autres" signifie "plus du même type qui n'ont pas déjà été mentionnés".
dan_waterworth
22

Le programmeur est responsable de la confidentialité et de la sécurité de toutes les données fournies par l'utilisateur. Surtout les mots de passe, numéros de carte de crédit, adresses e-mail et emplacement physique.

Malfiste
la source
Cela relèverait vraiment du domaine de l'architecte système. Dans de nombreux scénarios d'entreprise, les programmeurs n'ont aucun mot à dire ni aucun contrôle sur les magasins de données. Comment puis-je être responsable d'une adresse e-mail dans une base de données, alors que tout ce que je fais est d'accéder à cette base de données, sans la créer?
Neal Tibrewala
2
Je suppose que les gens de Facebook n'ont pas besoin de postuler dans la mesure où la plupart des responsabilités ci-dessus vont. :)
MetalMikester
4
-1 c'est trop de responsabilité.
Peter Turner
6
Peut-être que pour les systèmes à grande échelle, il serait peut-être trop difficile pour un programmeur de décider. Mais pour la grande majorité des sites où un ou plusieurs programmeurs travaillent, il est absolument nécessaire de stocker correctement les données. Aucun chiffrement lorsque le hachage est nécessaire, aucun algorithme personnalisé ou sécurité par obscurité. Sécurité réelle et testée.
Malfist
@Neal: L'architecte système n'est qu'un autre programmeur. Bien sûr, pour les grands projets, il ne pourra probablement pas faire de programmation, mais cela ne veut pas dire qu'il n'est pas un programmeur. Et cela ne s'applique qu'aux grands projets. sur des projets à 2 ou 3 personnes, un programmeur est généralement responsable d’une partie ou de la totalité de la base de données; il est de sa responsabilité de s'assurer que les données sont sauvegardées en toute sécurité.
configurateur
20

Ne faites pas perdre le travail à l'utilisateur.

C'est plus difficile que ça en a l'air ... le travail ne consiste pas seulement en "données dans un fichier" ... c'est tout le temps que l'utilisateur a consacré à votre logiciel.

Par exemple, si l'utilisateur remplit votre formulaire de 30 champs avec 29 éléments valides et un élément invalide, n'effacez pas toutes ses données valides pour se plaindre du 1 invalide (heck, n'effacez même pas l'invalide. peut-être est-il long et nécessite-t-il une correction mineure, ou l'utilisateur ne se souviendra plus de ce qu'il était avant si vous l'effacez)

Un exemple non évident mais important est ce que Windows et pratiquement tous les autres logiciels de "gestionnaire de fichiers" se trompent ... si je passais une demi-heure avec soin à appuyer sur Ctrl-clic pour sélectionner un ensemble de fichiers et que je cliquais accidentellement au lieu de Ctrl-Click, il ne devrait pas effacer tous mes fichiers précédemment sélectionnés, ce qui me fait recommencer.

Un autre problème auquel ils se sont trompés ... si je frappe accidentellement sur Ctrl-A (au lieu de Ctrl-S juste à côté), cela ne devrait pas perdre ma place dans le fichier et mettre le curseur au début ... j'appelle trouver le bon endroit dans le fichier "travail" que le programme a "perdu".

Encore un autre: le dialogue "commit" de TortoiseSVN a une longue liste de fichiers. Avant de cliquer sur "Commit", vous pouvez descendre dans la liste des fichiers, en double-cliquant sur chacun d'eux pour voir ses modifications dans une 2ème boîte de dialogue. Pour faire cela rapidement, j'utilise parfois uniquement le clavier, en appuyant sur <Esc>pour fermer le deuxième dialogue et revenir au premier. Si je frappe accidentellement <Esc> deux fois, la première boîte de dialogue se ferme, ce qui me fait oublier le fichier que je préparais.

JoelFan
la source
5
Essayez de ne pas créer de raccourcis clavier opposant les tâches assignées aux touches les unes à côté des autres (CTRL-C et CTRL-V par exemple, je ne peux pas vous dire combien de fois Si copié quand je voulais coller et inversement)
HLGEM
5
@HLGEM, Paradoxalement, celui qui l'a conçu a probablement pensé qu'il nous
rendait
4
Et il ne l'était pas? Je veux dire, vous n’avez pas toute la puissance d’Emacs ou quoi que ce soit, mais vous pouvez copier et coller sans trop bouger votre main.
Compman
1
Utilisez Total Commander. Cliquez avec le bouton droit de la souris pour sélectionner et cliquez avec le bouton droit de la souris pour désélectionner. Sauf si vous naviguez ailleurs ou si vous perdez la mise au point pendant une longue période pendant que le dossier en cours de visualisation est modifié, vous ne perdrez pas votre sélection.
configurateur
1
Pour le dernier exemple (Ctrl-A perd ma place dans le fichier), j’ai récemment trouvé une solution de contournement partielle qui fonctionne dans de nombreux programmes ... Ctrl-Z, Ctrl-Y .... qui annulera ma dernière modification au le contenu du fichier, puis le "refaire", avec le résultat que le contenu est le même que précédemment, et je suis situé à la place de l'édition. Ce n'est pas nécessairement la même chose que l'endroit où mon curseur se trouvait juste avant mon erreur Ctrl-A, mais il est souvent assez proche ... cela n'excuse bien sûr pas le mauvais comportement du programme sur Ctrl-A ... ce n'est qu'une solution partielle et m'a pris un certain temps pour
tomber
15

Un programmeur a la responsabilité de respecter le système sur lequel son programme sera exécuté. Une fois le développement et les tests terminés, le programme sera déployé pour être utilisé conformément à son objectif, ce qui implique généralement que d'autres personnes l'exécutent sur leur ordinateur. Le programmeur doit garder cela à l'esprit: son programme fonctionne sur la propriété de quelqu'un d'autre , et non sur la leur, et doit se comporter comme un invité chez eux au lieu de se faufiler comme s'il était propriétaire.

Par exemple, son programme ne devrait pas:

Mason Wheeler
la source
1
J'aime beaucoup les utilisateurs et les programmeurs. Les icônes qui rebondissent sur mon dock sont ma première cause de rage envers des personnes que je n’ai jamais rencontrées.
Agos
7
Je les aime tous sauf "se mettre à jour sans le consentement de l'utilisateur". Je trouve la façon dont Chrome se met à jour de façon rafraîchissante. J'aime trouver de nouvelles fonctionnalités. La façon dont les autres programmes le font, cependant, est abominable. Je vous regarde, Java, et Acrobat Anything. Ne me demandez pas si je veux vous mettre à jour tous les jours. J'ai dit non une fois, prenez un indice!
configurateur
2
Si un programme doit se mettre à jour automatiquement, il devrait au moins demander le consentement de l'utilisateur la première fois.
Gablin
Une autre violation de TortoiseSVN ... faire à peu près n'importe quoi avec elle provoque l'arrêt complet du système
JoelFan
@SpashHit: Hmm? J'utilise TortoiseSVN tous les jours et je n'ai jamais remarqué cela ...
Mason Wheeler
8

Extrait du Manifeste pour les artisans logiciels :

En tant que futurs artisans du logiciel, nous élevons la barre du développement logiciel professionnel en le pratiquant et en aidant les autres à apprendre le métier. Grâce à ce travail, nous avons pu valoriser:

  • Logiciel non seulement fonctionnel, mais aussi bien conçu

  • Non seulement réagir aux changements, mais aussi apporter une valeur constante

  • Non seulement les individus et les interactions, mais aussi une communauté de professionnels

  • Non seulement la collaboration client, mais aussi des partenariats productifs

C'est-à-dire qu'à la recherche des objets de gauche, nous avons trouvé que les objets de droite étaient indispensables.

éponge
la source
8

Regardez dans le miroir et reconnaissez éventuellement les pires qualités d'un programmeur en lui-même. Ensuite, travaillez à les éliminer chaque jour.

  1. N'apprends rien de nouveau
  2. Ne cherche pas à développer tes compétences
  3. Ne pas être ouvert au nouveau, s'en tenir aux vieilles habitudes
  4. Ne pas se soucier de la qualité de votre travail
  5. Ne pas chercher à améliorer la qualité de votre travail
  6. Être un travailleur de 9 à 5 sans passion
  7. Ne pas avoir sa propre opinion sur les choses
  8. Accepter l'opinion des autres sans se poser de questions
  9. Croire que vous avez tout appris
  10. Ne tolérer aucune critique
  11. N'écoute pas d'entrée externe
  12. Être égocentrique, savoir-tout-individuel
  13. Avoir une personnalité négative et critiquer les autres
utilisateur8685
la source
+1, mais si on l'exprime de cette façon, cela le rend assez négatif.
dan_waterworth
1
Je trouve le numéro 13 très ironique, car c’est essentiellement ce que vous faites ici, bien que dans un sens général.
Dustin Rasener
6
  • La responsabilité du programmeur est de créer un logiciel qui réponde aux besoins des exigences, de l'analyse, de la conception et des spécifications, tels qu'ils sont définis dans tous les contrats passés entre le programmeur et le client.
  • La responsabilité du programmeur est de créer un logiciel économique, fiable et efficace sur de vraies machines.
  • La responsabilité du programmeur est de travailler de manière aussi efficace, éthique et intègre que possible et de se conduire avec le plus grand professionnalisme.

Cela s’applique en partie aux responsabilités de «Une société de programmation ».

Stephen Furlani
la source
4
  • Le programmeur doit connaître et utiliser les bibliothèques de base et la plate-forme utilisées.

Particulièrement quand le programmeur vient d'une autre plate-forme / langue. C’est terrible de trouver le programmeur qui se bat pour quelque chose que fournit la bibliothèque principale ou d’utiliser à mauvais escient l’avantage de la plate-forme en raison de son ignorance.

  • Le programmeur doit créer du code auto-documentant

Il est très important que le code soit documenté pour que d'autres puissent l'utiliser, mais en ce qui concerne la facilité de maintenance, le code auto-documenté peut littéralement économiser des heures et des heures de frustration.

Par exemple, comparez:

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

à

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}
OscarRyz
la source
4

La programmation est un métier, pas une compétence. Cela signifie qu'un programmeur a la responsabilité de rester au courant des derniers outils, techniques et technologies dans son domaine.

Cela peut impliquer de demander aux gestionnaires de donner du temps pour permettre un apprentissage et une formation continus, ou de le faire pendant votre temps libre.

Neal Tibrewala
la source
2

1) Expliquez clairement qu'une solution à tout problème entraînera des compromis entre performance, coût, délai et qualité.

2) Compléter la documentation pertinente, qu’elle publie des notes ou des plans de test. (la documentation varie selon le type et la taille de l'entreprise)

3) Demander les bons outils pour leur travail (tant de gens se plaignent de cela mais ne contactent jamais leur patron avec des arguments raisonnables pour obtenir ce dont ils ont besoin)

... D'autres sans doute à suivre.

Kevin D
la source
2

Question n'importe quoi - Un programmeur devrait avoir la responsabilité de s'informer de tout ce qu'un système peut être appelé à faire ou à gérer. Cela peut inclure de demander ce que les utilisateurs peuvent considérer comme des questions idiotes, car différents sites sont consacrés à montrer ce que les utilisateurs peuvent être capables de faire. Daily WTF et SharkTank sont quelques exemples, mais je suis sûr qu’il en existe d’autres.

JB King
la source
1

Un programmeur est responsable de la conversion des user stories du backlog du produit en incréments logiciels opérationnels et livrables.

C'est pourquoi les gestionnaires doivent s'assurer qu'ils ont tout pour leur but.

utilisateur2567
la source
1

Voici ma proposition.

  1. Un programmeur doit exiger les conditions de travail exposées dans la déclaration de droit du programmeur, afin de ne pas abaisser les normes du poste.

(Pour "programmeur", je veux dire "programmeur", pas "pirate de week-end", donc toutes les choses habituelles qu'un programmeur devrait faire sont implicites.)

cbrandolino
la source
-1. Je ne pense pas qu'une responsabilité puisse être une responsabilité qui "requiert [un]" un droit.
Craige
1

5 préceptes de la guilde du programmeur

1.) vérifier son code hebdomadaire et les jours fériés.

2.) répondre aux besoins de la communauté de programmation.

3.) lire au moins un livre de programmation par an.

4.) assistez à au moins une conférence de programmation par an.

5.) reconnaissez vos erreurs.

Peter Turner
la source
"vérifier son code chaque semaine et en vacances"? Vous voulez dire toutes les heures, non?
configurateur
@configurator Je parle de cela comme un strict minimum pour vous appeler un programmeur. Mais plus il y a de témoins, plus on est de fous
Peter Turner
1

Je vais ajouter "toujours documenter toutes les hypothèses faites" à la liste. :-)

John Parker
la source
Ou ... ne faites jamais d'hypothèses?
Stephen Furlani
2
@Stephen Furlani - C'est malheureusement pratiquement impossible sur un projet de toute taille.
John Parker
0

Un programmeur ne doit pas faire ou mettre en œuvre quoi que ce soit qui soit contraire à l'éthique ou illégal, comme écrire des virus ou pirater les systèmes d'autrui (à moins que ce soit pour découvrir des failles de sécurité et ensuite en informer la victime et ce qu'elle peut faire pour éviter que cela ne se produise. exploité par des pirates informatiques malveillants).

Gablin
la source