分享 《没有银弹》读书随想 - 标准化开发环境的意义

yangyuqian · 2015年07月07日 · 最后由 pynix 回复于 2015年07月10日 · 2076 次阅读

摘要

《没有银弹》软件开发中时间耗损的可以被分为 2 个范畴:必要耗损和意外耗损。

其中必要耗损:

  1. 软件复杂度带来的学习成本

  2. 软件作为人类思维的产物,不直观

意外耗损:

  1. 产品设计随意性带来的实现成本(不考虑基础架构能力,随即给出设计,只能给出一些临时解决方案)

  2. 需求变更

对于软件生产活动中的必要耗损似乎没有什么特别好的解决方案,但 30 年前作者就提到了一点,让我非常吃惊:

  • 标准化的开发环境

标准化开发环境

产品复杂的配置、开发环境搭建已经成为了很多人的痛点,以我目前的公司为例:

  • rails 相关的项目有 4 个,其中涉及不同版本的 ruby(ree & ruby 2),这些项目直接存在业务上的耦合,以及 url 之间的复杂跳转

  • 还涉及一些非 ruby(java 等)语言开发的模块(3 个)

这样的产品结构对技术人员,尤其是新入职的技术人员提出了非常高的挑战。

从团队整体效率来看,搭建一个完整环境变得那么的奢侈,但又不得不承认:完整的开发环境对于 debug、开发、开发后自测,甚至质量保证人员都具有很大的价值

从大项目的角度看,要求每个人对产品业务及实现都了如指掌可能是个伪命题,通常来讲大家都只能关注与产品的一些点,每次开发也都只涉及一些子模块

从而一个标准化的开发环境变得至关重要,它应该满足以下条件:

  • 稳定:稳定是第一位的,当开发一个模块的时候,整体环境的其他部分应该能够正确运行

  • 灵活:同一个程序员的工作有时候会涉及多个子模块,应该要做到“想开发谁,就能够迅速搭建起来相应的环境”

  • 成本:成本要可控:标准化开发环境的好处在于能保证较好的机动性,人力成本也随之降低,降低的人力成本也减少了代码混乱的风险

我们采用 vagrant 封装了一些统一的工具,并用 docker 来运行相应的代码

很早的概念了。。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号