可怜的作家会变成可怜的程序员吗?[关闭]


16

我正在阅读彼得·塞贝尔(Peter Seibel)的《工作中编码员》,很多时候都提到不能写的程序员通常会变成贫穷的程序员-道格拉斯·克罗克福德(Douglas Crockford),约书亚·布洛赫(Joshua Bloch),乔·阿姆斯特朗(Joe Armstrong),迪杰斯特拉(Dijkstra)声称只读了一半的书)。

您对此有何看法?无法用英语等自然语言表达自己的意见会妨碍编写好的代码吗?


9
我不了解程序员的技能,但是要想以程序员的身份出卖自己,在自由职业者的世界里,smart = sexy。因此,如果您能写(和说)好,那么您将被视为聪明的人,被视为开发者更值得信赖(尽管可能完全没有基础)。
Dan Rosenstark 2010年

用“不会写”表示您的语法不正确吗?这可能比之类的流动性差,等一个更大的问题
Maxpm

1
@Maxpm:也许,尽管语法正确,但也无法以书面形式传达其含义。
gablin

Answers:


30

编程要比“编写代码”更多。成为一名成功的程序员的很大一部分涉及沟通。能够与客户建立联系,了解他们的需求,将他们转化为技术领域,用代码表达他们,然后将结果解释给客户。

很难用书面表达清楚的程序员通常可能无法很好地交流,而那些对语言和写作有很好理解的程序员通常可以将这些技能转化为他们编写的代码。

我认为不能写得好,从而不能很好地沟通,将使一个优秀的程序员无法工作。

正如Jason Fried和David Heinemeier Hansson(来自37signals)在其《返工》一书中所说:

如果您想在几个人中决定一个职位,请雇用最好的作家。

成为一名优秀的作家不仅仅是写作。写得清楚是思想清晰的标志。伟大的作家知道如何交流。


2
是的,我想几乎每个人都同意,一个优秀的程序员的素质之一就是能够在代码中清晰表达自己的能力,因此这不会令我感到惊讶,因为在书面中清晰表达自己的能力与清晰表达自己的能力相关在您的代码中(反之亦然)。+1
n1ckp 2010年

2
我要第二。您需要进行交流-不仅是与机器交流。您周围的人和追随您的程序员都需要清晰的口头和书面交流。口语是因为您迟早需要与他人交谈,而书面原因是因为这就是您的代码和您的评论所在。
quick_now 2010年

我发现您的回答非常有趣!但是,当我回想起谁是与我一起工作,为我工作或为我工作的最好的程序员时,我发现其中许多人在编写方面很不好。但是,它们非常好。但是,我会牢记您的出色回答,并会在以后尝试。+1

16
  • 如果您不能很好地解释某些事情,那么您可能可能不太了解它。 成为一个聪明的人意味着您将与其他聪明的人一起工作,并且您将必须与他们进行有效的沟通。
  • 如果您的脑海中只有一个主意,那么您拥有的任何好主意都是无用的。
    能够有效地传达您的主意是理解力强的标志。这不仅适用于编程领域。

4

我认为,如果我们研究问题,我们将直接获得答案:

无法用英语等自然语言表达自己的意见会妨碍编写好的代码吗?

编写好的代码实际上意味着什么?

必须编写程序供人们阅读,并且只能偶然地使机器执行。
-Abelson&Sussman,计算机程序的结构和解释

这意味着用编程语言清晰,简洁,正确,优雅地表达自己。

用英语或编程语言熟练地表达自己的唯一区别是英语要宽容得多。


3

我认为这不是代码猴子的主要障碍(我假设以其母语表达自己的自我具有一定的基本水平/能力)。但是,我确实认为这很快就会成为主要障碍,因为您(开发人员)必须开始向非技术人员更好地阐明设计/架构/计划。根据我的经验,将事情传达给与我大致处于同一技术水平的其他人比较容易,并且所需要的(自然)语言技能要比向客户和/或经理明确表达的要少得多。同样,即使是技术性读者,因为主题变得不太具体,撰写(或谈论该主题)的人也必须表达清楚。


3

这取决于您所说的“好的代码”。

如果您的意思是代码行得通,那么与人之间的交流与与计算机之间的交流几乎没有任何关系。

如果您说的是行之有效的,可维护的并且清楚地表达了代码意图的代码,那么编写良好的代码与使用专门针对人类的语言进行写作之间绝对存在联系。

尽管您不需要具备成为出色的编写者来编写可理解的代码所需的所有不同技能,但是仍然必须包含一些要素,因为这两个要素都将被人类阅读。在某些方面,编写好的代码更加困难,因为它应该用代码描述意图,而不要使用在计算机执行时性能不好的构造。


2

关键是,编码也是一种沟通技巧。杰克·甘斯(Jack Ganssle)在他的Embedded Muse电子通讯中最近引用道格·阿伯特(Doug Abbott):

当您编写程序时,您真正要做的就是与另一个人交流您想要计算机执行的操作。编程是关于交流的,就像其他任何形式的写作一样。所以是的,计算机科学专业的学生应该有良好的写作能力。但是,由于计算机科学中的知识很少,因此他们可能只需要一些基本的创意写作课即可。

不懂散文的程序员也可能也不懂代码。

有关此有趣文章的更多信息:

写得不好反映出不良的编程技能吗?


2

这完全是轶事,但是:

