모국어가 코드 품질에 영향을 줍니까?


9

언어학에는 문제 해결이 자신의 모국어의 구문, 의미, 문법 및 유연성과 매우 밀접한 관련이 있다고 생각하는 학교가 있습니다.

다양한 국제 개발 팀과 함께 일하면서 코드베이스에서 정신 문화 (당신이 원한다면)를 분명히 볼 수 있습니다. 프로그래밍 언어 외에도 독일 코딩은 인도의 동료 들과는 상당히 다릅니다. 또한 연안 아메리카와 마찬가지로 중동 지역에서도 코드가 분명히 다릅니다 (실제로 IBM은 몇 년 전에 주목했습니다).

코딩 스타일과 문제 해결이 모국어와 일치한다는 것을 모든 국가의 해외 동료들과 알 수 있습니까?


약간의 차이가있을 수 있지만, 내가 아는 것은 모든 국가의 나쁜 프로그래머가 있다는 것입니다.
ozz

차이가 모국어 또는 문화적 배경에 의한 것인지 어떻게 알 수 있습니까?
mouviciel

@mouviciel,이 둘은 대부분 분리 할 수 ​​없지만, 나는 언어 의 구문 이 프로그래밍 언어 의 의미론 을 주도한다는 것을 일화 적으로 본다 . 내 의견에서 아래의 독일 예는 단 하나입니다. 문화적 차이로 인해 훨씬 ​​더 많은 언어가 언급 되었음에도 불구하고 미국 지역에서도 코딩 스타일의 차이를 분명히 알 수 있습니다.
Jé Queue

답변:


5

지금까지 내 경험에 비추어 본국의 국제 친구가 비 원어민과 같은 일을하고 있음을 알게되었습니다. 그들이 개념이나 요구 사항을 설명하려고 할 때 문제가 발생합니다. 그렇지 않으면 구문 이름이 어떤 역할을하는지 읽을 때까지 구문 이름이 큰 역할을하지 않는다고 가정합니다. 프로그래머가 구문에 대한 지식을 습득하면 구문에 사용 된 단어의 실제 의미가 무엇인지 계산하지 않습니다.


1
참조, 나는 모국어 (및 사고 과정)를 다른 프로그래밍 언어로 번역하는 것이 다른 물질적 결과를 가지고 있음을 발견했다. 어느 쪽이든 좋고 나쁘지 않습니다. 나는 힙 / 전역 변수 선언과 데이터 준비 및 많은 참고 한 후 독일로 프로 시저 호출 세트를, 대 필요에 따라 경향 미국인들은 익명으로 고용 변수 / 함수를 인라인하거나. 최종 결과는 동일하지만 다른 접근 방식입니다.
Jé Queue

스마트 요약의 경우 +1 최종 결과 = 동일, 다른 접근 방식
Zerotoinfinity

3

코드 주석 이외의 다른 점은 보지 못했습니다 . 때때로 나는이 비트가 모국어가 영어가 아닌 사람에 의해 쓰여졌다는 것을 분명히 알 수 있습니다.


6
나도 철자 실수가 없다는 것이 강력한 단서입니다. :)
biziclop

3

코딩 스타일과 문제 해결이 모국어와 일치한다는 것을 모든 국가의 해외 동료들과 알 수 있습니까?

물론. 이것은 어려운 사실입니다. 그러나 원인-효과 체인은 더 ​​복잡합니다.

지역, 생태계, 기상 조건, 식물 및 동물의 삶은 지역 문화 종교의 발전에 영향을 미쳤습니다.

문화와 종교는 현지 언어의 형성과 발달에 영향을 미쳤습니다.

문화와 언어는이 특정 민족 집단의 사회 모델에 그 표를 남겼습니다.

사회 모델은 행동 양식-라이프 스타일, 업무 태도, 사회적 관계, 우선 순위 및 개인의 가치를 정의했습니다. 그것이 우리가 원하는 부분입니다.

문화가 다른 사람들은 문화 유산의 수하물로 문제를 해결하는 방법, 문화에 대한 생각, 직업에 대한 태도, 적용 할 방법론 및 문제 해결 패턴, 우선 순위 및 가치 설정 등을 다룰 것입니다.


예를 들어 두 가지를 줄 수 있습니다. 우리가 현재 거주하는 곳을 독일로 데려 가면 관찰 한 패턴이 있습니다.

  1. 모든 것을 미리 계획하고 장기적으로 계획하는 것이 삶의 방식입니다. 친구들과 저녁 모임은 몇 주와 몇 달 전에 미리 계획 할 수 있습니다. 젊은이들은 이미 퇴직 (보험 등)에 대해 걱정하고 있습니다. 기분 변화, 즉흥, 의지 및 이동 중에 조절할 수있는 능력이 매우 낮습니다. 당연히 그것은 작업 방식으로 옮겨집니다. 계획과 질서가 큰 역할을합니다. 민첩한 태도는 진보적 인 사고를하는 현대인 / 팀을 묘사하는 탁월한 특성으로 간주됩니다. 그러나 독일 팀에서 관찰 한 대부분의 민첩한 프로세스는 사전 정의 된 단계의 머신 실행과 비슷해 보이지만 (사람이 실제로 민첩 해 지려고하더라도) 민첩한 정신은 없습니다.

  2. 모든 것의 예측 가능성은 인생의 표준입니다. 사람들은 언제 어디서 어떻게 될지 아는 데 익숙합니다. 그것은 일상 생활에서 업무 스타일을 넘어 개인 관계까지 확장됩니다. 예를 들어 사람들이 길을 건너면 볼 수 있습니다. 그들은 녹색 빛을 기다리고 차가 실제로 멈추었는지 보지 않고 움직이기 시작합니다. 사람들은 자신의 삶의 모든 측면을 통제 할 수 있다는 것에 자부심을 가지고 있습니다. 그러나 인생이 예상치 못한 무언가로 되 찾을 때, 상황이 통제에서 벗어날 때 사람들은 일종의 괴물입니다. 프로그래밍에 전송하면 나는 오히려 낙관적 더 수행되지 않습니다 코딩 것을 본 적이 강박 관념을데이터 무결성을 확인하기 위해 입력, 외래 키 확인 등이 있습니다. 또한 코드를 어느 정도까지는 실패에 대해 탄력적으로 유지하고 미래의 특정 변화에 적응할 수 있도록하는 추가적인 엔지니어링은 없습니다.

  3. 문화에서 돈을 절약하고 지출을 최적화하는 것이 매우 중요합니다. 작업 아티팩트에 반영됩니다. 특성과 품질은 계획과 일치하지만 갑작스럽게 초과하지는 않습니다 (시원하게 또는 "경우에 따라"). 게임의 또 다른 측면은 현대 하드웨어 및 소프트웨어에 투자하고, 작업 코드를 리엔지니어링하고, 리팩토링하고, 현재 상태에 맞게 유지하고 미래를 대비하기 위해 더 나은 것을 만들기 위해 기꺼이하는 것입니다. 즉각적인 승리가없고 아무도 변경에 대한 비용을 지불하지 않기 때문에 실제로 아무도 움직이지 않을 것입니다.

  4. 기업가 정신과 창의성은 문화에서 다소 낮습니다. 자신의 계정으로 위험을 감수 할 의사가 없습니다. 작업 결과는 비정상적이고 예상치 못한 창의적인 결과를 거의 나타내지 않습니다. 사람들은 지나친 길, 작은 실험 또는 "호기심에서 벗어난"특이한 설정을 따르는 경향이 있습니다. 사람들은 특히 책임과 짝을 이룰 때 자신의 손에 주도권을 행사하는 것을 좋아하지 않습니다. 또한 네덜란드에 상륙하는 독일인들은 엄격한지도없이 독립적으로 일하는 데 익숙한 사람들로 인해 때때로 어려움을 겪는다고 들었습니다. 프로그래밍 측면에서는 새로운 언어, 도구 또는 라이브러리를 거의 실험하지 않으며 새로운 버전은 변경에 대한 두려움으로 채택되지 않습니다. 사람들은 디자인 패턴을 취하여 대학교에서 가르치고 적용 가능성에 의문을 제기하지 않기 때문에 맹목적으로 적용합니다.

  5. 패션 이상의 기능. 일상 생활에서 볼 수 있습니다. 일반적인 도시 스타일, 건물 디자인, 거리 장식은 모두 기능을 수행하는 데 필요한 최소 수준이지만 일반적으로 스타일, 아름다움에만 해당되는 것은 없습니다. 프로그래밍 방식에서는 UI 디자인이 부족한 것으로 보입니다. 대부분의 회사 및 개인 사이트는 다소 구식이며 지루합니다. 또한 상사와 동료들이 확실한 혜택을 볼 수 없기 때문에 연마를하도록 설득 할 수 없습니다.

  6. 복잡성과 관료주의는 라이프 스타일의 일부입니다. 사람들은 더 나아가서 어디에서나 적용됩니다. 개인적인 관계. 작업 세부 사항, 의사 결정 및 솔루션은 종종 수행 된 작업을 문서화하기 위해 여러 아티팩트를 발생시킵니다. 프로그래밍 코드는 종종 사람들에게 더 심각한 것처럼 보이기 때문에 불필요한 요소, 추상화 수준 및 구성으로 나타납니다. KISS 원칙은 실제로 인기가 없습니다.

  7. "얼굴을 구하는 것"은 매우 중요하고, 성공한 것처럼 보이고, 다른 사람에게 약점이나 실패의 징후를 보이지 않는 것 같습니다 (거의 확실하게 당신에게 불리하게 사용될 경우). 실무에서 실패를 인정하는 것은 다소 어려운 일이며, 사람들은 "얼굴을 잃지"않기 위해 모든 것을합니다. 비평가를받는 것도 어렵다. 누군가를 비난하는 것은 (좋은 이유가 있든 없든) 적을 만드는 확실한 방법입니다. 사람이 생각하는 것을 말하지 않으면 누가 어디에 서 있는지 이해하기가 어렵습니다.

결론은 좋은 집행자, 계획 및 일정 최고, 정밀도가 좋습니다. 그러나 혁신과 창의성은 기대되지 않습니다.


두 번째 예는 내가 속한 러시아 문화를 다루고 있습니다. 상당히 다릅니다.

  1. 일정과 계획은 특별한 가치가없는 것 같습니다. 더 큰 결과를 위협하기 시작할 때까지 / 또는 사소한 편차는 사람들과 관련이 없습니다. 사람들은 계획에 따라 생활하는 것을 좋아하지 않으며, 정신적 자유를 선호하며, 마음에 드는 것을 행동하고 싶을 때 무엇이든합니다. 프로그래밍 방식으로 문서 작성 및 문서 작업과 같은 "필수 사항"을 무시할 수 있습니다. 사람들이 프로젝트에 지루하고 대기를 싫어하는 등의 일이 훨씬 쉬워집니다. 일생에 대한 장기적인 헌신은 기대되어서는 안되며, 사람들은 구속되기를 원치 않으며 한 번 와서 은퇴 할 때까지 머무르기를 기대하지 않습니다. 이것은 휴대폰 시장에서 잘 보입니다. 유럽 ​​/ 미국에서는 2 년 동안 계약을하는 것이 어디에나 있지만 러시아에서는 이것이 시행되지 않습니다. 사람들은

  2. 사람들은 관료주의를 싫어하고 비공식적 인 관계를 선호합니다. 종이 작업이 거의 없거나, 가능한 한 적은 토론과 회의만으로 간단하게 작업을 수행 할 수 있습니다. 코드의 복잡성은 마음에 들지 않으며 간단한 결정과 직접적인 방법이 선호됩니다. 지루한 일상은 바람직하지 않습니다. 주석 달기 및 문서와 같은 일부 "필수"작업은 무시 될 수 있습니다. 사람들은 특정 지루한 물건을 벗고 대신 더 흥미로운 일을하거나 예상치 못한 방식으로 지루한 부분을 만들어 동기를 유지할 수 있습니다.

  3. 비용은 그렇게 중요하지 않습니다. 사람들은 비즈니스 사례없이 더 새롭고 시원하며 더 흥미롭고 현대적인 것을 원합니다. 그것이 만족을 제공한다면, 그들은 일반적으로 발생하는 추가 비용에 대해 불안해하지 않을 것입니다.

  4. 사람들은 모든 것에 대해 매우 열성적입니다. 다른 나라와 문화의 음식, 음악, 옷, 유물 및 아이디어는 열린 문을 통과합니다. 프로그래밍에 능숙한 사람들은 호기심, 비즈니스 사례 또는없는 새로운 언어, 도구 또는 라이브러리를 실험 할 것입니다. 서로 다른 철학과 방법론은 모두 기뻐하고, 만지고, 물고, 실험되고, 펑키 한 방식으로 함께 혼합됩니다.

  5. 아름다움과 스타일이 매우 중요합니다. 사람들은 실질적인 이점은 없지만 예술적인 의미 만 만족시키는 것에 시간과 돈을 더 소비 할 것입니다. 종종 그들은 더 기능적인 것보다 세련된 것을 선호합니다. 아름다운 UI 디자인은 높이 평가됩니다. 프로그래밍에 능숙한 사람들은 완벽하게 작동하더라도 더 많은 스타일을 추가하기 위해 서툴고 구조화되지 않은 것처럼 보이는 코드를 리엔지니어링하여 추가 시간을 소비했습니다.

  6. 처방전과 규칙은 종종 무시되고 무시 당하기도합니다. 사람들이 더 나아질 것이라고 설득되면 (또는 더 시원 할 수 있습니다) 완전히 다른 일을 할 수도 있습니다. 위에서 많은 결정들이 의문을 제기하고 논의 될 것이다. 그렇습니다. 모두가 모든 것에 대해 강한 의견을 가지고 있습니다.

  7. 삶의 예측 가능성은 매우 낮으므로 사람들은 항상 어떤 비상 사태에 대해서도 계획합니다. 이중 점검과 대체 계획을 통해 비관적 인 태도보다는 코드에 종종 반영됩니다. 아키텍처는 미래의 가능한 변경 사항에 대한 준비를 반영 할 수 있지만 우주 비행사와 같은 오버 아키텍처는 아닙니다. 민첩성은 현대적인 방법론이 아니라 삶의 방식입니다. 또한 사람들은 변화에 익숙하며 삶의 모든 측면을 통제하려고 시도하지 않습니다. 예상치 못한 일이 발생하면 사람들은 그냥 고개를 끄덕이며 "다음 번에 나아질 것"이라고 말하고 정신을 가지지 않고 술을 마시고 마약을 시작합니다. 프로젝트 실패는 자살로 이어지지 않습니다.

  8. 정치적 정확성은 낮기 때문에 사람들은 당신이 그것을 기대하지 않을 때 미리 생각하는 것을 말할 수 있습니다. 준비하십시오.

다른 결론은 예상치 못한 비정상적이고 독창적 인 것을 기대하지만 기계 정밀도, 일정 및 규칙을 준수하지는 않는다는 것입니다.


어느 쪽이 좋을지는 쉽게 대답 할 수 없습니다. 한 작업 유형은 한 작업자 범주로 더 잘 커버되고 다른 작업 유형은 다른 작업자 범주로 더 잘 커버됩니다. 사람들이 자신의 사고 방식에 대해 잘못된 임무를 부여 받으면 나빠집니다. 국제 팀 관리자가 그 문제를 인식하는 것은 어려운 일이라고 생각합니다. IT 산업에 대한 응용 프로그램과 논의 된 적이 있는지 확실하지 않습니다.


1
일화적인 의견에 감사드립니다. 스타일에 많은 영향을 미쳤으며 의견을 읽는 것이 흥미로 웠습니다.
Jé Queue

비록 독일인에 대한 당신의 관찰에는 약간의 진실이 있지만, 이것은 당신이 언급하고있는 방대한 과장이기 때문에 -1해야했습니다.
Jas

이 책은 "Zen and Art of Motorcycle Maintenance"책에서 "Classic"과 "Romantic"개념을 두 집단으로 인스턴스화 한 것 같습니다. 놀랄 만한.

2

코드 품질은 확실하지 않지만 각 프로그래머가 다른 방식으로 작업을 수행해야합니다.

자연 언어가 우리의 사고에 영향을 미쳤다고 말했기 때문에 (프로그래밍에 영향을 줄 것이라고 생각합니다),이 사고 학교는 그것을 증명하려는 시도에서 다른 패러다임을 가진 인공 언어의 개발을 이끌어 냈습니다 : 예를 들어 Loglan . 많은 것이 나왔는지 모르겠습니다.

