Communautés dans le monde de la programmation

a marqué ce sujet comme résolu.

Bonsoir,

Je faisais des recherches sur divers outils qui a le même but. Leur différence étant en particulier le langage. (Par exemple Node ou Python.) Ce n’est pas le plus important.

J’ai réalisé qu’il y avait des communautés qui étaient hautaine ou méprisante. Genre que tel langage est supérieur à l’autre. Certaines questions mal prises car ça fait passer la personne comme un faux programmeur. Il y a plein d’autres exemples.

Est-ce courant ? Si oui, pourquoi ? Qu’une personne soit débutante ou souhaite passer d’une technologie à une autre, il faudrait être heureux de voir de nouvelles personnes s’intéresser à telle ou telle chose non ?

Hello,

C’est en effet assez courant. la raison est assez simple, c’est que si tu ne fais pas que du C++, tu n’es pas un vrai programmeur.

Plus sérieusement, j’ai bien des idées sur le pourquoi de ces comportements (troll pur et dur, vouloir s’auto rassurer que sa techno est toujours valide, ignorance) mais je n’ai aucune preuve de quoi que ce soit, alors je vais éviter de trop m’avancer.

Je ne sais pas si ça va aider, mais essayons de dégager les racines du phénomène.

Un langage de programmation définit une façon unique de penser et d’abstraire un problème pour le résoudre. C’est généralement le résultat de la combinaison d’éléments structurels connus et déjà explorés par le passé :

  • un typage fort ou faible (je vois d’ici arriver les gens qui vont me dire que c’est une ineptie et qu’un langage est soit typé, soit pas. Prout),
  • un ensemble de paradigmes de programmation,
  • une façon d’aborder le polymorphisme, la composition et l’abstraction (interfaces, prototypes, duck typing, void*, monades…),
  • des garanties contractuelles (je veux garantir la thread-safety avant tout, la lisibilité avant tout, l’expressivité, les performances…).

Partant de là, chaque langage met en exergue une façon de concevoir ses programmes et de travailler différente, plus ou moins adaptée à un domaine ou une problématique donnée. Plus qu’un outil, un langage est un cadre pour la pensée.

On peut donc voir un langage comme une église (ou une école de pensée), avec ses rituels, ses idiomatismes, ses poncifs… Et ses hérétiques.

J’ai tendance à croire que plus les choix dans le design d’un langage sont forts (i.e. le distinguent de tous les autres langages), plus ses aficionados sont habitués à débattre ou troller sur la question, et plus ils vont avoir tendance à traiter un novice (voire un touriste venant d’une autre école) comme un hérétique.

Par corollaire je pense également que les gens ont du mal à inscrire leur école de pensée dans un univers plus global : ne connaissant que leurs problématiques, leur quotidien, leur référentiel, ils peuvent être déstabilisés par des choses qui en sortent. Du reste on sait les diverses réactions que les humains peuvent avoir face à l’inconnu. L’une d’elles consistant à se convaincre que seuls eux suivent la vraie voie authentique

+4 -0

En dehors de la longue analyse psychologique de nohar, rappelons que chaque groupe d’humains de plus de deux personnes a la fâcheuse tendance à devenir totalement con. Beaucoup de gens vont juste critiquer par plaisir. Tu aurais put venir d’une autre communauté, ça aurait été pareil.

A titre personnel j’ai globalement arrêté de troller les langages quand je suis vraiment rentré dans le milieu pro et où l’explosion des contraintes t’incite à, dans tous les cas, devoir en manipuler plusieurs, et même certains que dont tu n’es pas fan car c’est le meilleur choix stratégique.

Je peux pas dire que j’ai arrêté de troller les langages, notamment parce que quand j’aborde des points qui me dérangent, je finis généralement par déclencher un troll…

Par contre ça fait un moment que j’ai arrêté de mépriser tel ou tel autre langage/métier, en me rendant compte qu’il y avait beaucoup de trucs intéressants à observer la façon dont les gens s’accomodent de leurs contraintes.

Par exemple c’est assez rigolo d’observer comment des pratiques d’ingénierie qui sont bonnes dans l’absolu ont mené le monde du web à cet espèce de chaos qu’est la communauté Javascript : vu de l’extérieur ça ressemble au mouvement des molécules dans une casserole d’eau en ébullition. Mais du jour où on décide d’arrêter de se foutre de leur gueule ("Quoi ? Ce code a deux mois ? C’est du legacy, tu ferais mieux de coder ton propre framework.") on s’aperçoit que globalement, cette communauté déploie des trésors de créativité pour compenser le manque de diversité de langage côté browser.

@tleb : aussi curieux que ça puisse paraître, je commence à me sentir limité (cognitivement parlant) par Python, et son avenir me semble moins radieux qu’il y a 4 ou 5 ans, typiquement. Je guette la prochaine opportunité de lancer un projet au boulot, sur un langage qui n’a pas encore atteint le point d’inflexion de sa croissance. Ne serait-ce que parce que ce n’est pas bon de stagner sur une même techno.

+2 -0

vu de l’extérieur ça ressemble au mouvement des molécules dans une casserole d’eau en ébullition.

Je proteste avec véhémence ! Si le comportement individuel d’une molécule d’eau dans une casserole d’eau en ébullition est stochastique, il est possible de connaitre sans difficulté aucune une tendance, une direction. Bref, on a à notre disposition les riches et puissants outils de la physique statistique pour nous dire comment le système se comporte. Bien qu’à l’interface entre la thermodynamique et la mécanique des fluides, le comportement de l’eau en ébullition dans une casserole n’est pas considérée comme un système complexe (au sens physique du terme).

Le comportement de la communauté javascript dépasse de très loin les systèmes complexes qui sont actuellement solubles ou compréhensible.


Pourquoi écrire cela ici ? Juste pour illustrer que quel que soit le domaine, tu trouveras toujours quelqu’un pour en reprendre un autre (tu as tooooords), de manière plus ou moins légitime et plus ou moins intelligente1. C’est courant, et pas propre à l’informatique.


  1. Dans le cas présent, ce que je dis est juste, mais absolument pas à propos. 

+4 -0

Blague à part à propos de JS, Coplien (que les C++iens connaissent bien) et Cook, qui bossent pas mal sur les questions d’OO, ont tendance à considérer que c’est l’un des très rares langages qui soient réellement OO. A contrario par exemple des langages à classe type Java ou C++ qui sont des langages où il serait difficile de faire du vrai orienté objet (et qu’ils relèguent à une définition de "class-oriented").

Quoi, Python n’est pas le langage ultime ?

tleb

Non, on a dit plus tôt que c’est C++. Tu ne suis rien …

Si seulement ce n’était que pour les langages de programmations/technologies.

Les gens pédants et autres comportements chiants tu en trouves partout. D’autres communauté un peu plus que d’autres. Le problème de laisser passer ça à un problème généralement triple :

  1. ça fais fuir les nouveaux arrivants parce que l’image de la communauté n’est pas bonne, voir les anciens
  2. ça peut diviser en interne
  3. ça isole le truc à la fin.

Vive les interactions humaines ;)

(Mais des communautés bien, ça existe aussi :) ) 3.

Vive les interactions humaines ;)

Ça va paraître con mais c’est une révélation que j’ai eue en ayant la chance d’assister à la conférence ACM Foundations of Software Engineering en automne dernier.

L’ingénierie logicielle au sens large, et ça inclut aujourd’hui plus que jamais la sphère open source, est un domaine dont l’enjeu principal, notamment pour la recherche, est humain.

Sérieusement j’aurais voulu en faire un article pour résumer le contenu de cette (prestigieuse) conférence sans en avoir eu le temps, mais plus de la moitié des papiers (et la totalité des keynotes) qui y étaient présentés portaient sur les enjeux et/ou les problèmes collaboratifs et humains qui touchent ce domaine. Je repense en particulier à un ancien ingénieur ses Bell Labs qui appelait à la création d’un nouveau domaine transverse de recherche, qu’on pourrait appeler "sciences collaboratives", au barycentre de l’ingénierie logicielle, la psychologie sociale et l’anthropologie.

En somme contrairement à ce que l’on pourrait penser en observant divers forums ou communautés en informatique, l’élite (si l’on peut dire) du domaine ne se pose plus tellement la question "comment faire du logiciel de qualité ? ", au profit de "comment amener les hommes et les femmes qui développent les logiciels à mieux collaborer dans leur travail pour en parfaire le résultat, ainsi que leur propre expérience ?".

Au fond la question des interactions humaines autour de telle ou telle techno est devenue un point central de réflexion pour la recherche. C’est pour moi le signe que l’on peut considérer avoir fait le tour de la supériorité technique de tel langage sur les autres, et qu’aujourd’hui on s’en fout, parce que ce ne sont plus ces détails qui freinent le progrès.

+2 -0

[…], mais plus de la moitié des papiers (et la totalité des keynotes) qui y étaient présentés portaient sur les enjeux et/ou les problèmes collaboratifs et humains qui touchent ce domaine.

nohar

Tu grossis un peu le trait, ou alors les titres des papiers sont vraiment très trompeurs ;) . Cela dit, il est vrai que la capacité à communiquer de manière efficace et utile est déjà un problème au sein d’équipes qui bossent sur un sujet commun, et encore bien plus quand on parle de sujets différents (tout en restant sur un même système) typiquement : développement VS validation.

A supposer que tout le monde soit d’accord sur une modélisation du problème (ce qui déjà n’est pas gratuit), tout le monde aura malgré tout un vue différente de cette modélisation en fonction de son job. Et autant, si permettre à chacun de récupérer les informations qui l’intéresse, sous une forme qui lui convient, on commence à bien se débrouiller, transmettre les résultats du travail de chacun aux autres sans perdre 80% des informations intéressantes et en les modélisant correctement, c’est clairement une autre paire de manches. Et il y a même pas forcément besoin de travailler sur des sujets très différents pour voir le problème apparaître.

En somme […], l’élite du domaine ne se pose plus tellement la question "comment faire du logiciel de qualité ? ", au profit de "comment amener les hommes et les femmes qui développent les logiciels à mieux collaborer dans leur travail pour en parfaire le résultat, ainsi que leur propre expérience ?".

nohar

Question de granularité et de sous-domaine à mon avis. L’ingénierie du logiciel, c’est très large, et ça englobe beaucoup de sous-domaines précis où l’on a également des problèmes d’ingénierie (ingénierie du test, de la preuve, de la sécurité, de la visu, … etc). Et dans ces sous-domaines, qui restent dans l’ingénierie (je parle même pas de la partie théorique ou pratique), les discussions ne sont pas encore axées tant que cela sur l’humain, on a encore beaucoup de problèmes pour modéliser et encore plus pour résoudre de manière efficace.

Tu grossis un peu le trait, ou alors les titres des papiers sont vraiment très trompeurs

Un peu des deux, je suppose.

La majorité des présentations auxquelles j’ai assistées étaient axées sur l’humain, même quand il s’agissait de présentations a priori très techniques comme telle méthode de test impliquant des mutations aleatoires du code, alors que l’intitulé n’y aurait pas fait penser à la base.

Je répondrai au reste demain, quand j’aurai un peu de temps pour contruire ma réponse.

+0 -0

Toutes les communautés, de la programmation à l’élevage des husky sont hautaine et méprisante, c’est l’être humain qui est comme ça

Dans tous les forums, le dernier arrivé doit impérativement être d’accord avec les membres aux status +1000 et se plier à leur avis et leur savoir, au risque de voir ses idées et avis démontés… Les anciens ayant toujours raison

