Il existe une école de pensée en linguistique selon laquelle la résolution de problèmes est très liée à la syntaxe, à la sémantique, à la grammaire et à la flexibilité de sa propre langue maternelle.
En travaillant avec diverses équipes de développement international, je peux clairement voir une culture mentale (si vous voulez) dans la base de code. Mis à part le langage de programmation, le codage allemand est assez différent de mes collègues en Inde. De plus, le code est nettement différent en Amérique centrale comme en Amérique côtière (en fait, IBM l'a remarqué il y a quelques années).
Remarquez-vous avec vos collègues internationaux (de N'IMPORTE QUEL pays) que le style de codage et la résolution de problèmes sont conformes aux langues maternelles?
la source
Réponses:
Jusqu'à présent, avec mon expérience, j'ai remarqué que mon boursier international natif faisait le même travail que le non-natif. Le problème se pose lorsqu'ils tentent d'expliquer le concept ou l'exigence. Sinon, je suppose que le nom de la syntaxe ne joue pas beaucoup de rôle jusqu'à ce que vous lisiez ce qu'ils font. Une fois qu'un programmeur acquiert la connaissance de la syntaxe, il ne compte pas quelle est la signification réelle du mot utilisé pour la syntaxe.
la source
Je n'ai pas vu beaucoup de différence autre que dans les commentaires du code . Là, parfois, je peux clairement dire que ce morceau a été écrit par quelqu'un dont la langue maternelle n'est pas l'anglais.
la source
Absolument. C'est un fait difficile. La chaîne de cause à effet est cependant plus complexe.
La région, son écosystème, les conditions météorologiques, la vie végétale et animale ont influencé le développement de la religion de la culture locale qui en fait partie.
La culture et la religion ont influencé la formation et le développement de la ou des langues locales.
La culture et la langue ont marqué le modèle de société de ce groupe ethnique particulier.
Le modèle de société a défini le modèle de comportement - style de vie, attitude au travail, relations sociales, priorités et valeurs des individus. C'est la partie que nous voulons.
Des personnes de cultures différentes aborderont la résolution d'un problème avec le bagage de leur patrimoine culturel - comment ils y pensent, quelle attitude ils adoptent au travail, quelle méthodologie et quels modèles de résolution de problèmes ils appliqueront, quelles priorités et valeurs ils fixent.
En parlant d'exemples, je peux vous en donner deux. Si nous prenons l'Allemagne où je réside actuellement, il y a certaines tendances que j'ai observées.
Tout planifier à l'avance et à long terme est le mode de vie. Des réunions en soirée avec des amis peuvent être planifiées des semaines et des mois à l'avance. Les jeunes se préoccupent déjà de leur retraite (assurance, etc.). Le swing d'humeur, l'improvisation, la volonté et la capacité de s'adapter au fur et à mesure sont très faibles. Naturellement, il est transféré au mode de travail. La planification et l'ordre jouent un grand rôle. Être agile est considéré comme une caractéristique exceptionnelle pour décrire une personne / une équipe moderne avec une pensée progressiste. Cependant, la plupart des processus agiles que j'ai observés dans les équipes allemandes ressemblent plus à une exécution machine des étapes prédéfinies (même si les gens essaient vraiment d'être agiles), mais pas d'esprit d'agile en tant que tel.
La prévisibilité de tout est la norme de la vie. Les gens ont l'habitude de savoir ce qui se passera, où et quand. Cela va de la vie quotidienne au style de travail en passant par les relations personnelles. Vous pouvez le voir par exemple lorsque les gens traversent la route. Ils attendent le feu vert et commencent à bouger sans regarder si les voitures se sont réellement arrêtées - parce qu'ils s'y attendent. Les gens sont fiers de pouvoir contrôler tous les aspects de leur vie. Quand cependant la vie revient avec quelque chose d'inattendu, quand les choses deviennent hors de contrôle, les gens paniquent. Si transféré à la programmation, j'ai vu que le codage se fait de manière plutôt optimiste, pas d' obsessionavec vérification de l'entrée, des clés étrangères pour vérifier l'intégrité des données, etc. Il n'y a pas non plus d'ingénierie supplémentaire pour garder le code dans une certaine mesure résilient aux échecs et adaptable à certains changements futurs, juste pour répondre aux attentes d'aujourd'hui (qui ne sont pas susceptibles de changer, selon eux).
Économiser de l'argent et optimiser ses dépenses est extrêmement important dans la culture. Il se reflète sur les artefacts de travail. Les caractéristiques et la qualité correspondent à la planification mais ne les dépassent pas soudainement (pour le rendre plus frais ou juste "au cas où"). Un autre aspect du jeu est la réticence à investir dans du matériel et des logiciels modernes, à repenser le code de travail, à le refactoriser, à améliorer les choses simplement pour rester en phase avec l'état actuel des choses, pour préparer l'avenir. Puisqu'il n'y a pas de gain immédiat et que personne ne paie pour les changements, personne ne va vraiment bouger.
L'entrepreneuriat et la créativité sont plutôt bas dans la culture. La réticence à prendre des risques pour son propre compte est élevée. Les résultats de travail portent rarement l'empreinte d'une créativité inhabituelle, inattendue. Les gens ont tendance à suivre le chemin parcouru, peu d'expérimentation ou un montage inhabituel "par curiosité". Les gens n'aiment pas prendre l'initiative entre leurs mains, surtout lorsqu'ils sont associés à des responsabilités. J'ai également entendu des Allemands atterrir aux Pays-Bas avoir parfois des difficultés car les gens là-bas sont habitués à travailler de manière indépendante sans conseils précis. Au niveau de la programmation, cela signifie peu d'expérimentation avec de nouveaux langages, outils ou bibliothèques, les nouvelles versions ne sont pas adoptées par peur du changement. Les gens prennent des modèles de conception et les appliquent aveuglément parce qu'ils ont été enseignés ainsi à l'université et ne remettent pas en question leur applicabilité.
Fonctionnez plutôt que la mode. Cela se voit dans la vie quotidienne. Style urbain commun, conception des bâtiments, décoration des rues, tout est au minimum requis pour qu'il fonctionne, mais généralement rien que pour le style, la beauté. Au niveau de la programmation, cela se voit dans le manque de belle conception d'interface utilisateur. La plupart des sites d'entreprise et personnels sont plutôt anciens et ennuyeux. Vous ne pouvez pas non plus persuader le patron et les collègues de faire un peu de polissage car ils ne voient aucun avantage tangible.
La complexité et la bureaucratie font partie du mode de vie. Les gens vont plus loin et postulent partout. Relations personnelles. les détails du travail, les décisions et les solutions entraînent souvent plusieurs artefacts pour documenter ce qui a été fait. Le code de programmation sort souvent avec des éléments inutiles, des niveaux d'abstraction et des compositions parce qu'il semble aux gens plus sérieux de cette façon. Le principe KISS n'est pas vraiment populaire.
«Sauver la face» semble être très important, avoir l'air réussi, ne pas montrer de signes de faiblesse ou d'échec à quelqu'un d'autre (si vous en avez, il sera presque certainement utilisé contre vous). Dans la pratique du travail, admettre l'échec est assez difficile, les gens font tout pour ne pas "perdre la face". Il est également difficile de prendre des critiques. Critiquer quelqu'un (avec ou sans cause) est un moyen sûr de se faire un ennemi. Dire ce que l'on a à l'esprit n'est pas pratiqué, ce qui rend assez difficile de comprendre qui se tient où.
En bout de ligne, bons exécuteurs, planification et calendrier supérieurs, la précision est bonne. Il ne faut cependant pas s'attendre à l'innovation et à la créativité.
Le deuxième exemple concerne la culture russe à laquelle j'appartiens. C'est assez différent.
Le calendrier et la planification ne semblent pas avoir une valeur particulière. Les déviations mineures ne concernent pas les gens à moins que / jusqu'à ce qu'elles commencent à menacer le résultat le plus important. Les gens n'aiment pas vivre selon le plan, préfèrent une sorte de liberté mentale, font tout ce qu'ils aiment et quand ils ont envie de le faire. Au niveau de la programmation, ils peuvent ignorer le «non essentiel» comme la rédaction de documentation et la paperasserie. Les gens vont et viennent beaucoup plus facilement, s'ils s'ennuient avec le projet, n'aiment pas l'atmosphère et ainsi de suite. Il ne faut pas s'attendre à un engagement à long terme par vie, les gens ne veulent pas être liés, ne s'attendent pas à ce qu'ils viennent une fois et restent jusqu'à la retraite. Cela se voit bien sur le marché de la téléphonie mobile. Alors qu'en Europe et aux États-Unis, il est omniprésent d'avoir des contrats de deux ans, en Russie, cela n'est pas pratiqué. Les gens ne
Les gens n'aiment pas la bureaucratie et préfèrent les relations informelles. Peu ou pas de paperasse, aussi peu de discussions et de réunions que possible, faites simplement le travail. La complexité du code n'est pas appréciée, les décisions simples et les voies directes sont préférées. La routine ennuyeuse n'est pas favorisée. Certaines tâches "non essentielles" comme les commentaires et la documentation peuvent être ignorées. Les gens peuvent repousser certaines choses ennuyeuses et faire des choses plus intéressantes ou faire la partie ennuyeuse d'une manière inattendue qui les maintiendra motivés.
Les coûts ne sont pas si importants. Les gens aiment obtenir quelque chose de plus récent, plus cool, plus intéressant et plus moderne juste ainsi, sans analyse de rentabilisation. Si cela donne satisfaction, ils ne seront généralement pas inquiets des coûts supplémentaires encourus.
Les gens sont très enthousiastes à propos de tout. La nourriture, la musique, les vêtements, les artefacts et les idées de différents pays et cultures passent par les portes ouvertes. Les programmeurs expérimenteraient un nouveau langage, un nouvel outil ou une nouvelle bibliothèque juste par curiosité, avec ou sans analyse de rentabilité. Différentes philosophies et méthodologies, tout est volontiers pris, touché, mordu, expérimenté et mélangé de manière funky.
La beauté et le style sont très importants. Les gens dépenseraient plus de temps et d'argent pour quelque chose qui n'a aucun avantage tangible mais qui satisfait seulement un certain sens artistique. Ils préfèrent souvent quelque chose d'élégant à quelque chose de plus fonctionnel. Le beau design de l'interface utilisateur est très apprécié. Les programmeurs devraient réorganiser le code qui semble maladroit et non structuré simplement pour y ajouter plus de style, même s'il fonctionnait parfaitement auparavant, ce qui entraînerait du temps supplémentaire.
La prescription et les règles sont souvent ignorées et même méprisées, les gens pourraient faire quelque chose de totalement différent s'ils sont convaincus que ça va être mieux (ou plus cool - ne peut pas résister à cela). De nombreuses décisions d'en haut seront remises en question et débattues. Et oui, tout le monde a une opinion bien arrêtée sur tout.
La prévisibilité de la vie est assez faible, donc les gens planifient toujours toute éventualité. La même chose se reflète souvent dans le code, plutôt une attitude pessimiste, avec des doubles vérifications et des plans de secours. L'architecture peut refléter l'état de préparation aux futurs changements possibles, mais pas une surarchitecture de type astronaute. Agile n'est pas une méthodologie moderne mais le mode de vie. De plus, les gens sont habitués aux changements et n'essaient pas de contrôler tous les aspects de leur vie. Quand quelque chose d'inattendu se produit, les gens hochent simplement la tête, disent "ça ira mieux la prochaine fois" et continuer sans aller mentalement, sans boire, sans médicaments, etc.
La justesse politique est faible, donc les gens peuvent simplement dire ce qu'ils pensent d'avance lorsque vous ne vous y attendez pas. Soyez prêt.
Un résultat différent est, attendez-vous à l'inattendu, quelque chose d'inhabituel et de créatif, mais ne vous attendez pas à la précision de la machine, au calendrier et au respect des règles.
Lequel est le meilleur ne peut pas être facilement répondu. Un type de travail est mieux couvert par une catégorie de travailleurs, l'autre par une catégorie différente. Mauvais si les gens se voient attribuer de mauvaises tâches pour leur mentalité. Je suppose que c'est un défi pour un chef d'équipe international de reconnaître ce problème. Je ne suis pas sûr que cela ait jamais été discuté avec une application à l'industrie informatique.
la source
Je ne suis pas sûr de la qualité du code, mais il est certain que chaque programmeur fait son travail différemment.
On a dit que les langues naturelles influençaient notre pensée (donc je suppose que cela influencerait la programmation), cette école de pensée a conduit au développement de langues artificielles avec différents paradigmes pour tenter de le prouver: Loglan , par exemple. Je ne sais pas si beaucoup en est ressorti.
Ce dont je suis certain, cependant, c'est que l'éducation (dans laquelle la langue joue un rôle, mais d'autres choses aussi) affecte certainement son point de vue sur un problème spécifique.
J'ai des collègues qui sont allés dans des écoles "techniques", et qui apprennent les tripes du C / C ++ à l'école, et ils ont tendance à avoir une approche technique des problèmes, alors que j'ai tendance à m'asseoir, à y réfléchir (parfois pour un bon moment) avant que je sens que j'ai une compréhension suffisamment profonde pour y arriver ... et pourtant nous avons été élevés dans le même pays (principalement), parlons la même langue, et avons plus ou moins la même culture (juste un formation différente).
Ma seule expérience avec des collègues "étrangers" a été un espagnol (il y a deux ans) et un italien (à ce jour), et ils travaillent plus ou moins comme le reste de l'équipe (français). Peut-être que si je rencontrais quelque part d'un milieu non latin, je pourrais voir une différence.
En tant que tel, je ne suis pas sûr que la langue soit la principale cause des différences de style. Je pense que l'éducation et le caractère peuvent avoir au moins autant d'impact.
la source
Ce n'est pas la langue mais une sorte de contexte culturel, "caractère national". Ce qui semble fonctionner dans l'ensemble (par exemple, les Anglais sont cool, les Allemands sont précis, etc.), mais cela échoue sur des personnes individuelles.
Quoi qu'il en soit, c'est à vous de découvrir le système de mesure, de choisir des projets dans des référentiels open source, d'examiner le code et de faire des statistiques.
Ce serait mieux si vous pouviez collecter d'autres attributs des auteurs: âge, éducation, industrie, etc.
la source
La langue maternelle d'une personne n'affecte pas la façon dont vous codez. Mais être capable de comprendre l'anglais est cependant assez important, car la plupart des livres de programmation, des blogs, des sites d'AQ, comme SO, etc. ont tendance à être en anglais
Les différences culturelles peuvent toutefois être un facteur. Les universités de différents pays peuvent enseigner d'un point de vue différent. Certains pays peuvent avoir un mouvement agile plus fort que d'autres pays. Par exemple, les usines japonaises sont connues pour leur fabrication Lean, que beaucoup essaient de copier, mais échouent parce qu'elles ne comprennent pas les valeurs sous-jacentes fondamentales.
la source
Je pense que l'éducation (je veux dire le style plutôt que la qualité) est un facteur beaucoup plus fort. Même les mathématiques de base (dont on pourrait penser qu'elles sont assez universelles) sont enseignées de manières complètement différentes à travers le monde, sans parler de quelque chose d'aussi intangible et flou que la résolution de problèmes.
Donc, s'il y a un effet linguistique (dont je doute personnellement, d'après mes expériences), il est éclipsé par le style d'éducation.
la source