그러나 내가 확신하는 것은 (언어가 일부 역할을하지만 다른 것들도 그 역할을하는) 교육은 전적으로 문제에 대한 자신의 관점에 영향을 미친다는 것입니다.

저는 "기술적 인"학교에 다니고 학교에 다니면서 C / C ++의 장을 배우는 동료가 있으며, 문제에 대한 기술적 접근 방식을 취하는 경향이 있지만, 앉는 경향이 있습니다. 나는 그것을 이해하기에 충분한 이해를 갖기 전에 좋은 시간을 보낸다. 그러나 우리는 같은 나라에서 자랐고 (대부분) 같은 언어를 사용하며 같은 문화를 가지고있다. 다른 교육 배경).

"외국인"동료들과의 나의 유일한 경험은 스페인어 (2 년 전)와 이탈리아어 (오늘까지)였으며, 그들은 팀의 다른 팀 (프랑스어)과 거의 비슷하게 일했습니다. 어쩌면 내가 라틴어가 아닌 배경에서 어딘가에 직면하면 차이를 발견 할 수 있습니다.

따라서 언어가 스타일 차이의 주요 원인인지 확실하지 않습니다. 나는 교육과 성격이 적어도 많은 영향을 미칠 수 있다고 생각합니다.


개성이 국적보다 훨씬 중요하다는 점을 지적한 +1.
Jas

1

그것은 언어가 아니라 일종의 문화적 배경 인 "국가적 성격"입니다. 전체적으로 효과가있는 것 같습니다 (예 : 영국인은 시원하고 독일인은 정확함). 개인에게는 실패합니다.

어쨌든 측정 시스템을 찾고, 오픈 소스 리포지토리에서 프로젝트를 선택하고, 코드를 검사하고, 통계를 작성하는 것은 전적으로 사용자의 몫입니다.

나이, 교육, 산업 등 저자의 다른 속성을 수집 할 수 있다면 더 좋습니다.


나는 당신의 진술 중 일부가 확실하지 않습니다. 모국어가 프로그래밍의 문제 해결 방식에 영향을 미친다고 생각하지 않습니까?
Jé Queue

1
그래, 나는 언어가 영향을 미친다고 믿지 않는다. "국가적 성격"이 더 중요하다고 생각합니다. 그리고 저는이 "국가적 성격"이 좋은 이름이 아니라고 생각합니다. "문화적 영향"은 더 좋을 것입니다. 빌리지 VS 대도시를 생각해 보면, 우리는 40 년 동안의 커뮤니티의 악몽 VS 200 년 동안의 민주주의입니다.
ern0

그는 다른 모든 것을 배제 할 때 언어 의미 만이 아니라 모든 것을 받아 들여야한다고 말했다. 최소한 어떤 사람들의 무지에 대항하기 위해 그 남자를 옹호하십시오.
Filip Dupanović

+1. 저는 오스트리아에 살고 있는데 여기서 독일어를 사용하지만 독일 동료의 전형적인 코딩 스타일은 오스트리아 동료의 스타일과 근본적으로 다릅니다.
user281377

0

모국어는 코딩 방법에 영향을 미치지 않습니다. 그러나 대부분의 프로그래밍 서적, 블로그, SO 등의 QA 사이트는 영어로되어 있기 때문에 영어를 이해하는 것은 매우 중요합니다.

그러나 문화적 차이가 요인 일 수 있습니다. 다른 나라의 대학들은 다른 관점에서 가르 칠 수 있습니다. 일부 국가는 다른 국가보다 민첩한 움직임을 보일 수 있습니다. 예를 들어, 일본 공장은 린 (Lean) 제조로 유명하며, 많은 사람들이 복사하려고하지만 기본 기본 가치에 대한 이해가 부족하기 때문에 실패합니다.


0

저는 교육 (품질보다는 교육의 스타일을 의미)이 훨씬 더 강력한 요소라고 생각합니다. 기본적인 수학 (공식적으로 보편적이라고 생각되는 것)조차도 문제 해결과 같은 무형의 것과 모호한 것을 제외하고는 전 세계에서 완전히 다른 방식으로 진행됩니다.

따라서 (내 경험에 근거하여 개인적으로 의심하는) 언어 효과가 있다면, 그것은 교육 스타일에 의해 가려집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.