acm-header
登录

ACM通信

实践

与技术领袖的对话:Erik Meijer


埃里克·梅耶尔

图片来源:Annelies van t Hul Fotografie

回到顶部

世界上有聪明的人。然后是真的聪明的人。你知道我说的那些人,他们是如此令人印象深刻,以至于不管他们做什么(学术界、编程、工程或管理);你知道如果他们在做,那他们就做得很好。

在这篇文章中,我想和你们分享一些我最喜欢的工程和领导经验,这些经验来自我认识的最聪明的人之一:埃里克·梅耶尔。

无论你是一名领导者、一名程序员,还是只是一个渴望变得更好的人,我相信从我们的谈话中会有一些聪明的收获,将帮助你在你的角色中成长。哦,如果你读到最后,你会发现他最喜欢的面试问题是什么,看看你是否能通过他的测试。

什么样的品质能让一个人成为出色的工程师?

有一篇论文叫《谦逊的程序员》3.尽管它写于1972年,但这么多年过去了,它仍然非常有意义。在计算机的早期,编程被认为是解决谜题和优化计算过程——令人惊讶的是,当涉及到面试开发人员时,这些古老的想法仍然存在。我们今天的世界是非常复杂的,我们正在处理分布式系统,各种模型,神经网络,框架,新语言。我们没有足够的脑力去掌握每一个新的创新和想法。精神力量是我们最宝贵的资源。

其中一部分是能够利用抽象的力量专注于重要的,忽略不必要的细节。有时候细节很重要;其他时候则不然。我们不能绝对地谈论一切。与程序集代码相比,C语言是声明式的。但与晶体管和门相比,汇编代码是声明性的。开发人员需要认识到这些抽象级别。

一个好的工程师知道如何处理有漏洞的抽象,并能在需要时迅速上升一个层次或深入到更深的层次。但同样是这位工程师也必须接受你永远不可能理解一切。

我们需要问:“我们如何设计系统,让计算机为我们处理更多的工作?”例如,许多开发人员仍然以文本形式创建程序。我们用来操作程序的许多工具仍然过于原始,因为它们将代码视为字节序列。我们需要更加注意如何使用计算机来帮助我们完成工作。

《谦逊的程序员》一书的要点在于,你的智力是你最有限的资源,所以使用智能工具是一件好事。优秀的开发人员知道他们不能做所有的事情,他们知道如何利用工具作为大脑的修复器。

凯特的外卖如你应该阅读(或重读)“谦逊的程序员。”并且总是在寻找使用更智能的工具、智能系统和寻求帮助的方法。把你的精力集中在能带来最大收益的任务上。

什么样的品质能让一个人成为出色的工程经理?

首先,你必须有深厚的技术知识。但拥有自我意识、同理心和情商也很重要。你必须能够理解别人,你必须能够引导别人,打动别人。

在管理中,有一个沟通反馈循环。从一个方面来说,经理与他或她的报告互动需要情商。他或她必须知道是什么驱使对方获得最佳结果。一个伟大的经理会帮助人们把工作做到最好。


“一旦你陷入困境,不再强迫自己,你就完蛋了。”


循环的第二部分是向他们的经理汇报,这里最重要的技能是同理心。你必须理解他们想说什么,尽管你和你的报告之间有嘈杂的通道。

循环的每个方向都带来了不确定性。你可能听到了什么,但那不是说的话,反之亦然。作为经理,你的工作就是确保这种沟通是最优化的。你要确保反馈循环是一个良性循环——你对自己的报告理解得越透彻,你在这段关系中的同理心和情商就越高。

通过采用贝叶斯方法,你可以通过对听到的内容进行错误纠正来增加同理心,通过在交流中插入冗余来增加情商。你获得错误纠正和冗余的一种方法是通过同行反馈和360次评论来持续训练你的神经网络。

在你的脑海里,你创造了一个某人的模型。当某事发生时,你听到某事或观察某事;然后你就更新了你之前的假设。这就是你必须注意你的偏见的地方。一开始,你对一个人一无所知,但随着时间的推移,你的互动越多,你的模型中的不确定性就越小。

