编程乌托邦

“While we pursue the unattainable, we make impossible the realizable.” – Robert Ardrey.

程序员都有完美主义倾向,在某种程度上,这是好事。完美主义让我们追逐细节,仔细地编写自注释的代码,不放过任何一个可能bug的语句。

然而,在设计系统时,如果仍抱守着“乌托邦”式的梦想,这便是程序员的噩梦。正如文首引用Robert Ardrey所言,如果我们追求不可达的事物,我们会将可能之事变做不可能。这篇短文便是介绍乌托邦给程序员带来的梦魇。

程序员面对问题时,如果自认已经找到(或可以找到)最终的,最完满的解决办法,就很容易陷入这种极端主义。我们总希望这个系统是最终版,不用再重构;总认为正在设计的API是最好的API,以后永远可以不用变化;总想着这个架构拥有最好的灵活性,能适应未来所有的需求。

在我看来,乌托邦式的目标,只会给程序员带来三种可怕的梦魇。

第一种是自卑。设计者觉得之所以无法实现理想,是自己的能力问题,他不将无法达成目标怪罪于目标的不可实现,而是自己的无能。

第二种是拖延。他们觉得,既然目标这么遥远,那么实现目标的过程也就很艰难,需要长期的准备。我们希望接二连三的评审,能够使设计方案达到完美;指望着找到大块的时间来做事情,却不利用零碎的时间开工;过分考虑,设计臃肿而不自知。

第三种是敌意。这个乌托邦的目标在他们心中是神圣不可侵犯的,所有对这个目标有疑问的人都会被他们毫不留情地消灭。在实现目标过程中,遇到的挫折也都怪罪到其他人身上:之所以系统没有扩展性,是因为经理不给我足够的时间;之所以bug频出,是PM老是变更需求。

抱有乌托邦梦想的人,无不被上面的一种或两种梦魇困扰着。其中,拖延是最常见,最“无害”,却最难治愈的。

你有没有乌托邦式的编程梦想?最后它们结果如何?欢迎各位留言分享!也欢迎follow我的twitter@cnberg 或者新浪微博@berg与我交流。

3 条评论

  1. middleware 于 2012-04-30 @ 14:15:12

    对乌托邦最彻底的釜底抽薪是把 built 软件的 metaphor 替换成 grow software。

  2. skywalkman 于 2012-04-30 @ 14:38:06

    很有同感,完美主义往往会导致拖延

  3. BeiYuu 于 2012-04-30 @ 22:09:32

    [Comment ID #16135 Will Be Quoted Here]

    同意

发表评论

火花来自思想的碰撞,请留下你宝贵的评论吧: