规范化的工作流程
还记得我们以前上学的时候吗?每天按照课表来,到了几点就上什么课,这就是规范化。
工作中也是这样,需要有一个规范化的工作流程,到了哪一步需要怎么做,这些都应该尽早定下来。不过定下来并不是不能改,敏捷团队最大的特点就是拥抱变化。但是一般会保证每一个迭代中的变化最小化,一般的敏捷都以双周为一个迭代周期,这一个周期里尽量不改流程。
在敏捷回顾会上,我们需要对之前的迭代进行反思和回顾。为什么要做反思和回顾?其实自古以来,古人就知道要“吾日三省吾身”。为的就是反思这一个迭代中做得好的地方有哪些,做得不好的地方有哪些?但是一定要写下来,不只是大家坐在一起吃点东西聊几句就完了。这是一个很正式的会议,虽然轻松的氛围有利于大家把问题的根源挖出来,但是开这个回顾会的目的是为了改进,为了让整个团队在下一个迭代中应用新的做事方法,并不是大家说说就结束。
所以,针对迭代中的任何一个问题,都要找到问题的根源,无论是流程上的还是开发过程中或者测试过程中的问题。目的是让整个团队找到最适合自己的流程和方法。
不要怕敏捷回顾会上提出的问题,更不要怕找到问题的根源,只有找到了根源才能解决。
所以,解决方案一定要清楚可执行,如果是流程上的问题,也需要讨论清楚下个迭代将使用什么样的流程。必须一步一步清楚地列出来,复杂和模糊是执行的敌人,只有清晰明了的步骤才能让方案落地。
每个迭代做一点小小的改进,一年下来就会发生很大的变化,这对团队对个人都是一样的。
运用自动化
当工作流程捋顺了,我们就可以尽量把能自动化的部分给它自动化掉。
为什么要自动化?自动化是执行固定的程序代码,中间不需要过多的人工干预。这样可以节省人力,也会减少出错的机会。
比如构建环境自动化,构建自动化,构建完成自动上传到制品库,自动发送邮件,构建完成后自动部署出一个开发环境,提供给开发人员和测试人员进行测试,同时在这个环境运行自动化测试。即使新的自动化测试还没有加进来,也可以先跑已有的自动化测试,以验证新的改动是否会影响已有的功能,这是对老功能进行一个回归测试。
当这个开发环境测试通过以后,就要进行环境的升级,比如升级到另一个测试环境(也可能是蓝绿部署中的一套环境),这是一个一直存在的内部测试环境,新功能增加到这个环境中,然后由自动化测试在这个环境中运行,手工测试人员也在这个环境中测试一遍。当然环境升级也要做自动化,可以用脚本实现的就用脚本实现。可以用工具的就用工具,把各种工具都串在一起,形成一套适合自己产品的工具链。
最后一步是升级到生产环境,这些环境部署和升级都应该做成自动化部署,如果不成功要能自动回滚。
环境都实行自动化构建,自动化销毁,运用自动化可以节省很多人工搭建和准备环境的时间,也不容易出现环境崩溃的问题。如果环境总是出问题,那会大大地降低工作效率。
学习型组织
一个团队,一个人都要不断地学习新的工具和新的方法,特别是在IT行业,各种软件工具都更新迭代得特别快。比如之前还在用ESX和虚拟机,很快就开始不停地使用容器了,现在kubernetes也成为了主流。
这些新技术新工具都需要大家不断地去学习之后才知道怎么应用在自己的工作中。
所以公司应该给员工提供学习时间和学习机会,不断地学习新工具和新技术,而不是光学公司内部的老一套。
只有公司里的员工掌握了这些工具和技术,才知道怎样把它们与公司的业务结合起来。
创建学习型组织,鼓励大家学习和尝试前沿的新东西,让大家开阔眼界。鼓励大家创立小的学习团队在公司做实验,鼓励大家在公司分享新东西。
员工的时间不应该全部花在工作上,而是要拿些时间出来学习和思考,因为现在最贵的就是人才,而最好又最合适的人才就是公司现有的人才。
一个人要改变需要有外力的推动,最大的外力就是学习新东西对人的刺激。
所以前面说到的工作流程的规范化,工作流程的不断调整,这些都需要做事的人不断地学习新东西,不断地思考才会发生。而中间我们说到自动化,也是一样的,要把所有的工具打通,需要大家去学习如何使用和打通这些工具。
掌握新知识的人就是工作中的源头活水,只有团队中的人不断地学习,不断地接受新事物,团队才能越做越好。