Coluche disait "C’est pas parce qu’ils sont nombreux à avoir tort qu’ils ont raison"

C’est la même chose dans le monde du travail, la nouvelle recrue sera vu comme un ennemi

Forum, communauté, … Secte ?

Disons que si tu trouves que tes collègues au travail sont des ennemis ou vice-versa, autant changer de travail.

En soit, si c’est juste un forum, bah pas grave, je n’y vais pas. Par contre, si c’est un truc où je me fais embaucher et que je passe au moins 40 heures sur place… bah j’avoue que je déprimerais pas mal.

Un point qui n’a pas été abordé est la question des codes. Quand tu arrives dans un groupe déjà formé, des choses se sont passées avant ton arrivé1. Et là, il peut y avoir des réactions que l’on juge étonnantes.

Pour prendre un exemple simple, ici, quand on vient poser une question, il est d’usage de dire « bonjour » au début du message2, et de le présenter correctement. Autant ceux qui le présente mal n’ont souvent pas de réponse (on n’a pas de boule de cristal pour comprendre leur problème si ce n’est pas clair), autant celui qui ne dit même pas bonjour passe un gougnafier et se fait largement moinssé.

C’est un point indépendant de l’ambiance, c’est une double question de code et d’accueil. On a sur ce sujet un exemple magistral de membre n’ayant pas respecté les codes lors de son arrivé et qui est passé pour un troll de bas étage. Que ce soit le cas ou non ne change rien, il y a eu déterrage, propos péremptoires et mépris d’une catégorie de personne. Ailleurs, ça aurait un être un facteur d’intégration, ici, non.

Dans toute communauté, il y a des codes de bonne conduite ; le nouveau qui débarque et piétine ces codes sera rejeté. La différence de taille entre une communauté et une secte est la question de l’influence d’un « manitou ». D’ailleurs, dans bien des communautés, les règles ne sont pas écrites dans le marbre et peuvent être changées… par les membres de la communauté.

Pour finir, ne dramatisons pas les choses ; il y a un paquet d’association et de communautés dans lesquels on peut venir sans craindre de se faire cracher dessus, tant en ligne qu’en vrai. Quand je débarque dans une association sportive, je ne pose pas la question de savoir si j’enfreins le code de bonne conduite : on me dira bien vite les choses à faire et ne pas faire (qu’elles soient là pour des raisons historiques ou pratiques).

Pour re-finir, je pense que les gens ne sont pas malveillant3, dans le sens où ce n’est pas le fait s’opposer (à dessein ou non) aux codes qui choque, mais le fait de continuer encore et encore. Errare humanum est, sed in errare perseverare diabolicum..


  1. Tautologie. 

  2. Ce n’est pas une évidence pour tout le monde. 

  3. Au sens « qui vous veulent du mal ». 

+5 -0

une secte est la question de l’influence d’un « manitou ».

c’est quoi? un chariot élévéteur de débat?

Sinon blague à part pour ce qui est des langages de prod, l’aspect grégaire y est aussi pour beaucoup.

il y a peu, je regardais l’interview d’une personne de la fédération FDN à propos de la neutralité du net. Et dans les commentaires du débat, y’a eu des gens qui se sont battu pour savoir si PHP était un bon langage. Le fait que PHP soit une cible facile est le cas typique du comportement grégaire : tout le monde critique PHP alors critiquons PHP.

Si tu vas sur IRC, tu me voir troller sur JS pour la même raison : les devs de zds les plus actifs sur IRC sont des devs JS. J’ai beau aimer les concepts tels que les promises, le async/await etc. c’est trop bon de parler de JS en mal.

C’est marrant de critiquer php et je aussi et surtout car ils ont beaucoup de "fan-boy", en particulier dans les dev amateurs et peu expérimenté. Du coup c’est facile, un petit troll bien placé et ça part en sucette total alors que ce sont deux technos qui ont des arguments à faire valoir.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte