记得刚读大学的时候,热门的专业叫软件工程,这个专业用国外的教程,学费比一般的专业还要贵很多,大概是 1.5 倍以上,因此搞软件从来都是很复杂甚至感觉高大上的一个事情。
后面去读《人月神话》,说实话就记住了一句话,软件开发没有银弹,再次印证软件不好搞。(题外话是,这本书其实对大学在读或者刚从事开发的同学其实门槛有点高的,过于抽象。只有在亲身参与过一些比较大的项目之后才会越来越体会。)
这么多年走来,经历了 CMM 模型,敏捷开发,devops,参与过几千人一起开发的项目,也搞过几个人的小项目,各种角色也都搞过一遍,开发,项目管理,产品、业务负责人等等,有了一些更多的体会,这里讲讲特别流行 devops 怎么搞合适。
当能我不是专业搞工程效率,这一篇也不是一个说明教程来讨论怎么搞软件工程或者怎么搞 devops。核心是来讨论下 devops 的价值和关键的一些前置要素,以及背后的一些逻辑。
先来看看 devops 实施带来的直接的价值:
那要实施一个软件变更,其实不是一个简单的要求就能完成的,是一个系统工程,devops 里面是有一些关键的前置要素:
在很多团队都面向开发模式转型的问题,我的建议是
前面讲了很多实践的野路子,回到 Devops 学术上也定义了精髓,有一个“CALMS” 的主旨:
你会发现其实前面讲的可以映射到 CALMS 上,对照上去,理解其实会更深入。
除了前面说的各种价值,我觉得 devops 其实更大的价值在人性的激发。和传统的敏捷和 CMM 模型最大的区别在于管理逻辑的区别。这种区别如果用数据库里面的经典的锁来说明,那其实就是 乐观锁和悲观锁的区别,devops 除了要有各种工具和套路之外,核心还是要能激活团队个体成员的主动 owner 意识,让他们敢打敢干。
所以 devops 会是终点吗?我觉得肯定不是,软件工程管理会持续演进和发展,去释放更大的生产率。