IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

基础设施之殇

梦想风暴 2012-09-02 21:22:49 累计浏览 2,522 次
本机暂存

    你是否有这样的经历:

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

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

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

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

  • 忽视开发测试,遗留大量的工作给测试团队,甚至是产品环境,产品常常因为质量问题无法上线,拖延随之而至;
  • 忽视人员培养,一部分人忙死,一部分人闲死,人员流失严重,作为团队老板,你实在不理解为什么这些人就不能忠诚一些;
  • 忽视沟通,我们总能在拖延很长一段时间之后,拿出让人不满意的东西,然后,抱怨客户不近人情;
  • 忽视软件设计,你以为半天搞定的东西,开发人员用了一个星期,双方还要互相指责别人不实事求是;
  • ……
  •     一个好的基础设施,是要让程序员能够将注意力放在要做的工作上。庞杂的东西越多,团队整体的效率越低。比忽视更可怕的是,温水煮青蛙。工作在这样的团队里,很容易受虐成狂,忘记了最初的追求。

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

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

    同分类推荐文章

    1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
    2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
    3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

    查看更多 DevOps 文章 →

    建议继续学习

    1. 公司倒了,请让领导先走 (累计阅读 13,407)
    2. 检查nginx配置,重载配置以及重启的方法 (累计阅读 10,897)
    3. 个人开公司的流程,以后用得着 (累计阅读 7,926)
    4. 谷歌是如何做代码审查的 (累计阅读 6,667)
    5. 一个程序员的血泪史 (累计阅读 6,324)
    6. 加班与效率 (累计阅读 6,196)
    7. 献给有裸辞想法的朋友们 (累计阅读 5,542)
    8. 大公司与风险管理 (累计阅读 5,308)
    9. Push Or Pull? (累计阅读 5,263)
    10. 从Code Review 谈如何做技术 (累计阅读 5,218)