程序员要注重沟通能力的提升

12年前

你曾经在应聘一份编程工作的面试中被问及一些解谜类的问题吗?我反正碰到过。我被问到的那个问题是:

你最喜欢的那个牌子的苏打,有多少是在本省被消费的?

拜托,正确的答案不能是“关我什么事”,除非你不想得到这份工作了。我当时对这个问题毫无头绪,后来才知道这是一个“费米问题”(Fermi Question)。

译者注:恩里科·费米(Enrico Fermi),美籍意大利裔物理学家,曾经荣获1938年的诺贝尔物理学奖。他能够通过非常少量或者不精确的数据,来得到比较好的估计,费米问题或费米估算因此得名。一个经典的费米问题的例子是,“在芝加哥有多少位钢琴调琴师?”

谜题作为一种新生事物,在1990年代的程序员面试里风靡一时。这在《How Would YouMove Mount Fuji?》(如何移动富士山?)一书中有很好的记载,书中还强调微软公司在招聘过程中就使用了谜题。

如果你已经知道你将去应聘的公司会问这类谜题,预先研究一下常见的面试谜题是很明智的。如果你觉得你已经对一般的谜题很在行了,那我就要来考验你一下,看看下面这道史上最难的面试谜题吧:

这里省略N字...... 这里有很多谜题:http://www.cartalk.com/content/puzzlers/2011

换句话说,我讨厌谜题!(但愿那些谜题狂热者们都能解答出来……)意料之中,我没有通过那次面试。我当时很失望,因为那份工作还是挺酷的!

倒不是说我在“与程序员面谈”一节里给出的建议会更受欢迎,但我确实认为那要好得多!

在前一节,我给大家介绍了一种我自创的方法,那也是面试程序员最理想的方式:让候选人在你的团队面前就他们做过的某样东西做10分钟闲聊式的演讲。 你当然还可以用一些实际的需要动手的编程测试来作为补充,以确保那位候选人不是在招摇撞骗——尽管我坚信,如果你不是真的理解你正在谈论的东西的话,你是 不可能在一个技术性演讲里糊弄一群同仁的。(如果你真能这么糊弄,你现在应该已经成为一家创业公司的CEO了!)

我在这里要强调的是沟通能力。对于大部分程序员来说,在他们通过了“Fizz-Buzz”级别的能力测试之后,他们看起来已经相当不错了。但只会写代码还不够。如果想从优秀发展到卓越,你必须培养起有效沟通的能力:与你的同事沟通,与你的老板沟通,与用户沟通,最终与全世界沟通。

因为我们第一个小孩的出生,我和我的妻子在一家医院里待了5天。在住院期间,我们受到了很多名护士的协助——每天至少两名不同的护士,有时还会更 多,因为我们要去不同的科室就诊,而且护士每天还有换班。这家医院的护理质量总体来说是相当高的,但我们也为从最差的护士那里和最好的护士那里分别得到的 护理之间的差距倍感困惑。几天之后,我终于发现了一个共性——最差护士的沟通能力必定最差的!这些护士无法跟我们进行有效的沟通,比如:

  • 为什么她们需要做某事
  • 可选方案有哪些
  • 提供建议
  • 排解我们的问题

这让我们觉得,她们都是些死板的、只知道照章办事的人,她们不会照顾人,或者她们没有主见(必须不断地请示上级)。当然,事实不是这样的。我相信, 她们都是完全合格的专业护士。但在必要的沟通缺失的时候,她们确实看起来很糟糕!我还得说句公道话,这些护士常常(也不总是)不是本地人(她们的母语不是 英语)。

即使在最佳的条件下,招聘也不是件易事!但如果让面试流程太过依赖于谜题就太冒险了。当然,程序员们最终可能把你扔给他们的蹩脚谜题解决了(我猜他 们也许只是记住了答案)。但是,把那些解决方案有效地解释给团队中的其他人听,难道这不同样重要吗?对于很多程序员来说,那是谜题中最难的部分。

来自:http://blog.csdn.net/happydeer/article/details/8448943