一个人的母语会影响代码质量吗?


9

在语言学领域有一种流派,即问题的解决与自己的母语的语法,语义,语法和灵活性密切相关。

通过与各种国际开发团队的合作,我可以在代码库中清楚地看到一种精神文化(如果愿意的话)。除了编程语言外,德语编码与印度同事大不相同。同样,中美洲的代码与沿海美国的代码也有明显不同(实际上,IBM早在几年前就注意到了)。

您是否与国际同事(来自任何国家)注意到编码风格和问题解决与母语相符?


可能会有一些差异,但是我所知道的是每个国家都有糟糕的程序员。
ozz 2011年

您如何知道差异是由母语还是由文化背景造成的?
mouviciel 2011年

@mouviciel,这两者几乎是密不可分的,但是我奇怪地看到口语的语法驱动了编程语言的语义。我在下面的德语示例中仅举一例。我可以很清楚地看到,即使美国地区之间的编码风格也有所不同,尽管语言(如您所说)大致相似,应该更多地归因于文化差异。
JE队列

Answers:


5

到目前为止,根据我的经验,我已经注意到,与非本地人相比,我的本地国际同胞做过相同的工作。当他们试图解释概念或要求时就会出现问题。否则,我认为语法名称在您读懂它们的作用之前不会发挥太大作用。程序员一旦掌握了语法知识,就不会计算语法中所用单词的实际含义。


1
看,我发现将母语(和思维过程)翻译成另一种编程语言会产生不同的物质效果。不管哪种方法都不是好事,只是完全不同。我注意到很多堆/全局变量声明和数据准备,然后是德国人与美国人的程序调用集,而美国人倾向于在需要时内联或匿名使用变量/函数。最终结果=相同,只是方法不同。
JE队列

聪明的摘要+1最终结果=相同,只是方法不同
Zerotoinfinity 2010年

3

除了代码注释之外,我没有看到太多区别。有时我可以清楚地看出这是由母语不是英语的人写的。


6
我也是,缺少拼写错误是一个有力的线索。:)
biziclop 2011年

3

您是否与国际同事(来自任何国家)注意到编码风格和问题解决与母语相符?

绝对。这是一个很难的事实。但是,因果链比较复杂。

该地区,其生态系统,天气条件,动植物生活影响了当地文化宗教的发展。

文化和宗教影响了当地语言的形成和发展。

文化和语言在这个特定种族的社会模型上留下了印记。

社会模型定义了行为模型-生活方式,工作态度,社会关系,个人优先事项和价值观。那就是我们想要的部分。

不同文化背景的人们将着手解决其文化遗产带来的问题-他们如何思考,对工作抱什么态度,将采用何种方法论和解决问题的方式,确定的优先事项和价值观。


