科幻作家海因莱茵对软件开发者的七点启示

  • 晁晓娟

2009 年 10 月 29 日

话题:敏捷重构架构文化 & 方法

Robert Heinlein(海因莱茵)并不是个程序员,但在他的写作生涯中,有一些经验给我们很多启示,对软件开发者无论是写代码还是职业生涯都有很大的帮助。因为写一个软件和写一个故事,很多都是相通的。

他们并不期望它很好,但想在周三就能完成。

作为一个作家,海因莱茵很好地理解了他的编辑们的期限要求。很多时候,最终期限是最重要的,把一件事情做的足够好往往不如按时间完成任务重要。对于追求完美的人,这往往是个难题。又快又好当然最理想,但是有时候比如在写代码完成功能的时候,按期完成的“快”比“好”更重要。在项目管理中也有同样的例子,客户不会因为你的团队要完善一些不影响使用的 Bug 而延长期限或增加成本的行为而感激你们。所以保证开发进度,达到质量要求是项目管理者要考虑的一个平衡点。

写作中你需要权衡的重要一点是去掉你手稿中的冗余会使它变得更好。

写作如此,好程序和好故事也一样,是精炼简洁的。好文章需要几易其稿,好软件也是通过不断的重构而逐步改善的。软件开发中让工作变得简单也是去掉冗余的一种表现,比如更多的团队从传统开发模式转向了敏捷,去掉了很多在开发中认为不重要或可有可无的冗余环节,使得团队开发更加高效。

一个人应该能够换尿布,策划战争,杀猪,开船,设计房子,写十四行诗,结算账户,砌墙,接脱臼的骨头,安慰濒死的人,服从命令,发布命令,携手合作,独立行动,解数学方程,分析新问题,铲粪,电脑编程,做出可口的饭,善打架,勇敢地死去。只有昆虫才专业化。

成为某个领域的专家还是所谓的全能博学大师?可能每个人都会遇到这个问题。作为专家可能更容易找到某个领域的工作,但是只在某一特定领域了解很深也是有潜在危险的。比如你一直从事某个古老的编程语言,对其无所不知,但当它被淘汰的时候,也是你失业的时候。所以你更需要找到一个深度和广度的平衡,才能持续提高自己的竞争力。

政治是个坏事同时又是个好事,因为它是武力解决问题的替代方式,而武力会导致有人受伤。

对于“办公室政治”,大部分人都很憎恨,包括海因莱茵,但是他认为政治并不是恶魔,是人类用打架以外来解决问题的一种方式。对于每一个人都可能遇到的办公室政治,这也许是值得学习的一种乐观的心态。

海因莱茵的一个处事哲学值得我们学习的是:理解人与人的不同。他说过的很经典的两句话是:

一个社会如果除掉了它所有的麻烦,那它离灭亡也不远了。” 以及 “我从一个总是附和我的人那里什么也学不到。” 

所以在我们的团队中,认识到人与人的不同,才能够更好的合作和沟通, 大家总是意见一致,表面看起来很好,但这往往隐藏着问题。就像如果两个合作者从没有争执和不同意见,那可能其实有一个人对合作是不必要的。

你的处女作肯定不是你最好的作品,但是要允许自己失败,只要你能从中有所收获。

这句话并不是海因莱茵说的,但是从他的第一本小说的经历可以得出这样的结论,他的第一个作品 For Us, the Living: A Comedy of Customs 写于上世纪 30 年代, 但在其去世之后几年才出版。

尽管这本书里很多故事都成为他后来的的其他小说的素材之一,但这也说明了他第一本书里试图写的内容太多了 。想想咱们自己的软件开发,产品设计是不是也犯过这样的错误呢,希望把所有的功能都支持,希望把所有对用户的展示都强调,结果用户往往迷失在太多的可选择中而放弃你的软件和产品。

另一方面,正是因为海因莱茵没有放弃,在他写了《For Us, the Living》 两年之后,他完成了《生命线》(The Lifeline),并且之后陆续获得了很多荣誉。所以即使是科幻大师,他也是需要不断学习和进步的。同样的,作为一个开发者,即使你还不是个伟大的程序员,但只要努力,总有一天会成为他们中的一员。


作者介绍:晁晓娟,从事 Web 开发管理多年,留过学,呆过外企,尝试过创业,关注项目管理,架构和产品,热爱天马行空的把所有的传统的非传统的 IDEA 搬到互联网上来。InfoQ 中文站内容团队,尤其是架构、SOA 和 Ruby 社区需要您的参与,有意者请邮件至editors【AT】cn.infoq.com

敏捷重构架构文化 & 方法