作者回复: 又是一篇高质量的分享👍
我没有什么好补充的,只是代表大家向你表示感谢🙏
作者回复: 感谢推荐,我看了一下,内容质量很高👍
大家可以参考看看
作者回复: 这个问题通常有两种解决方案:
1. 你按照瀑布模型的方式去估算工作量,然后签订合同。开发的时候你需求分析和架构设计还是用瀑布模型的方式,但是编码和测试用敏捷开发。这是一种不错的折中方案;
2. 你把所有需求拆分成用户故事,对用户故事进行打分(了解下计划扑克之类的打分方案),然后可以算出来一个总分数。另外按照你以前敏捷开发的经验,可以知道每个Sprint大概能完成多少分,这样你就能大致推算出来工期。
供参考!
作者回复: 其实迭代模型已经是很不错的模型了,如果适合你们组项目需要,那就是很好的,不用纠结。
作者回复: 你这对软件工程中各个模型的应用可以说是非常经典的案例了,充分结合了各种模型的优缺点和适用场景,值得大家学习借鉴👍
软件工程知识点其实不算复杂,难的恰恰是如何灵活运用这些知识!
还有你说的“仪式感”也是个很好的点,这些会议看起来形式化,但确实能起到仪式感的效果。
作者回复: 总结的很好👍
敏捷开发有很多很好的实践,完全可以借鉴到非敏捷开发的项目中去,先从容易的开始,慢慢增加更多,最终也就“敏捷”起来了。
作者回复: 限于篇幅,用户故事确实没讲清楚,在文章中有推荐书籍可以作为参考,或者你也可以网上查询一些资料进一步了解,例如:http://www.woshipm.com/user-research/553736.html
这个是个好问题,也是个大问题!
新人的传承,通常我的经验是:
1. 团队要有自己的知识库或WIKI,常用的知识要花时间整理上去,这样新人来了可以自己查
2. 先给他简单的任务,再慢慢稍微复杂一点,给予必要的指导,做中学是最快速有效的
3. 遇到一些典型的问题可以通过结对编程的方式带着一起做
仅供参考
作者回复: 敏捷开发中有一个迭代0,也就是第一个迭代,就是做这些准备工作、基础架构搭建的。
敏捷团队小,有个好处就在于遇到你说的这种情况,在做之前,大家都在一起开个小会一商量就可以定下来了
作者回复: 👍总结的很好。没有完美的方案,只有适合的方案。
很多时候,及时看到阶段性成果,有成就感还是很重要的,经历过那种很长时间都看不到结果的项目,都不知道什么时候能看到头,每个人压力都很大的,相对来说要做点重构和数据迁移真不算什么了😄
作者回复: 这是个好问题,我对这个问题上没有什么经验,但我可以试着帮你分析一下。
你的合同是按照当时的需求签订的,如果后期客户变更需求或者增加新需求,那相当于需要重新签订变更这部分的补充合同。
应用敏捷开发的时候,你也可以让产品经理或者项目经理充当客户的角色,这样他们会更偏重产品需求的解读,而不是重新提出新的需求:)
还有一点,合同执行的时候,这时候你不需要太过于纠结是不是用敏捷还是迭代还是瀑布,而是哪一种开发模式,可以让你高质量高效率的完成,那就是最好的最适合你的开发模式。
作者回复: 谢谢支持,说明我努力没白费呀:)
作者回复: 好问题👍
敏捷还是要写必要的文档,只是会简化。尤其是这种涉及交接的、维护的,文档不能省。
技术债务应该团队成员集体负责,大家在迭代计划会上应该将技术重构列入后续的Sprint
作者回复: 好问题!
敏捷开发这种方式,需要客户紧密配合,也就是可以方便确认需求,否则还是少不了要写需求文档。
另外我在文章中描述用户故事,有些描写不清楚或者歧义的地方,其实用户故事还应该包括验收标准,这样可以解决你说的开发和测试没有标准的问题。
团队成员需要高度的协同和配合那是一定的,尤其是架构和需求两部分。需求简化后,就意味着开发过程中需要反复沟通确认;没有专门的设计阶段,也就意味着每个Sprint开始前,团队要商量有没有要设计或者修改架构的,有就需要有个简单可行的方案对架构进行修改。
如果各自分工,这样的目标就很难达到。
作者回复: 对,开发不仅要写单元测试,还要写集成测试。但开发都是用模拟数据,假的API。而测试的自动化测试会用真实的数据,调用真实的API,而且也要做一部分手动测试。
至于比例多少,还得看项目特点
作者回复: 谢谢支持!
软件工程是一门相当有用的学科,我主要是领着你去学,学了你就会发现真的有价值👍
另外我在学习攻略那一篇还提到一个观点就是教中学,就是你可以先“借道”,把别人总结得道先借过来,再结合一些术和器,去尝试总结或者讲给其他人,这过程中你也一样会有很多感悟和不一样的理解。
作者回复: 用户故事其实还可以进一步拆分成任务。
举例来说一个提交留言的用户故事,可以基于这个用户故事再创建三个任务:UI设计、前端页面、后端API。
复杂的任务还可以进一步细分。
作者回复: 👍赞
首先,可以看得出你已经开始有对敏捷开发和其中一些实践有了很多自己的思考,对不足的地方有反省,这都是非常好的现象,相信你慢慢可以有更多感悟。
另外,我倒是建议你不要着急先不做什么,不如先都按照它的做,实施一段时间后,由团队来决定哪些该继续做,哪些可以不需要继续做,而不是你一个人(Scrum Master)来决定这些事情。
因为Scrum Master本身不是一个控制型的角色,而是一种服务型的角色。
作者回复: 👍
是的,从瀑布到敏捷是个很大的转变,不要急于求成。
作者回复: 1. 如果是按照建筑工程标准验收通过了,当然没问题;
2. 需求稳定的项目一样适用于敏捷开发。尤其是Scrum这样固定迭代周期的敏捷开放方式,可以倒逼你每次迭代先选择优先级高的需求。从已经确定的项目需求,选择最核心的需求,先进行迭代开发,这样你很快就可以看到一个可以运行的版本,然后每次迭代继续增加新的功能,持续发布。
3. 磨刀不误砍柴工,前期投入了功夫在自动化测试,后期会有质量上的回报,敏捷开发会优先砍需求,所以产品可以发布,最坏结果是初期发布时,需求是不完整的,一些优先级不高的需求初期并没有加进去。
4. 项目文档有两个主要目的:1) 帮助写的人理清楚思路; 2) 用来交流沟通。
所以文档的关键不是细,而是达到文档的写作目的。至于粒度,可以站在文档读者的角度,结合日常开发维护场景,去思考这个文档,对于一个需要查阅文档的人来说:文档能给他什么?上面的信息是否有价值?能否达到交流沟通的目的?
举例来说对于一个需求文档,主要的用户场景是否覆盖?输入输出条件是否清晰?交互设计是否完整?异常情况如何处理?
举例来说一个项目交接文档,是否有整体概要的架构图,让人能从整体了解这个项目;是否有各个模块的相关说明,能大致了解各个模块的作用;是否有开发的说明,可以进行开发调试;是否有服务器部署的说明,可以按照文档对服务器进行部署更新……
作者回复: 👍敏捷开发这样一个Sprint一个Sprint的迭代,天然的可以将优先级高的需求放在前面。