用gitlab来优化我们的软件开发流程

1 向领导汇报(内在驱动)

员工为什么不愿意做优化

  1. 人本身是懒惰的,员工也是如此,他们才不会把事做好的,他们只会做相应报酬的工作量,还可能基本还达不到其相应的报酬,大多数人都在混日子啊。
  2. 人的天性是不喜欢改变的,人的天性是习惯于一些按部就般的事的,也许那样做令人讨厌,但是人家还是能干点东西出来。如果你逼着人家改变,你就是在压迫人家,人家自然会反抗。
  3. 真正了解业务的那帮人根本不可能加入项目团队,那些人谁TMD愿意和苦逼的技术人员加班啊。 那些人喜欢和我们的用户吃吃喝喝,花天酒地的,根本不会和你们那些奇怪的东西(如:backlog)或是那堆ugly的内向古怪的技术人员打交道,更别说什么技术了。
  4. 销售什么都干得出来,让你去做项目是因为你是廉价劳动力,而且,他们会不断地加需求,因为软件合同谈好的价格时候,连需求都没有,你去做了才有,还是模糊和不确定或根本就是错的,然后需求是越来越多,越改越多。等你精疲力尽的时候,你才意识到,销售早就把你卖了。

2 向开发人员讲解(外在驱动)

代码审查的好处

  1. 代码实现清晰易读,无法阅读自然无法审查。
  2. 快速学习他人的代码思路提高自身水平。
  3. 你确定真的开发完功能了?开发的是不是想要的功能?
  4. AT & T 的一个 200 多人的部门在开始执行 code review 后,开发效率提高了 14%,而错误减少了 90% 左右。

建立看板(scrum)开发流程的好处

  1. 现在让你说有三个大功能分别是(重新设计网站首页,增加用户登录功能,增加日志审计功能)问你什么时候大概能完成?帮助你评估项目的时间节点
  2. 一个项目上百个点,有bug、有需求,怎么开发最有效率?按照优先级来排序指定的需求
  3. 无休止的加需求,不干没这单,干了以后又没用,那到底干还是不干?团队审核制,不干没用的事儿
    等等

建立wiki(知识管理)的好处

  1. 可以相当于是错题本,加速可以共同进步和提高

git的好处

持续集成的好处

  1. 大型重构完,如果不跑冒烟测试、回归测试你怕不怕?自动化构建和发布项目

使用gitlab的好处

涵盖了上述的所有功能

3 实施计划

思考

上来做持续集成和自动化测试显然是不现实的(假设20个人和他们的领导根本不知道自己正在开发什么的那种团队)。

  1. 比较现实的是先弄清楚现在在开发哪些功能和任务,并建立一个迭代式开发的框架。否则甚至没办法弄清楚大家的工作是否可以集成。
  2. 但如果只做这些工作,很容易出现问题:人们渐渐地开始降低迭代交付的标准(在进度的压力下),并期待着在测试期力挽狂澜,等等。
  3. 这时候,比较容易的是先定一些迭代交付标准,先用这些标准来卡一下质量问题。
  4. 若干个迭代过后,在任何一次Release的时候,一定会出问题的!抓住这个机会,提升迭代交付标准,并采用持续集成来保证不会到Release才会出问题。
  5. 有了持续集成,自然会有自动化测试,因为手工集成是不可能的。
  6. 等持续集成和自动化测试具备后,人们已经习惯于在这个技术体系下获得Build和Release版本,任何压力已经很难让团队绕近道了。
    当然,如果老板很早就意识到应该帮助我们而非被我们说服来做革命,我们也可以加快一点进度,在早期就引入持续集成和自动化测试。
    但是三原则仍然是必须遵守的指导方针,换言之,即使老板是改革派,我们也别一步实现共产主义。应该以敏捷的思想逐步改变并展示回报,坚定管理者的信心,最终彻底成功。

阶段1

  • git工作流
  • gitlab的简单使用(人员 代码管理 常用的issue label,issue模板 )
  • 使用gitlab进行git工作流
  • gitlab上进行wiki制作从而知识分享
  • 了解TDD开发
  • 部署脚本

阶段2

  • 迭代标准建立(代码覆盖率,功能点覆盖率,冒烟测试)
  • 基于 gitlab 代码审核
  • 基于 gitlab + jenkins持续集成、发布

阶段3

  • 基于scrum的软件开发流程
  • 基于gitlab的敏捷开发实践
  • gitlab上看板(board)的建立
  • gitlab上里程碑(milestone、小版本)建立
  • gitlab上组织划分

参考

无烟会议室:CMMI vs. Scrum vs. XP(QCon 2010 感受
为什么我们迫切需要持续集成


版权声明:本文由littleji.com创作并发表,转载请注明作者及出处,欢迎关注公众号:littleji_com
本文遵守CC BY0SA 4.0
if you have any questions, please leave a message behind or give an issue

本文链接为:https://blog.littleji.com/2019/02/12/20190212OptimizeTheDevelopmentProcess/