• 2012-08-29

    基础设施之殇

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/221436522.html

    你是否有这样的经历:

    • 加入一个新项目,装了一天环境,精疲力竭,但是,我并没有写一行代码。
    • 在网上看到了一个自己有兴趣的开源项目,clone下来,构建一下失败,折腾半天环境都没搞定,最初的兴趣荡然无存。
    • 我要测试一个东西,但要配A,弄B,折腾C,别人问及进展,还没开始呢!
    • 作为项目的主力,每来一个新人,我都要帮他搭建开发环境,这些人咋就不能自己搞定呢?
    • 产品环境来bug了,可是,我本地根本重现不了。
    • 这群笨蛋,我都根他们说了多少遍,为什么还在用C的命名方式命名Java函数呢?
    • 这个要调试必须部署到远端的服务器上才能做。
    • ……

    这样的例子,作为一个软件开发愤青,我还能举出很多。这些年软件做下来,我总能在各种各样的场景下遇到各种各样的问题,究其根源,无非是基础设施出了问题。

    与其说出问题,不如说是人们忽略了基础设施在软件开发项目中的重要性。绝大多数团队的目标都是努力赶代码,在他们的眼里,只有产品代码才是这个过程中唯一重要的。

    你忽视它,它就会惩罚你。

    上面所列的情况也就是基础设施对我们的惩罚。事实上,类似的惩罚许多团队一直在承受:

    • 忽视开发测试,遗留大量的工作给测试团队,甚至是产品环境,产品常常因为质量问题无法上线,拖延随之而至;
    • 忽视人员培养,一部分人忙死,一部分人闲死,人员流失严重,作为团队老板,你实在不理解为什么这些人就不能忠诚一些;
    • 忽视沟通,我们总能在拖延很长一段时间之后,拿出让人不满意的东西,然后,抱怨客户不近人情;
    • 忽视软件设计,你以为半天搞定的东西,开发人员用了一个星期,双方还要互相指责别人不实事求是;
    • ……

    一个好的基础设施,是要让程序员能够将注意力放在要做的工作上。庞杂的东西越多,团队整体的效率越低。比忽视更可怕的是,温水煮青蛙。工作在这样的团队里,很容易受虐成狂,忘记了最初的追求。

    关于基础设施的样子,我去年曾经在InfoQ发表过一篇《软件开发地基》,以一个Java Web项目为例,介绍了好的基础设施应有的样子,其中所有的代码都是来自当时的一个实际项目。如今看来,大部分内容依然适用。当然,这些内容只是在开发层面,应有的基础设施比这还要大。

    最近有一篇比较好看的文章,讨论了同一个问题,facebook中的做法

    分享到:

    历史上的今天:

    引用地址: