作者回复: 👍好问题!你说的担忧完全合理,也确实可能会出现这样的情况。
我来解释一下为什么2-4周是可行的。我们假设你现在的项目是三个月周期,一共是12周,然后你大约2-3周在需求,2-3周架构设计,4周左右在编码,2-3周测试。
那也就是说需求分析期间,其实开发、测试做不了啥事,架构设计的时候,主要是架构师在忙,编码的时候,主要是程序员在忙,测试的时候,开发和测试在忙。
再假设你大概要完成10个功能,也就是这10个功能从设计到开发预计花了10周时间,平均每周一个功能。
如果换成2周一个迭代,那么我们可以考虑每个迭代只选取2个功能,但是在这两周,整个团队的运作可能是这样的:
迭代v1.1(2周)
- 产品设计,准备下一个迭代v1.2的产品设计
- 开发,设计和开发这个迭代v1.1的功能,同步修复发现的v1.0的Bug
- 测试,测试上一个迭代v1.0开发好的功能
- 开发完成后,部署开发完成的v1.1到测试环境
- 发布测试验收完的迭代v1.0
迭代v1.2(2周)
- 产品设计,准备下一个迭代v1.3的产品设计
- 开发,设计和开发这个迭代v1.2的功能,同步修复发现的v1.1的Bug
- 测试,测试上一个迭代v1.0开发好的功能
- 开发完成后,部署开发完成的v1.2到测试环境
- 发布测试验收完的迭代v1.1
也就是你差不多还是有两周时间开发新功能,两周时间测试,但是每两周可以发布一个小版本,而且整体节奏比较平缓。
如果到时间内完不成所有功能,那么就发布完成的,没完成的放到下一个迭代,这样可以保证每周都可以发布。
配合代码审查和自动化测试以及基于分支开发的流程,可以保证合并后代码质量相对是可靠的。
如果这样操作有难度的,那么采用4周一个迭代,但是每个迭代功能减少,还是一样可行的。还有每个迭代结束后的上线发布,可以有两种类型,小迭代可以不发布生产环境,只是测试环境,几个小迭代后再发布生产环境。
也就是说,方法其实是有的,观念上可以先调整,因为这样的迭代周期肯定是可行的。
作者回复: 我倒是觉得有模板的文档好写一点,填空就好了。
对于文档模板,我没有什么建议,毕竟每个公司情况不一样。
我经历过的公司没有强制规定要模板的,但会提供两种模板,一种是风格样式的,字体颜色什么的都采用公司品牌的风格;一种是基于内容的模板,把大标题小标题都列出来,写的时候填内容就好了。
文档审查重点是检查内容,而不是格式。
作者回复: 流程规范的建立是一个逐步的过程,发现单个的问题,首先解决问题,解决完后就需要思考一下:是不是可以通过流程规范规避类似问题。
就拿你这个例子来说,可以先把CI持续集成环境搭起来,然后在发现这个问题后,就针对这个路径的问题,提一个Ticket,要求补上这部分的自动化测试代码。这样以后每次提交代码,CI都会自动运行这个测试,出问题了就能及时发现,不至于到了生产环境再发现。
开发人员任务多可以理解,但是你需要把这些任务通过任务跟踪系统统一管理起来,写一个Ticket给他,排上优先级。等其他任务忙完,就该把这个任务给做了。
所以小团队乱,任务跟踪管理、开发规范,这都是需要优先建立的流程规范。
作者回复: 这种情况跟Docker应该没关系。
这种情况应该从几个方面着手:
1. 首先还是代码要规范,日常通过lint工具和代码审查强制代码实现的时候必须满足代码规范
2. 要有必要的文档,例如设计的文档、架构的文档,可以建一个Wiki,日常有问题就记录在上面,尤其是一些操作手册什么的。
作者回复: 赞同,敏捷开发很多实践可以借鉴。另外团队成员的自主自治合作分享的文化和能力也很重要👍
感谢分享
作者回复: 可以设定一些学习的课题分享,比如说最近有什么新技术很火,但是大家都不知道是什么,也很想了解,可以让一个人去学习研究,然后跟大家一起分享,分享的过程其实以讨论为主,分享的人也不需要太多压力,自己也能学到东西,其他听的人在讨论的过程中也能学到东西,共同学习提高。你可以从中做好主持的作用,最好提前也学习准备一些。
作者回复: 你说的这种情况其实很普遍,要单独抽时间出来确实不容易,只能是日积月累,一点点改进,一方面要保证现有业务运行,一方面逐步增加自动化比例。
比如说新项目、新需求、修复Bug,都可以针对性的增加一些自动化测试代码,不用贪多求全,一点点来。
项目间隙或者其他时间,写一些自动化脚本替代一些重复的体力劳动。
另外尽可能使用现成的甚至收费的服务,通过简单的配置就可以帮助你实现自动化构建、部署等工作。
总的来说这些自动化工作都是磨刀不误砍柴工,长远看收益很大。
作者回复: 如果说软件工程上那些控制需求的办法都用了还是没用,那还是得考虑其他方式了,比如寻求法律帮助,签订变更的合同,比如从人情关系想办法办法,找找关系什么的