Czy ojczysty język mówiony wpływa na jakość kodu?

9

W lingwistyce istnieje szkoła myślenia, że ​​rozwiązywanie problemów jest ściśle związane ze składnią, semantyką, gramatyką i elastycznością własnego języka ojczystego.

Współpracując z różnymi międzynarodowymi zespołami programistycznymi, wyraźnie widzę kulturę mentalną (jeśli wolisz) w bazie kodu. Poza językiem programowania niemieckie kodowanie różni się od moich kolegów w Indiach. Również kod różni się wyraźnie w Ameryce Środkowej, podobnie jak w Ameryce przybrzeżnej (w rzeczywistości IBM zauważył to lata temu).

Czy zauważyłeś w swoich międzynarodowych współpracownikach (Z DOWOLNEGO kraju), że styl kodowania i rozwiązywanie problemów są zgodne z językami ojczystymi?

Jé Queue
źródło
Mogą występować pewne różnice, ale wiem, że są źli programiści z każdego kraju.
ozz
Skąd wiesz, czy różnice są spowodowane językiem ojczystym czy pochodzeniem kulturowym?
mouviciel
@mouviciel, te dwa są w większości nierozłączne, jednak anegdotycznie widzę, że składnia języka mówionego kieruje semantyką języka programowania; niemiecki przykład poniżej w moich komentarzach tylko jeden. Widzę dość wyraźnie różnicę w stylu kodowania nawet między regionami USA, pomimo w dużej mierze podobnego języka, który (jak powiedziałeś) należy w większym stopniu przypisać różnicom kulturowym.
Jé Queue

Odpowiedzi:

5

Do tej pory z mojego doświadczenia zauważyłem, że mój ojczysty internacjonalista wykonywał tę samą pracę w porównaniu z osobami nierodzimymi. Problem pojawia się, gdy próbowali wyjaśnić pojęcie lub wymóg. W przeciwnym razie nazwa składni nie odgrywa dużej roli, dopóki nie przeczytasz, co tak naprawdę robią. Gdy programista pozna znajomość składni, nie liczy faktycznego znaczenia słowa użytego w składni.

Zerotoinfinity
źródło
1
Widzę, że tłumaczenie rodzimego języka mówionego (i procesu myślowego) na inny język programowania ma różne wyniki materialne. W każdym razie nie dobre ani złe, po prostu całkiem inne. Zauważam dużo deklaracji sterty / zmiennych globalnych i przygotowania danych, a następnie zestawów wywołań procedur przez Niemców, w porównaniu z Amerykanami, którzy mają tendencję do wstawiania lub anonimowego wykorzystywania zmiennych / funkcji w miarę potrzeby. Ostateczne wyniki = to samo, tylko różne podejścia.
Jé Queue,
+1 za inteligentne podsumowanie Wyniki końcowe = to samo, tylko inne podejścia
Zerotoinfinity
3

Nie widziałem dużej różnicy poza komentarzami do kodu . Czasami mogę wyraźnie powiedzieć, że ten fragment został napisany przez kogoś, kto pierwszy język nie jest angielski.

Marcie
źródło
6
Ja również brak błędów ortograficznych jest silną wskazówką. :)
biziclop,
3

Czy zauważyłeś w swoich międzynarodowych współpracownikach (Z DOWOLNEGO kraju), że styl kodowania i rozwiązywanie problemów są zgodne z językami ojczystymi?

Absolutnie. To trudny fakt. Łańcuch przyczynowo-skutkowy jest jednak bardziej złożony.

Region, jego ekosystem, warunki pogodowe, życie roślin i zwierząt wpłynęły na rozwój lokalnej kultury kulturowej, która jest jego częścią.

Kultura i religia wpłynęły na powstanie i rozwój lokalnego języka (ów).

Kultura i język odcisnęły swoje piętno na modelu społeczeństwa dla tej konkretnej grupy etnicznej.

Model społeczny zdefiniował model zachowania - styl życia, podejście do pracy, relacje społeczne, priorytety i wartości jednostek. To jest część, której chcemy.

Ludzie różnych kultur będą zbliżać się do rozwiązania problemu z bagażem swojego dziedzictwa kulturowego - jak o tym myślą, jakie podejście do pracy, jaką metodologię i wzorce rozwiązywania problemów zastosują, jakie priorytety i wartości wyznaczyli.


Mówiąc o przykładach, mogę podać dwa. Jeśli zabierzemy Niemcy tam, gdzie obecnie mieszkam, zaobserwowałem pewne wzorce.

  1. Planowanie wszystkiego z wyprzedzeniem i długoterminowo to sposób na życie. Wieczorne spotkania z przyjaciółmi można zaplanować z tygodniami i miesiącami. Młodzi ludzie już się zajmują przejściem na emeryturę (ubezpieczenie itp.). Nastrój, improwizacja, chęć i umiejętność dostosowywania się w miarę upływu czasu są bardzo niskie. Oczywiście przenosi się na sposób pracy. Dużą rolę odgrywają planowanie i porządek. Zwinność jest uważana za wyjątkową cechę opisującą nowoczesną osobę / zespół z postępowym myśleniem. Jednak większość zwinnych procesów, które zaobserwowałem w niemieckich zespołach, bardziej przypomina maszynową realizację predefiniowanych kroków (nawet jeśli ludzie naprawdę próbują być zwinni), ale nie ma ducha zwinności jako takiej.

  2. Przewidywalność wszystkiego jest normą życia. Ludzie są przyzwyczajeni do wiedzy o tym, co się stanie, gdzie i kiedy. Rozciąga się od codziennego życia przez styl pracy po relacje osobiste. Możesz to zobaczyć na przykład, gdy ludzie przechodzą przez ulicę. Czekają na zielone światło i zaczynają jechać, nie patrząc, czy samochody rzeczywiście się zatrzymały - ponieważ ich oczekują. Ludzie są dumni z możliwości kontrolowania każdego aspektu swojego życia. Kiedy jednak życie wraca z czymś nieoczekiwanym, kiedy sprawy wymykają się spod kontroli, ludzie w pewnym sensie wariują. Po przeniesieniu do programowania zauważyłem, że kodowanie odbywa się raczej optymistycznie, bez obsesjize sprawdzaniem danych wejściowych, kluczami obcymi w celu weryfikacji integralności danych i tak dalej. Nie ma też dodatkowej inżynierii, aby utrzymać kod w pewnym stopniu odporny na awarie i przystosowujący się do pewnych przyszłych zmian, tylko po to, aby zaspokoić dzisiejsze oczekiwania (które prawdopodobnie nie zmienią się).

  3. Oszczędność pieniędzy i optymalizacja wydatków są niezwykle ważne w kulturze. Odzwierciedla to artefakty pracy. Charakterystyka i jakość są zgodne z planowaniem, ale nie przekraczają ich nagle (aby było chłodniej lub po prostu „na wszelki wypadek”). Inną stroną gry jest niechęć do inwestowania w nowoczesny sprzęt i oprogramowanie, do przeprojektowywania działającego kodu, do jego refaktoryzacji, do ulepszenia, aby zachować zgodność z aktualnym stanem rzeczy, aby przygotować się na przyszłość. Ponieważ nie ma natychmiastowej wygranej i nikt nie płaci za zmiany, nikt tak naprawdę się nie ruszy.

  4. W kulturze przedsiębiorczość i kreatywność są raczej niskie. Niechęć do podejmowania ryzyka na własny rachunek jest wysoka. Wyniki pracy rzadko niosą odciski niezwykłych, nieoczekiwanych, kreatywnych. Ludzie mają tendencję do podążania zdeptaną ścieżką, niewielkich eksperymentów lub nietypowych ustawień „z ciekawości”. Ludzie nie lubią przejmować inicjatywy w swoje ręce, szczególnie w połączeniu z odpowiedzialnością. Słyszałem też, że Niemcy lądujący w Holandii czasami mają trudności, ponieważ ludzie są przyzwyczajeni do samodzielnej pracy bez ścisłego nadzoru. Jeśli chodzi o programowanie, oznacza to niewielkie eksperymenty z nowymi językami, narzędziami lub bibliotekami, nowe wersje nie są przyjmowane z obawy przed zmianą. Ludzie biorą wzorce projektowe i na ślepo stosują je, ponieważ uczyli się tego na uniwersytecie i nie kwestionują ich zastosowania.

  5. Funkcjonalność nad modą. Widać to w życiu codziennym. Wspólny styl miejski, projektowanie budynków, dekoracja ulic, wszystko sprowadza się do minimum wymaganego do jego funkcjonowania, ale zwykle nic tylko ze względu na styl, piękno. Jeśli chodzi o programowanie, widać to w braku pięknego projektu interfejsu użytkownika. Większość witryn firmowych i prywatnych jest raczej stara i nudna. Nie można również przekonać szefa i współpracowników do polerowania, ponieważ nie widzą żadnych wymiernych korzyści.

  6. Złożoność i biurokracja są częścią stylu życia. Ludzie idą dalej i aplikują wszędzie. Relacje osobiste szczegóły pracy, decyzje i rozwiązania często skutkują wieloma artefaktami dokumentującymi to, co zostało zrobione. Kod programistyczny często zawiera niepotrzebne elementy, poziomy abstrakcji i kompozycje, ponieważ wydaje się, że ludzie są w ten sposób poważniejsi. Zasada KISS nie jest zbyt popularna.

  7. „Ratowanie twarzy” wydaje się być bardzo ważne, aby wydawać się sukcesem, nie pokazywać oznak słabości lub porażki nikomu innemu (jeśli tak, to prawie na pewno zostanie użyte przeciwko tobie). W praktyce zawodowej przyznawanie się do porażki jest dość trudne, ludzie robią wszystko, aby nie „stracić twarzy”. Krytyka też przychodzi ciężko. Krytykowanie kogoś (z słusznej przyczyny lub nie) jest pewnym sposobem na uczynienie wroga. Mówienie tego, co ma się na myśli, nie jest praktykowane, co sprawia, że ​​trudno jest zrozumieć, kto stoi.

Podsumowując, dobrzy wykonawcy, najlepsze planowanie i harmonogram, dokładność jest dobra. Nie należy się jednak spodziewać innowacji i kreatywności.


Drugi przykład dotyczy kultury rosyjskiej, do której należę. Jest całkiem inaczej.

  1. Harmonogram i planowanie nie wydają się mieć szczególnej wartości. Drobne odchylenia nie dotyczą ludzi, chyba że / dopóki nie zacznie zagrażać większemu wynikowi. Ludzie nie lubią żyć według planu, wolą coś w rodzaju wolności umysłowej, robić to, co lubią i kiedy mają na to ochotę. Jeśli chodzi o programowanie, mogą zignorować „nieistotne”, takie jak pisanie dokumentacji i wykonywanie papierkowej roboty. Ludziom łatwiej przychodzi i odchodzi, jeśli znudzi im się projekt, nie lubią atmosfery i tak dalej. Nie należy oczekiwać długoterminowego zaangażowania na całe życie, ludzie nie chcą być związani, nie oczekują, że przyjdą raz i pozostaną do emerytury. Jest to dobrze widoczne na rynku telefonów komórkowych. Podczas gdy w Europie / USA powszechne jest posiadanie 2-letnich umów, w Rosji nie jest to praktykowane. Ludzie nie

  2. Ludzie nie lubią biurokracji i wolą nieformalne relacje. Niewielka lub żadna papierkowa robota, jak najmniej dyskusji i spotkań, wystarczy wykonać pracę. Złożoność kodu nie jest podobna, preferowane są proste decyzje i bezpośrednie sposoby. Nudna rutyna nie jest preferowana. Niektóre „nieistotne” zadania, takie jak komentowanie i dokumentacja, mogą być ignorowane. Ludzie mogą odłożyć pewne nudne rzeczy i zamiast tego robić bardziej interesujące rzeczy lub robić nudne części w nieoczekiwany sposób, co utrzyma ich motywację.

  3. Koszty nie są tak ważne. Ludzie lubią zdobywać coś nowszego, fajniejszego, ciekawszego i nowocześniejszego, bez uzasadnienia biznesowego. Jeśli zapewni to satysfakcję, zwykle nie będą zaniepokojeni dodatkowymi poniesionymi kosztami.

  4. Ludzie są bardzo entuzjastycznie nastawieni do wszystkiego. Żywność, muzyka, ubrania, artefakty i pomysły z różnych krajów i kultur przenikają przez otwarte drzwi. Jeśli chodzi o programowanie, ludzie eksperymentowali z nowym językiem, narzędziem lub biblioteką, z ciekawości, z uzasadnieniem biznesowym lub bez. Różne filozofie i metodologie są chętnie podejmowane, dotykane, gryzione, eksperymentowane i mieszane razem w funkowy sposób.

  5. Piękno i styl są bardzo ważne. Ludzie spędziliby dodatkowy czas i pieniądze na czymś, co nie ma żadnych wymiernych korzyści, ale zaspokaja jedynie artystyczny sens. Często wolą coś stylowego niż coś bardziej funkcjonalnego. Bardzo ceniony jest piękny design interfejsu użytkownika. Jeśli chodzi o programowanie, ludzie przeprojektowaliby kod, który wydaje się niezdarny i nieuporządkowany, po prostu dodając mu więcej stylu, nawet jeśli wcześniej działał idealnie, co skutkowało dodatkowym czasem.

  6. Recepty i reguły są często lekceważone, a nawet pogardzane, ludzie mogą zrobić coś zupełnie innego, jeśli są przekonani, że będzie lepiej (lub fajniej - nie można się temu oprzeć). Wiele decyzji z góry będzie kwestionowanych i dyskutowanych. I tak, wszyscy mają dobre zdanie na każdy temat.

  7. Przewidywalność życia jest dość niska, więc ludzie zawsze planują na wszelki wypadek. To samo często znajduje odzwierciedlenie w kodzie, raczej nastawieniu pesymistycznym, z podwójnymi kontrolami i planami awaryjnymi. Architektura może odzwierciedlać gotowość na przyszłe możliwe zmiany, ale nie nadmierną architekturę podobną do astronautów. Agile nie jest nowoczesną metodologią, ale sposobem na życie. Również ludzie są przyzwyczajeni do zmian i nie próbują kontrolować każdego aspektu swojego życia. Kiedy dzieje się coś nieoczekiwanego, ludzie po prostu kiwają głowami, mówią „następnym razem będzie lepiej” i idą dalej bez szaleństwa, picia, narkotyków itp. Niepowodzenie projektu nie powoduje samobójstw, jest łatwe do podjęcia.

  8. Poprawność polityczna jest niska, więc ludzie mogą po prostu powiedzieć z góry to, co myślą, gdy się tego nie spodziewasz. Być przygotowanym.