我曾经与之合作过的最好的“摇滚明星”程序员是一位非常贫穷的作家。当我说“非常贫穷”时,我的意思是当您看到他的电子邮件时,碰到的类型就像他要么极度醉酒,要么几乎不识字。打字错误,缺乏标点符号,难以清晰表达想法以及常见的拼写错误(“他们/他们是”等)很多-有时几乎是令人发指的。阅读他的一些电子邮件-我会担心他直接通过电子邮件向客户发送电子邮件(我们在那家公司不需要这样做)-因为这会使公司看起来很糟糕!

尽管如此,他还是一位超级明星程序员。比平均水平高出一个数量级的生产率和接通率。

我不确定该怎么做。我已经和不同的人见过几次了。有些人似乎没有坐下来写东西的诀窍。通常,这似乎并不会影响他们在其他领域的才华(即使是相对看似相似的“知识型工作”才华,例如编程)。您可能会认为它可以连接,但是我看到了几个类似的生动示例,而实际上却没有。虽然我想这是很可能的,他们是“ 例外谁证明规则 ” -我可能只是从来没有想过要注意到坏的作家谁是不是程序员,和良好的作家谁


3
规则总是有例外。我也与一些杰出的人一起工作过,他们从来不让客户接近,因为他们会被制成肉馅。我花了很长时间来纠正打字错误,等等。但是给他们一个技术问题,洞察力和解决方案的闪光令人惊奇。这一切都表明,这里的答案是概括。但是,概括适用于大多数人。
quick_now 2010年

3
@quickly_now:我想知道(由于您未指定)他们的代码如何读取。他们可能是非常聪明和好的问题解决者,但是如果他们的代码不可读,那么如果您希望我的意见不是那么出色的程序员。
n1ckp 2010年

@ n1ck:既然您提到了,我在想的那个人不太擅长记录他的代码。该代码本身很好并且设计得很好,但是他没有对本质上复杂的代码进行注释,这意味着维护起来比应该的要难。没想到。:)
Bobby Tables 2010年

我同意@ n1ckp。我也敢打赌,他为变量/方法/类选择的名称有时会变得晦涩难懂。对于具有极高生产率的程序员,我往往会非常警惕,因为这通常是以牺牲一点额外时间来改善长期可维护性为代价的。
幻灭了

2

如果他们写的不好,他们怎么能说服他们他们是优秀的程序员?


0

不能精确表达系统组织或想法的人能够通过编写(非常)笨拙的计算机正确解释的代码来编写精确的指令吗?


但是,如果您的代码编写不正确,则会从计算机获得非常清晰,即时的反馈循环。我怀疑您的英语写得很差,甚至很少被告知,更不用说您需要改进的反馈了。
Carson63000

即使使用编译器,您也必须学会清楚和正确,因为如果不这样做,您最终甚至都不会编译任何东西。
克莱姆(Klaim)2010年

0

我认为对于程序员而言,无论是口语还是书面语言,都能保持良好的沟通非常重要。将一个想法转换成单词的能力是编写代码的前提。

无论是与计算机通信还是与人交流,我们都必须按照语法规则将单词排列成有意义的顺序。我们必须正确地发音或正确拼写这些单词,以便对话的另一端能够理解它们。计算机将抛出语法错误,同事要么说“什么?” 或打折那些被认为是疯狂的胡言乱语或更糟的话,那是一种令人分心的烦恼。

我强烈劝阻应聘者,因为他们无法完成想法或停留在某个主题上。无论如何,一个人还是被我们的老板雇用的,结果证明他无法按时完成简单的任务,因为他对明亮的,有光泽的新技术或玩具引起了关注。

因此,是的,程序员必须能够良好地沟通很重要。如果他们无法与人进行有效的交流,他们将无法通过计算机进行交流。


0

穷作家变成穷作家,仅此而已。写作技巧差并不意味着他们根本无法交流,但他们不能很好地表达或表达。当然,任何人都可以说沟通技巧在公司中很重要,而且如此等等,但这并不意味着沟通技巧较差的程序员不能很好地完成工作。编程和写作是艺术,但完全不同。写作是关于如何使其他人理解您在说什么和/或采取相应的行动,但是编程并不能使计算机理解您的要求,因为没有计算机可以理解任何用户要求(至少在距现在的IMO 100年之内)。编程是关于如何将需求转换为编程语言的,这就是为什么写作技巧没有那么相关的原因。


1
程序员的部分工作是在代码(和注释)中清楚地表达自己的观点,以便不仅是计算机,而且其他人也可以读取代码。这些技能是相关的(但尚未证明AFAIK)。
n1ckp 2010年

0

绝对不!

一个好的作家只不过是一个好的作家。请一个好的作家向非技术人员描述数据库的概念。您认为您会得到什么...?

一个好的作家,写道。一个好的程序员会写出好的代码。

  • 开发后六个月其他人可以阅读的代码。
  • 当系统发生故障且调试正在进行时,在上午2:00 AM有意义的代码。
  • 其他人喜欢借用的代码,因为他们了解并可以轻松修改它
  • 适用于24/7 365的代码

我打算继续下去,但我宁愿花时间回答其他帖子。我几乎认为你们知道我在这个问题上的立场。


1
我认为要点1,2和3除了要成为一名优秀的程序员外,还需要一个成为一名优秀的作家。本质上,您正在考虑将良好的写作技巧视为内在特质。
Mamta D
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.