说到例子,我可以给你两个。如果我们把德国当做我现在居住的地方,我观察到了某些模式。

  1. 提前和长期计划一切都是生活的方式。可以提前数周和数月计划与朋友的晚会。年轻人已经对退休(保险等)感到担忧。情绪波动,即兴演奏,随时随地调整的意愿和能力都非常低。自然地,它被转移到工作方式中。计划和秩序起着重要作用。敏捷被认为是描述具有渐进思想的现代人/团队的独特特征。但是,我在德国团队中观察到的大多数敏捷过程似乎更像是对预定义步骤的机器执行(即使人们真的尝试敏捷),但是却没有敏捷精神。

  2. 一切的可预测性是生活的常态。人们已经习惯了会在何时何地发生什么事情。它从日常生活,工作风格一直延伸到人际关系。例如,当人们过马路时,您会看到它。他们等待绿灯,然后开始行驶,而不用看汽车是否真的停了下来,因为他们希望他们这样做。人们以能够控制生活的各个方面而感到自豪。然而,当生活因意外而倒退时,当事情变得无法控制时,人们就会有些发疯。如果转移到编程领域,我已经看到编码是相当乐观的,没有痴迷通过检查输入,外键来验证数据完整性等等。同样,也没有任何额外的工程设计可以使代码在一定程度上能够抵抗故障并适应将来的某些变化,从而满足当今的期望(他们相信不会改变)。

  3. 在这种文化中,省钱和优化支出极为重要。它反映在工作工件上。特性和质量确实符合计划,但不要突然超出它们(以使其变凉或只是“以防万一”)。游戏的另一面是不愿意投资于现代硬件和软件,重新设计工作代码,对其进行重构,使事情变得更好,只是为了与事物的当前状态保持一致,为未来做准备。由于没有立即获胜的机会,而且没有人为此付出任何代价,因此实际上没人会动容。

  4. 在这种文化中,企业家精神和创造力很低。不愿冒险冒险的人很高。工作成果很少带有不寻常,出乎意料,富有创造力的烙印。人们倾向于遵循行进路线,很少尝试或出于“好奇心”而进行了不寻常的设置。人们不喜欢主动权,特别是在承担责任时。我还听说德国人有时在荷兰着陆有些困难,因为那里的人们习惯于在没有严格指导的情况下独立工作。在编程方面,这意味着很少尝试使用新的语言,工具或库,因为担心更改,因此不采用新版本。人们会接受设计模式并盲目地应用它们,因为它们是在大学期间就被教导的,并且不质疑其适用性。

  5. 功能胜过时尚。在日常生活中可见。普通的城市风格,建筑物的设计,街道的装饰,都使其功能所需的最低限度降低,但通常仅是风格,美丽而已。从编程的角度来看,这是因为缺少漂亮的UI设计。大多数公司和个人网站都相当陈旧和无聊。您也不能说服老板和同事做些抛光,因为他们没有看到任何实际的好处。

  6. 复杂性和官僚主义是生活方式的一部分。人们将它进一步推广并应用到任何地方。人际关系。工作细节,决策和解决方案通常会产生多个工件,以记录所做的工作。编程代码通常带有不必要的元素,抽象级别和组成,因为人们认为这种方式更严重。KISS原则并不是很流行。

  7. “储蓄面子”似乎非常重要,要显得成功,而不要对其他任何人表现出软弱或失败的迹象(如果有的话,几乎可以肯定会被用来对付您)。在工作实践中,承认失败很难,人们竭尽所能不要丢脸。接受批评家也很难。批评某人(无论是否出于正当理由)是制造敌人的肯定方法。不能说出一个人的想法,这很难理解谁站在哪里。

底线是,执行者好,计划和进度排在最前,精度好。但是,创新和创造力是不期望的。


第二个例子涉及我所属的俄罗斯文化。完全不同。

  1. 进度和计划似乎没有特别的价值。除非/直到开始威胁更大的结果,否则微小的偏差不会引起人们的关注。人们不喜欢按计划生活,喜欢某种精神上的自由,喜欢做的事情以及在愿意时做的事情。在编程方面,他们可能会忽略诸如编写文档和进行文书工作之类的“非必要”。如果对项目感到无聊,不喜欢气氛等等,人们来去容易得多。生命的长期承诺是不可预期的,人们不想被束缚,不要期望他们会来一次直到退休。这在手机市场上很明显。在欧洲/美国,签订为期两年的合同无处不在,而在俄罗斯却没有这样做。人们不

  2. 人们不喜欢官僚主义,更喜欢非正式关系。只需完成这项工作,几乎没有书面工作,也没有尽可能多的讨论和会议。不喜欢代码的复杂性,首选简单的决策和直接的方式。无聊的惯例是不受欢迎的。一些“非必要”任务,例如注释和文档编制,可能会被忽略。人们可能会推迟某些无聊的工作,而做一些更有趣的事情,或者以意想不到的方式做无聊的工作,这会使他们保持动力。

  3. 成本不是那么重要。人们喜欢在没有商业案例的情况下获得更新,更酷,更有趣和更现代的东西。如果能提供满意的服务,他们通常不会对所产生的额外费用感到不安。

  4. 人们对一切都很热情。来自不同国家和文化的食物,音乐,衣服,文物和想法都敞开大门。出于编程好奇心的人会出于好奇而尝试新的语言,工具或库,无论是否有商业案例。各种不同的哲学和方法都以一种时髦的方式被高兴地采用,感动,咬伤,试验和混合在一起。

  5. 美丽和风格非常重要。人们会花更多的时间和金钱在没有任何实际好处,而仅能满足某种艺术意义的东西上。通常,他们更喜欢时尚的东西,而不是更实用的东西。美丽的UI设计受到高度赞赏。明智的编程人员会重新设计看上去笨拙且无结构的代码,只是为了向其添加更多样式,即使以前运行得很好,也要花更多的时间。

  6. 处方和规则经常被忽视甚至被鄙视,如果人们说服它会变得更好(或者更酷-无法抗拒),人们可能会做完全不同的事情。上面的许多决定都会受到质疑和争论。是的,每个人对所有事情都有强烈的意见。

  7. 生活的可预测性很低,因此人们总是为任何意外情况做好计划。相同的情况通常会反映在代码中,而是带有双重检查和后备计划的悲观态度。建筑可能反映了对未来可能发生的变化的准备,但并不反映宇航员般的过度架构。敏捷不是现代方法论,而是生活方式。人们也习惯于改变,而不是试图控制生活的各个方面。当发生意想不到的事情时,人们只是点头,说“下次会更好”,然后继续前进,不会精神,喝酒,吸毒等。项目失败不会导致自杀,这很容易被接受。

  8. 政治上的正确性很低,因此人们可能会在您不期望的时候先说出自己的想法。做好准备