Inna podstawowa kwestia to, spodziewaj się nieoczekiwanego, coś niezwykłego i kreatywnego, ale nie oczekuj precyzji maszyny, harmonogramu i przestrzegania zasad.


Na to, który jest lepszy, nie można łatwo odpowiedzieć. Jeden rodzaj pracy jest lepiej objęty jedną kategorią pracowników, a drugi inną. Źle, jeśli ludziom przypisano niewłaściwe zadania ze względu na ich mentalność. Przypuszczam, że rozpoznanie tego problemu stanowi wyzwanie dla kierownika międzynarodowego zespołu. Nie jestem pewien, czy kiedykolwiek było to omawiane z aplikacjami dla branży IT.


źródło
1
Dzięki za anegdotyczne komentarze. Widzę, że styl ma duży wpływ i interesujące jest czytanie twoich komentarzy.
Jé Queue
Chociaż w twojej obserwacji Niemców jest jakaś prawda, musiałem ją -1, ponieważ wspominasz o ogromnych uogólnieniach (nie wszyscy Niemcy są tacy, jak je opisałeś - tak samo dla Rosjan, jak sądzę).
Jas
Boże, to brzmi jak tworzenie „klasycznych” i „romantycznych” koncepcji z książki „Zen i sztuka konserwacji motocykli” w dwóch całych populacjach! Niesamowity.
2

Nie jestem pewien jakości kodu, ale jest pewne, że każdy programista wykonuje swoją pracę inaczej.

Mówi się, że języki naturalne wpłynęły na nasze myślenie (więc przypuszczam, że wpłynęłoby to na programowanie), ta szkoła myślenia doprowadziła do opracowania sztucznych języków o różnych paradygmatach, próbując to udowodnić: na przykład Loglan . Nie wiem, czy wiele z tego wyszło.

Jestem jednak pewien, że edukacja (w której język odgrywa rolę, ale także inne rzeczy) z pewnością wpływa na punkt widzenia danego problemu.

Mam kolegów, którzy chodzili do szkół „technicznych” i uczą się podstaw języka C / C ++ w szkole, i mają techniczne podejście do problemów, podczas gdy ja mam tendencję do siedzenia i myślenia o tym (czasami na dobry czas) zanim poczuję, że mam wystarczająco głębokie zrozumienie, aby się do tego dostać ... a mimo to wychowaliśmy się w tym samym kraju (głównie), mówimy tym samym językiem i mamy mniej więcej tę samą kulturę (tylko inne wykształcenie).

Moje jedyne doświadczenie z „zagranicznymi” kolegami to Hiszpan (dwa lata temu) i Włoch (do dziś) i obaj pracują mniej więcej tak jak reszta zespołu (francuski). Być może gdybym miał spotkać się gdzieś z niełacińskiego pochodzenia, mógłbym zauważyć różnicę.

Jako taki nie jestem pewien, czy język jest główną przyczyną różnic w stylu. Myślę, że edukacja i charakter mogą mieć przynajmniej taki sam wpływ.

Matthieu M.
źródło
+1 za wskazanie, że indywidualność jest znacznie ważniejsza niż narodowość.
Jas
1

To nie jest język, ale jakieś kulturowe tło, „charakter narodowy”. Co wydaje się ogólnie działać (np. Anglicy są fajni, Niemcy są precyzyjni itp.), Ale zawodzi u poszczególnych osób.

W każdym razie od Ciebie zależy znalezienie systemu pomiarowego, wybieranie projektów z repozytoriów open source, sprawdzanie kodu i tworzenie statystyk.

Byłoby lepiej, gdybyś mógł zebrać inne atrybuty autorów: wiek, wykształcenie, przemysł itp.

ern0
źródło
Nie jestem pewien sensu niektórych z twoich wypowiedzi. Czy mówisz, że NIE wierzysz, że ojczysty język mówiony wpływa na podejście do rozwiązywania problemów w programowaniu?
Jé Queue,
1
Tak, nie wierzę, że język wpływa. Myślę, że „charakter narodowy” liczy się bardziej. I myślę, że ten „charakter narodowy” nie jest dobrym imieniem, „wpływy kulturowe” powinny być lepsze (a przynajmniej mniej wydaje się / są rasistowskie). Wystarczy pomyśleć o wiejskiej metropolii VS, jesteśmy po prostu z 40 lat komunizmu-koszmaru VS demokracja przez 200 lat.
ern0
Powiedział, że musisz brać WSZYSTKO, nie tylko semantykę języka z wyłączeniem wszystkiego innego. Głosuj za mężczyzną przynajmniej, aby przeciwdziałać ignorancji niektórych ludzi.
Filip Dupanović
+1. Mieszkam w Austrii, mówimy tu po niemiecku, ale typowy styl kodowania moich niemieckich współpracowników jest zupełnie inny niż moich austriackich współpracowników.
user281377 31.01.11
0

Język ojczysty nie wpływa na sposób kodowania. Jednak znajomość języka angielskiego jest jednak bardzo ważna, ponieważ większość książek o programowaniu, blogów, witryn zapewniania jakości, takich jak SO itp., Są zwykle w języku angielskim

Różnice kulturowe mogą jednak być czynnikiem. Uniwersytety w różnych krajach mogą nauczać z innego punktu widzenia. Niektóre kraje mogą mieć silniejszy ruch zwinny niż inne kraje. Na przykład japońskie fabryki są znane z produkcji Lean, którą wiele próbuje skopiować, ale zawodzą, ponieważ nie rozumieją podstawowych wartości podstawowych.

Pete
źródło
0

Myślę, że edukacja (mam na myśli raczej styl niż jakość) jest znacznie silniejszym czynnikiem. Nawet podstawowe matematyki (które wydawałoby się, że są dość uniwersalne) są nauczane na całym świecie na zupełnie inne sposoby, nie mówiąc już o czymś tak niematerialnym i niewyraźnym jak rozwiązywanie problemów.

Więc jeśli istnieje efekt językowy (w co osobiście wątpię, w oparciu o moje doświadczenia), jest on przyćmiony przez styl edukacji.

biziclop
źródło