写代码需要想象力吗?

摘要:程序员的想象力体现在什么地方?

65岁的扎哈·哈迪德(Zaha Hadid)是伊拉克裔英国女建筑师,被称为“建筑界女魔头”。她的作品包括德国的维特拉(Vitra)消防站和位于莱茵河畔威尔城的州园艺展览馆,英国伦敦格林威治千年穹隆上的头部环状带,以及美国辛辛那提的当代艺术中心等。中国首都北京地标建筑银河 SOHO 和广州歌剧院也是扎哈·哈迪德所创作。

扎哈·哈迪德

2016年3月的最后一个晚上,哈迪德在迈阿密的一家医院中因心脏疾病而去世。作为首位获得普利策克建筑奖的女性建筑师,哈迪德的逝世让人扼腕叹息:从这天起,建筑界会失去一些有趣的想象力了。

在同一天的 Build 大会上 Microsoft 宣布:今年的 Windows 10 年度更新将使得 Windows 10 系统能够无缝运行 Linux 二进制程序。

两件看似毫无关系的事件神奇地发生在了同一天,让人忍不住想到:写代码也需要想象力吗?代码界也会像设计界一样,因为一个人的离开而觉得失去了一些更大的想象空间吗?

前段时间人工智能爆红, AlphaGo 和李世石的人机大战在程序界掀起了一阵风雨。写出 AlphaGo 的哈萨比斯是想证明人工智能能打败人类吗?虽然这个问题饱受争议,但是起码证明了他的想象力。哈萨比斯说:“在国际象棋方面,电脑可以通过快速计算战胜人类。但围棋存在国际象棋所无法比拟的大量变数,在围棋博弈中,人的直观感受和洞察力可以发挥决定性作用。因此人们一直认为围棋是人工智能不可能战胜人类的领域,而我们正是想要挑战这种不可能。”

在 2015 React 欧洲大会上,Lee Byron 介绍了 Facebook 的 GraphQL ,会后他针对观众的问题谈到了「程序员的冒险文化」:在 Facebook ,我们不仅仅让,更是鼓励工程师做些好玩的「实验」。其实这些项目还是存在一定风险的,而且也不是很吸引人,也常常失败。然后你会发现像 React , ComponentKit , HHVM , GraphQL , Immutable.js , Flow , Pop 和 AsyncDisplayKit 这样的「实验」,这些都是值得去冒的险。他还说:我们敢去试错;我们相信工程师能去做正确的事。

除了对未来的事情保持「饥渴」,对于写代码这件事本身需要什么呢?

在程序员圈常被提及的一个高频词是「造轮子」,「造轮子」是重新创造一个已有的或是已被其他人优化的基本方法。很多开发者会被告知:Stop Trying to Reinvent the Wheel,然后大家会疑问,重复造轮子是否真的没有意义?

知乎男神 vczh 说:重复制造轮子和重复发明轮子是不一样的,发明是 researching ,制造是 engineering ,不能混为一谈。我们说,不要重复发明轮子,但是没有说,不要重复制造轮子。

是啊,用轮子其实也并非一件容易的事。首先我们需要有很强的检索能力,在快速检索到后我们还需要能准确而高效地判断项目的质量。所以事实是,很多时候为了项目的可靠性,还是需要自己制造轮子。

vczh 在微软实习转正面试中,有一轮的面试官考了他一道关于线索二叉树在线更新的问题,虽然已经过去了很久,但是轮子哥依然记得自己花了很长时间终于想到了一个正确的算法之后,时间就结束了并且根本来不及在白板上写代码。所幸后来他还是通过了面试,少数的几个名额里面终于被他拿走了一个。

对于未知的明天是每个程序员要去挑战的,而对于脑海中的轮子在一定情况下也是需要我们去构画和想象的。

我们想象我们怎样以最快的速度造出最 NB 的轮子; 我们想象如何让以现在的轮子造出更 NB 的项目; 我们想象我们是否可以有更大的可能性。

程序员这个群体从来都不是外界所想象的木讷与呆滞,他们有情有义有想象力。

每次和程序员聊天时问到关于想象力的问题,他们都会腼腆一笑「哈哈是想象要出的 Bug 吗」,然后又投入到紧张的代码事业中去。

曾经阳光下恣意奔跑的少年即使被磨平了棱角,也保持着对代码的坚定和热爱。简寻期待为每位优秀的开发者提供更合适的平台来发挥他们的想象力。

那些脱颖而出的校招简历,有何共同点 →
← 成都:“休闲之都” 的互联网突围之路