一个不同的底线是,期望出乎意料之外的东西,一些不寻常且富有创造力的东西,但不期望机器的精度,时间表和遵循规则。


哪一个更好是无法轻易回答的。一种工作类型最好由一个工人类别覆盖,另一种则由另一种工人类别覆盖。如果人们为自己的心态分配了错误的任务,那就不好了。我认为国际团队经理要认识到这个问题是一个挑战。我不确定它是否曾与IT行业的应用程序进行过讨论。


1
感谢您的轶事评论。我认为样式影响很大,阅读您的评论很有趣。
JE队列

即使您对德国人的观察中有些道理,但我不得不将其设为-1,因为您所提到的这些过分笼统的概括(并非所有德国人都以您这样描述它们-我想俄罗斯人也是如此)。
Jas

天哪,这听起来像是《禅宗与摩托车维修艺术》一书中“经典”和“浪漫”概念的实例化,在两个人群中都有体现!惊人。

2

我不确定代码的质量,但是可以确定每个程序员的工作方式都是不同的。

有人说自然语言影响了我们的思维(所以我认为它将影响编程),这种思想流派导致了具有不同范式的人工语言的发展,试图证明这一点:例如Loglan。我不知道有什么收获。

但是我可以确定的是,教育(语言确实起着作用,而其他事情也起着作用)当然会影响一个人对特定问题的看法。

我有一些同事去过“技术”学校,并且在学校学习C / C ++的技巧,他们确实倾向于对问题进行技术处理,而我倾向于退缩,想一想(有时一段美好的时光)才使我对它有足够的了解...但是我们在同一个国家/地区(主要是在美国长大),说相同的语言,或多或少地拥有相同的文化(不同的教育背景)。

我与“外国”同事的唯一经历是西班牙人(两年前)和意大利人(至今),他们的工作或多或少都和团队其他成员(法国)一样。也许如果我是在非拉丁裔背景下遇到的某个地方,可以发现一个区别。

因此,我不确定语言是否是风格差异的主要原因。我认为教育和品格可能至少有同样的影响。


+1指出个性比国籍重要得多。
Jas

1

它不是语言,而是某种文化背景,即“民族特征”。这似乎在整体上起作用(例如,英国人很酷,德国人很精确等),但对个人而言却没有。

无论如何,由您决定测量系统,从开源存储库中选择项目,检查代码并进行一些统计。

如果可以收集作者的其他一些属性,那就更好了:年龄,学历,行业等。


我不确定您的某些陈述的重点。您是说您不相信母语会影响编程中的问题解决方法吗?
JE队列

1
是的,我认为语言不会影响。我认为“民族特征”更为重要。而且我认为,这个“民族特征”不是一个好名字,“文化影响力”应该更好(至少,种族主义似乎更少)。想到乡村VS大都市,我们刚经历了40年的共产主义噩梦VS民主200年来。
ern0 2010年

他说,您必须接受所有内容,而不仅仅是将语言语义排除在其他所有内容之外。支持这个人至少可以抵消一些人的无知。
2011年

+1。我住在奥地利,我们在这里说德语,但是我的德国同事的典型编码风格与我的奥地利同事的编码风格完全不同。
user281377 2011年

0

一个人的母语不会影响您的编码方式。但是,能够理解英语非常重要,因为大多数编程书籍,博客,质量检查网站(例如SO)等都倾向于英语。

但是,文化差异可能是一个因素。不同国家的大学可能会从不同的角度讲课。一些国家的敏捷运动可能比其他国家强。例如,日本工厂以精益生产而闻名,许多工厂都在试图模仿,但由于缺乏对基本价值的理解而失败。


0

我认为教育(我的意思是它的风格,而不是质量)是一个更重要的因素。即使是基础数学(人们会认为这是相当普遍的),在世界各地也以完全不同的方式进行讲授,更不用说像解决问题一样无形和模糊的东西了。

因此,如果存在语言效果(根据我的经验,我个人对此表示怀疑),那么它会被教育风格所掩盖。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.