InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 晁晓娟 发布于 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

晁晓娟 从事Web开发管理多年,留过学,呆过外企,尝试过创业,关注项目管理,架构和产品。

发表人 Ma Karl 发表于
Re: 乱 发表人 张 成 发表于
有那么点意思 发表人 Chou Jedi 发表于
通常翻译为海因莱因 发表人 Wizard Bran 发表于
Re: 通常翻译为海因莱因 发表人 晁 晓娟 发表于
Re: 通常翻译为海因莱因 发表人 峻申 吴 发表于
君子群而不党,合而不同 发表人 Lai Mead 发表于
其实搜索下海因莱因的英文名字就知道该怎么翻译了 发表人 纪 雷 发表于
写得很好啊 发表人 沈 瓒 发表于
看这样的文章很有意思 发表人 陈 国栋 发表于
支持,写得很好! 发表人 朱 敏 发表于
有点意思:) 发表人 Wang Carl 发表于
无聊 发表人 aoch ant 发表于
文章很牵强 发表人 宇捷 蒋 发表于
很好呀 发表人 F Tiger 发表于
写得很不错! 发表人 zhang hailong 发表于
  1. 返回顶部

    发表人 Ma Karl

    文章写得乱七八糟,毫无条理。

  2. 返回顶部

    有那么点意思

    发表人 Chou Jedi

    有那么点意思哈!可能是随手拈来的“产出”,可能上面的同志不太认同,俺倒觉着可以。对办公室政治的理解很好玩,“办公室战斗”总比纳布议员的“激烈的争吵”要好很多。

  3. 返回顶部

    通常翻译为海因莱因

    发表人 Wizard Bran

    电影星河战队就是根据他的原著改编的

  4. 返回顶部

    Re: 乱

    发表人 张 成

    果然是“天马行空”啊

  5. 返回顶部

    其实搜索下海因莱因的英文名字就知道该怎么翻译了

    发表人 纪 雷

    这是今天看到最好笑的文章

  6. 返回顶部

    写得很好啊

    发表人 沈 瓒

    我觉得写得很好啊,每一条我都有体会,除了这一句:
    “一个社会如果除掉了它所有的麻烦,那它离灭亡也不远了”
    思考ing...

  7. 返回顶部

    看这样的文章很有意思

    发表人 陈 国栋

    比起看纯技术或者项目管理的文章要有趣得多。多谢作者为我们创作带有文学色彩与哲理的技术好文。

  8. 返回顶部

    Re: 通常翻译为海因莱因

    发表人 晁 晓娟

    嗯,多谢指正,已经改啦!

  9. 返回顶部

    支持,写得很好!

    发表人 朱 敏

    支持,写得很好!

  10. 返回顶部

    Re: 通常翻译为海因莱因

    发表人 峻申 吴

    他的原著小说名字是《星际伞兵》

  11. 返回顶部

    君子群而不党,合而不同

    发表人 Lai Mead

    ” 以及 “我从一个总是附和我的人那里什么也学不到

    君子群而不党,合而不同

  12. 返回顶部

    有点意思:)

    发表人 Wang Carl

    跨领域学习,是需要领悟能力和抽象能力的,这篇文章很有意思,作者知识比较渊博啊!

  13. 返回顶部

    无聊

    发表人 aoch ant

    什么乱七八糟,不知所云

  14. 返回顶部

    文章很牵强

    发表人 宇捷 蒋

    海因莱因的名字把我吸引进来了,但是感觉文章很牵强。

  15. 返回顶部

    很好呀

    发表人 F Tiger

    我觉得偶尔看些这样的内容很有启发。
    有这么多完全相左的意见也很有意思。

  16. 返回顶部

    写得很不错!

    发表人 zhang hailong

    文章里提到的一些观点很赞同,不过想要做好,确实不那么容易!

    个人觉得想把事情做好,不管是哪个行业,很多道理是相通的。像软件开发这种知识密集型的行业,对方法的思考和实践就更为重要,相比之下,这些产品的使用者更善于思考和发现问题。

深度内容

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。