凯特的外卖反馈循环是一种思考互动和人际关系的有趣方式。如果您想了解类似主题的另一个视角,Erik写了一篇关于“响应式企业”的论文,讨论了组织环境中的这些循环。4

您希望所有软件工程师都读什么书?为什么?

如何赢得朋友和影响他人。1那本书给了你思考人际关系以及如何与他人互动的完整方法。它的写作方式让你站在别人的角度考虑教训。在这些情况下他们会怎么想或怎么感觉?你能做什么不同的事?

我把这本书的维基百科摘要打印出来,并把它粘在随身携带的笔记本上,以便随时做笔记。每隔两周,我就会重新阅读规则,让自己振作起来,做正确的事。

我推荐给管理者的书是斯坦福大学教授杰弗里•普费弗(Jeffrey Pfeffer)和罗伯特•萨顿(Robert Sutton)的著作,因为他们更注重证据。许多商业书籍都是关于人们所相信的东西,但几乎没有任何证据。

凯特的导读:是否是如何取胜...或者另一本书,找出你自己的规则,并定期回顾。如果没有某种外部刺激,我们大多数人都会退回到我们的默认模式,即社交尴尬的内向者,所以在你的记事本或笔记本内侧贴上一张纸是一个聪明的主意。

你收到过的最好的职业建议是什么?

当我获得博士学位后,在庆祝活动上,我的导师基斯·科斯特(Kees Koster)说,要关注理论与实践的交叉。没有摩擦就没有进步。

深入理论或直接进入实践很容易,但真正有趣的工作发生在理论和实践之间。试着理解双方。安全的地方是退到一个极端。

现在有如此多的在线课程,如此多的博客,如此多的白皮书,比以往任何时候都更容易跟上双方的速度。你可以订阅艾德里安·科尔耶的《晨报》2浏览ACM数字图书馆,阅读《实践研究》专栏acmqueue许多人正在使弥合差距变得更容易。回到“谦逊的程序员”,要明白你不可能跟上所有产生的知识。你不需要把你的手扔在空中说太多了,你必须磨练你的技巧。

凯特的导读:只做显而易见的事是远远不够的。你必须深入挖掘。把时间花在学习新事物上。试着每周或每月读一份白皮书。

你的团队流程是什么?工作是如何完成的?你如何沟通状态?

你读到的很多关于过程和敏捷的东西背后几乎没有证据。我不相信很多过程是科学的。相反,我定义了我希望看到发生的事情的一般准则,在这些准则中,我不关心事情是如何发生的。

我的想法有两个主要的灵感来源:军事和黑客的方式。

几千年来,军队已经知道如何在混乱和完全不可预测的环境中完成任务和实现目标。这也是我们作为开发者所处的环境。如果你读过美国海军陆战队作战手动,并替换字战争软件,里面的一切都是正确的。

那么如何处理不确定性呢?当人们试图用过程来解决问题时,他们是在试图对抗或控制不确定性。例如,有人会说,只要采用零收件箱,你的生活就会很棒。但在现实中,情况并非如此。

我喜欢Facebook的一点就是“黑客的方式”。6这是一种创建软件的方法,包括持续改进和反馈。它是关于计算思维的:你如何给系统编程,你如何让系统做那些没人认为是可能的事情?

敏捷就是沟通。这个过程需要随着情况的变化而变化。你必须对你想要达到的目标有一个大的蓝图,但是当你遇到第一个错误或发生一些超出你控制的事情时,任何计划或过程都将立即崩溃。

在大多数项目中有两个阶段:探索阶段和执行阶段。您的项目应该像衰减的正弦波一样进行,随着时间的推移,振幅会变小(参见附带的图)。你必须弄清楚要构建什么,弄清楚你想要回答什么问题。一开始你想增加垂直速度以控制不确定性,然后当你开始执行时你想增加水平速度。

在规范性过程中,人们在寻找解决问题的灵丹妙药,但它并不存在。这又回到了“谦逊的程序员”。这个世界超级混乱,你必须接受它并与之共事。

凯特的外卖你必须让你的过程为你工作。想象你的项目在一个阻尼正弦波上进行,首先专注于找到正确的问题,然后是答案。

谁是你工作过的最好的经理?是什么让这个人如此伟大?

威廉·亚当斯。他是我在微软的经理。他是一个鼓舞人心的人,我仍然试图在我的作品中模仿他。

我喜欢他的几个方面。其一是他所看到的多样性的重要性。例如,当处理反馈循环和先验假设时,你需要多样性来挑战你的思维。你必须积极投入精力去创造一个多样化的环境,所以你总是在挑战现状,也许还会重置你积累的状态。不要陷入局部最佳状态。

另一件事是,他总是把人放在第一位。你要创造一种环境,让每个人都能专注于自己的强项。总是为自己找到最好的工作。试着了解进度和环境,这样你就可以提前做好下一步的准备。例如,如果项目逐渐结束,要确保总是有新的想法。你必须确保管道已经建立,这样它们就不会阻碍创新。

凯特的导读:想想你身边的人。你是否有足够多的不同意见来阻止你的球队进入最佳状态?怎样才能获得更多的多样性?

即使是优秀的工程经理有时也会犯的常见错误是什么?

你的先验假设不是高阶的,也就是说,你没有对你的假设做假设。我继续读如何赢得朋友...因为我知道很容易回到我的默认行为。这是一件大事:你的工作永远不会结束。你永远不知道,你也不完美。总有东西要学。你必须跟上你的行业,不断学习。你必须不断督促自己变得更好。

一旦你陷入困境,不再强迫自己,你就完蛋了。

凯特的导读:想想你过去学到的一些教训。你需要复习什么?你想学什么新东西?

你最好的面试问题是什么?

给定泛型类型Cont r a = (a -> r) -> r,证明该类型形成单子。

如果你试图用暴力解决这个问题,你会失败的。但如果你从正确的抽象层面来看它,它是很容易的。所以它迫使你用自己的解决问题的能力来解决问题。

使用单子和类型的特殊公式听起来很理论化,但它是超级实用的。当您使用JavaScript为按钮单击编写事件处理程序时,您使用的是延续。它是上述所有事物在单一类型中的一个微观例子。

成为一个伟大的开发人员是很困难的。它需要不断的学习和对科技的热情。伟大的技术领导者也是如此。有很多聪明的教训,但也许最重要的是永远督促自己,聪明地利用你的脑力和精力(聪明地工作)。

ACM队列的q戳相关文章
queue.acm.org

精益软件开发:构建和发布两个版本
凯特Matsudaira
http://queue.acm.org/detail.cfm?id=2841311

这可能有用
泰勒McMullen
http://queue.acm.org/detail.cfm?id=2855183

与Erik Meijer和José Blakeley的对话
http://queue.acm.org/detail.cfm?id=1394137

回到顶部

参考文献

1.卡内基,D。如何赢得朋友和影响他人。西蒙和舒斯特尔,1936年。

2.《晨报》;https://blog.acolyer.org

3.Dijkstra, E.W.,谦逊的程序员。Commun。ACM 15, 10(1972年10月),859866;http://dl.acm.org/citation.cfm?id=361591

4.梅杰,E.,卡普尔,V.响应型企业。acmqueue 12, 10 (2014);http://queue.acm.org/detail.cfm?id=2685692

5.美国海军陆战队。作战, 1997;http://www.marines.mil/Portals/59/Publications/MCDP%201%20Warfighting.pdf

6.马克·扎克伯格致投资者的信:“黑客的方式。”《连线》杂志https://www.wired.com/2012/02/zuck-letter/

回到顶部

作者

埃里克·梅耶尔在过去的15年里一直致力于“云的民主化”。他在Haskell、c#、Visual Basic和Dart编程语言方面的工作以及对LINQ和Rx(响应式扩展)框架的贡献而闻名。

凯特Matsudairakatemats.com她是自己公司Popforms的创始人。此前,她曾在微软和亚马逊以及Decide、Moz和Delve Networks等初创公司工作。

回到顶部

数据

UF1数字阻尼正弦波。

回到顶部


版权由作者/所有者持有。授权ACM出版权利。

数字图书馆是由计算机协会出版的。版权所有©2017 ACM, Inc.


没有找到条目

登录全面访问
忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map