In der Linguistik gibt es eine Denkschule, nach der die Problemlösung stark von der Syntax, Semantik, Grammatik und Flexibilität der eigenen Muttersprache abhängt.
Wenn ich mit verschiedenen internationalen Entwicklungsteams zusammenarbeite, kann ich eine mentale Kultur (wenn Sie so wollen) in der Codebasis deutlich erkennen. Abgesehen von der Programmiersprache unterscheidet sich die deutsche Codierung erheblich von meinen Kollegen in Indien. Auch in Mittelamerika unterscheidet sich Code deutlich von Coastal America (tatsächlich hat IBM dies vor Jahren bemerkt).
Bemerken Sie bei Ihren internationalen Kollegen (aus JEDEM Land), dass Codierungsstil und Problemlösung mit den Muttersprachen übereinstimmen?
culture
problem-solving
spoken-languages
Jé Queue
quelle
quelle
Antworten:
Bis jetzt habe ich aufgrund meiner Erfahrung festgestellt, dass mein einheimischer internationaler Kollege im Vergleich zu dem nicht-einheimischen den gleichen Job gemacht hat. Das Problem tritt auf, wenn sie versuchen, das Konzept oder die Anforderung zu erklären. Sonst spielt der Syntaxname vermutlich keine große Rolle, bis Sie lesen, was genau sie tun. Sobald ein Programmierer die Kenntnis der Syntax erlangt hat, zählt er nicht mehr die tatsächliche Bedeutung des für die Syntax verwendeten Wortes.
quelle
Ich habe nicht viel Unterschied anders als in den Code gesehen Kommentare . Dort kann ich manchmal deutlich erkennen, dass dieses Bit von jemandem geschrieben wurde, dessen Muttersprache nicht Englisch ist.
quelle
Absolut. Das ist eine harte Tatsache. Die Ursache-Wirkungskette ist jedoch komplexer.
Die Region, ihr Ökosystem, die Wetterbedingungen, das Pflanzen- und Tierleben haben die Entwicklung der lokalen Kulturreligion als Teil davon beeinflusst.
Die Kultur und Religion haben die Bildung und Entwicklung der Landessprache (n) beeinflusst.
Die Kultur und die Sprache haben das Gesellschaftsmodell dieser bestimmten ethnischen Gruppe geprägt.
Das Gesellschaftsmodell hat das Verhaltensmodell definiert - Lebensstil, Arbeitseinstellung, soziale Beziehungen, Prioritäten und Werte des Einzelnen. Das ist der Teil, den wir wollen.
Menschen unterschiedlicher Kulturen werden sich der Lösung eines Problems mit dem Gepäck ihres kulturellen Erbes nähern - wie sie darüber denken, welche Einstellung sie zur Arbeit bringen, welche Methodik und Problemlösungsmuster sie anwenden, welche Prioritäten und Werte sie setzen.
Apropos Beispiele, ich kann Ihnen zwei geben. Wenn wir Deutschland nehmen, wo ich derzeit wohne, habe ich bestimmte Muster beobachtet.
Alles im Voraus und langfristig zu planen, ist die Lebensweise. Abendtreffen mit Freunden können Wochen und Monate im Voraus geplant werden. Jugendliche kümmern sich bereits um ihren Ruhestand (Versicherung etc.). Stimmungsschwankungen, Improvisation, Bereitschaft und Fähigkeit, sich im Laufe der Zeit anzupassen, sind sehr gering. Natürlich wird es auf die Arbeitsweise übertragen. Planung und Bestellung spielen eine große Rolle. Agilität wird als außergewöhnliches Merkmal angesehen, um eine moderne Person / ein modernes Team mit fortschrittlichem Denken zu beschreiben. Die meisten agilen Prozesse, die ich in deutschen Teams beobachtet habe, scheinen jedoch eher eine maschinelle Ausführung der vordefinierten Schritte zu sein (auch wenn die Leute wirklich versuchen, agil zu sein), aber kein Geist der Agilität als solche.
Vorhersehbarkeit von allem ist die Norm des Lebens. Die Menschen sind es gewohnt zu wissen, was wo und wann passieren wird. Es erstreckt sich vom Alltag über den Arbeitsstil bis hin zu persönlichen Beziehungen. Sie können es zum Beispiel sehen, wenn Leute die Straße überqueren. Sie warten auf grünes Licht und bewegen sich, ohne zu sehen, ob die Autos tatsächlich angehalten haben - weil sie es erwarten. Die Menschen sind stolz darauf, jeden Aspekt ihres Lebens kontrollieren zu können. Wenn jedoch das Leben mit etwas Unerwartetem zurückschlägt, wenn die Dinge außer Kontrolle geraten, flippen die Leute irgendwie aus. Bei der Übertragung auf die Programmierung habe ich gesehen, dass die Codierung eher optimistisch erfolgt, keine Besessenheitmit Überprüfung der Eingabe, Fremdschlüssel zur Überprüfung der Datenintegrität und so weiter. Es gibt auch kein Extra-Engineering, um den Code in gewissem Maße störungsresistent und an bestimmte zukünftige Änderungen anpassbar zu halten, nur um die heutigen Erwartungen zu erfüllen (die sich wahrscheinlich nicht ändern, glauben sie).
Geld sparen und ihre Ausgaben optimieren ist in der Kultur äußerst wichtig. Es spiegelt sich in den Arbeitsartefakten wider. Eigenschaften und Qualität stimmen mit der Planung überein, überschreiten sie jedoch nicht plötzlich (um sie kühler zu machen oder nur "für den Fall"). Eine andere Seite des Spiels ist die mangelnde Bereitschaft, in moderne Hardware und Software zu investieren, Arbeitscode neu zu entwickeln, ihn umzugestalten, die Dinge zu verbessern, nur um mit dem aktuellen Stand der Dinge Schritt zu halten und sich auf die Zukunft vorzubereiten. Da es keinen sofortigen Gewinn gibt und niemand für die Änderungen bezahlt, wird sich tatsächlich niemand bewegen.
Unternehmertum und Kreativität sind in der Kultur eher gering. Die mangelnde Bereitschaft, auf eigene Rechnung Risiken einzugehen, ist hoch. Arbeitsergebnisse sind selten ungewöhnlich, unerwartet und kreativ. Menschen neigen dazu, den ausgetretenen Weg zu gehen, wenig zu experimentieren oder ungewöhnlich "aus Neugier" aufzubauen. Menschen mögen es nicht, Initiative selbst in die Hand zu nehmen, besonders wenn sie mit Verantwortung verbunden sind. Ich habe auch gehört, dass Deutsche, die in den Niederlanden landen, manchmal Schwierigkeiten haben, da die Menschen dort gewohnt sind, ohne strenge Anleitung unabhängig zu arbeiten. In Bezug auf die Programmierung bedeutet dies wenig Experimentieren mit neuen Sprachen, Tools oder Bibliotheken. Neue Versionen werden aus Angst vor Änderungen nicht übernommen. Menschen nehmen Designmuster und wenden sie blind an, weil sie an der Universität so unterrichtet wurden, und stellen ihre Anwendbarkeit nicht in Frage.
Funktion über Mode. Es ist im Alltag zu sehen. Gemeinsamer urbaner Stil, Gestaltung von Gebäuden, Straßendekoration, alles ist auf das Minimum reduziert, damit es funktioniert, aber normalerweise nichts nur für den Stil, die Schönheit. In Bezug auf die Programmierung zeigt sich das Fehlen eines schönen UI-Designs. Die meisten geschäftlichen und persönlichen Websites sind eher altmodisch und langweilig. Sie können den Chef und die Kollegen auch nicht zum Polieren überreden, da sie keine konkreten Vorteile sehen.
Komplexität und Bürokratie gehören zum Lebensstil. Die Leute gehen weiter und bewerben sich überall. Persönliche Beziehungen. Arbeitsdetails, Entscheidungen und Lösungen führen häufig zu mehreren Artefakten, um zu dokumentieren, was getan wurde. Programmiercode enthält häufig unnötige Elemente, Abstraktionsebenen und Kompositionen, da dies den Menschen auf diese Weise ernsthafter erscheint. Das KISS-Prinzip ist nicht sehr beliebt.
"Gesicht retten" scheint sehr wichtig zu sein, um erfolgreich zu sein und niemandem Anzeichen von Schwäche oder Misserfolg zu zeigen (wenn Sie es haben, wird es mit ziemlicher Sicherheit gegen Sie verwendet). In der Arbeitspraxis fällt es ziemlich schwer, ein Versagen zuzugeben. Die Leute tun alles, um nicht das Gesicht zu verlieren. Kritik zu nehmen ist auch schwierig. Jemanden zu kritisieren (mit gutem Grund oder nicht) ist ein sicherer Weg, einen Feind zu machen. Zu sagen, was man im Kopf hat, wird nicht praktiziert, was es ziemlich schwierig macht zu verstehen, wer wo steht.
Fazit ist, gute Ausführende, Planung und Zeitplan oben, Präzision ist gut. Innovation und Kreativität sind jedoch nicht zu erwarten.
Das zweite Beispiel befasst sich mit der russischen Kultur, zu der ich gehöre. Es ist ganz anders.
Zeitplan und Planung scheinen nicht von besonderem Wert zu sein. Kleinere Abweichungen betreffen Menschen nicht, es sei denn / bis sie das größere Ergebnis bedrohen. Die Menschen leben nicht gerne nach Plan, bevorzugen eine Art geistige Freiheit, tun, was sie wollen und wann sie Lust dazu haben. In Bezug auf die Programmierung ignorieren sie möglicherweise das "Unwesentliche" wie das Schreiben von Dokumentation und das Erledigen von Papierkram. Menschen kommen und gehen viel einfacher, wenn sie sich mit dem Projekt langweilen, die Atmosphäre nicht mögen und so weiter. Langfristiges Engagement pro Leben ist nicht zu erwarten, die Menschen wollen nicht gebunden sein, erwarten nicht, dass sie einmal kommen und bis zur Pensionierung bleiben. Dies ist auf dem Mobilfunkmarkt gut zu sehen. Während es in Europa / USA allgegenwärtig ist, Verträge mit einer Laufzeit von zwei Jahren zu haben, wird dies in Russland nicht praktiziert. Die Leute ziehen nicht an
Die Leute mögen keine Bürokratie und bevorzugen informelle Beziehungen. Wenig bis gar kein Papierkram, so wenig Diskussionen und Besprechungen wie möglich, erledigen Sie einfach die Arbeit. Komplexität im Code wird nicht gemocht, einfache Entscheidungen und direkte Wege werden bevorzugt. Langweilige Routine wird nicht bevorzugt. Einige "nicht wesentliche" Aufgaben wie Kommentieren und Dokumentation werden möglicherweise ignoriert. Die Leute können bestimmte langweilige Dinge aufschieben und stattdessen interessantere Dinge tun oder den langweiligen Teil auf unerwartete Weise erledigen, was sie motiviert.
Kosten sind nicht so wichtig. Die Leute möchten einfach etwas Neues, Cooleres, Interessanteres und Moderneres bekommen, ohne einen Business Case. Wenn es Zufriedenheit bietet, werden sie normalerweise nicht über zusätzliche Kosten verunsichert.
Die Leute sind von allem sehr begeistert. Essen, Musik, Kleidung, Artefakte und Ideen aus verschiedenen Ländern und Kulturen kommen durch die offenen Türen. Programmierer würden mit einer neuen Sprache, einem neuen Tool oder einer neuen Bibliothek experimentieren, nur aus Neugier, mit oder ohne Business Case. Verschiedene Philosophien und Methoden, alles wird gerne auf funky Weise aufgenommen, berührt, gebissen, experimentiert und gemischt.
Schönheit und Stil sind sehr wichtig. Die Leute würden zusätzliche Zeit und Geld für etwas ausgeben, das keine greifbaren Vorteile hat, sondern nur einen künstlerischen Sinn befriedigt. Oft bevorzugen sie etwas Stilvolles gegenüber etwas Funktionalerem. Schönes UI-Design wird sehr geschätzt. Programmierer würden Code neu entwickeln, der ungeschickt und unstrukturiert erscheint, um ihm einfach mehr Stil zu verleihen, selbst wenn er zuvor perfekt funktioniert hat, was zu einem zusätzlichen Zeitaufwand führt.
Rezepte und Regeln werden oft ignoriert und sogar verachtet. Menschen können etwas völlig anderes tun, wenn sie davon überzeugt sind, dass es besser wird (oder cooler - kann dem nicht widerstehen). Viele Entscheidungen von oben werden hinterfragt und diskutiert. Und ja, jeder hat eine starke Meinung zu fast allem.
Die Vorhersehbarkeit des Lebens ist recht gering, daher planen die Menschen immer alle Eventualitäten. Dasselbe spiegelt sich oft im Code wider, eher in einer pessimistischen Haltung mit doppelten Überprüfungen und Fallback-Plänen. Architektur kann die Bereitschaft für zukünftige mögliche Änderungen widerspiegeln, jedoch keine astronautenähnliche Überarchitektur. Agilität ist keine moderne Methode, sondern die Lebensweise. Auch Menschen sind an Veränderungen gewöhnt und versuchen nicht, jeden Aspekt ihres Lebens zu kontrollieren. Wenn etwas Unerwartetes passiert, nicken die Leute einfach, sagen "wird beim nächsten Mal besser" und gehen weiter, ohne geistig zu werden, zu trinken, Drogen usw. Ein Projektversagen führt nicht zu Selbstmorden, wird leicht genommen.
Die politische Korrektheit ist gering, so dass die Leute einfach sagen können, was sie von vornherein denken, wenn Sie es nicht erwarten. Sei vorbereitet.
Ein anderes Fazit ist, erwarten Sie das Unerwartete, etwas Ungewöhnliches und Kreatives, aber erwarten Sie keine Maschinenpräzision, keinen Zeitplan und keine Befolgung der Regeln.
Welches besser ist, kann nicht einfach beantwortet werden. Ein Arbeitstyp wird besser von einer Arbeiterkategorie abgedeckt, der andere von einer anderen. Schlecht, wenn Menschen aufgrund ihrer Mentalität falsche Aufgaben zugewiesen bekommen. Ich nehme an, es ist eine Herausforderung für einen internationalen Teammanager, dieses Problem zu erkennen. Ich bin mir nicht sicher, ob es jemals mit Anwendungen für die IT-Branche diskutiert wurde.
quelle
Ich bin mir nicht sicher über die Qualität des Codes, aber es ist sicher, dass jeder Programmierer seine Arbeit anders macht.
Es wurde gesagt, dass natürliche Sprachen unser Denken beeinflusst haben (also würde ich vermuten, dass dies die Programmierung beeinflussen würde). Diese Denkschule hat zur Entwicklung künstlicher Sprachen mit unterschiedlichen Paradigmen geführt, um dies zu beweisen: Loglan zum Beispiel. Ich weiß nicht, ob viel dabei herausgekommen ist.
Ich bin mir jedoch sicher, dass Bildung (in der die Sprache eine Rolle spielt, aber auch andere Dinge) sicherlich die Sichtweise auf ein bestimmtes Problem beeinflusst.
Ich habe Kollegen, die "technische" Schulen besucht haben und in der Schule den Bauch von C / C ++ gelernt haben, und sie neigen dazu, die Probleme technisch anzugehen, während ich die Tendenz habe, mich zurückzulehnen und darüber nachzudenken (manchmal) für eine gute Zeit), bevor ich das Gefühl habe, tief genug zu verstehen, um es zu erreichen ... und doch sind wir (meistens) im selben Land aufgewachsen, sprechen dieselbe Sprache und haben mehr oder weniger dieselbe Kultur (nur eine) unterschiedlicher Bildungshintergrund).
Meine einzige Erfahrung mit "ausländischen" Kollegen war ein Spanier (vor zwei Jahren) und ein Italiener (bis heute), und beide arbeiten mehr oder weniger wie der Rest des Teams (Französisch). Wenn ich irgendwo mit einem nicht-lateinamerikanischen Hintergrund begegnen würde, könnte ich vielleicht einen Unterschied feststellen.
Daher bin ich mir nicht sicher, ob die Sprache die Hauptursache für die Stilunterschiede ist. Ich denke, Bildung und Charakter können mindestens genauso viel Einfluss haben.
quelle
Es ist keine Sprache, sondern eine Art kultureller Hintergrund, "nationaler Charakter". Was insgesamt zu funktionieren scheint (z. B. Engländer sind cool, Deutsche sind präzise usw.), aber es scheitert an einzelnen Personen.
Wie auch immer, es liegt an Ihnen, das Messsystem herauszufinden, Projekte aus Open Source-Repositories auszuwählen, Code zu untersuchen und Statistiken zu erstellen.
Es wäre besser, wenn Sie einige andere Attribute von Autoren sammeln könnten: Alter, Bildung, Industrie usw.
quelle
Die Muttersprache hat keinen Einfluss darauf, wie Sie codieren. Es ist jedoch ziemlich wichtig, Englisch verstehen zu können, da die meisten Programmierbücher, Blogs, QS-Sites wie SO usw. in der Regel auf Englisch sind
Kulturelle Unterschiede können jedoch ein Faktor sein. Universitäten in verschiedenen Ländern können aus einem anderen Blickwinkel lehren. Einige Länder haben möglicherweise eine stärkere agile Bewegung als andere Länder. Zum Beispiel sind japanische Fabriken für ihre Lean-Fertigung bekannt, die viele zu kopieren versuchen, aber scheitern, weil ihnen das Verständnis der grundlegenden Werte fehlt.
quelle
Ich denke, Bildung (ich meine eher den Stil als die Qualität) ist ein viel stärkerer Faktor. Sogar grundlegende Mathematik (von denen man denken würde, dass sie ziemlich universell ist) wird auf der ganzen Welt auf völlig unterschiedliche Weise unterrichtet, geschweige denn etwas so Immaterielles und Unscharfes wie das Lösen von Problemen.
Wenn es also einen Spracheffekt gibt (den ich aufgrund meiner Erfahrungen persönlich bezweifle), wird er vom Bildungsstil überschattet.
quelle