作者回复: 感谢你帮我把螺丝钉这段写出来了,我有想写这么一段类似的,后来觉得篇幅太长另外和软工关系不那么大就没扯淡了😄
大厂优势就是资源多,项目大,如果如你所说,能跳出所在岗位,站在全局多观察多思考,能学到很多东西👍
如果只局限于自己岗位做一个螺丝钉,只会大厂的一套很窄领域的技能,时间一长很可怕,将来出去后难以找到合适的工作!
作者回复: 👍是的,一切以Ticket为准!不用担心问题被遗忘,会被跟踪,直到被解决或决定不解决!
作者回复: 好问题,你难倒我了😂
前面介绍过,没有软件工程的时候呢,开发就是边写边改模式,没有需求分析,没有架构设计,没有测试,导致很多问题。
敏捷开发的话,需求分析还有,只是简化了,架构设计也有,只是说仅仅做当前Sprint的架构,测试也没省,只是很多自动化测试辅助,所以让测试人员从繁重的体力劳动中解放出来很多。
作者回复: 你说的这几个方向都很好的。第二个要慎重一点,如果没有特别懂的人不要着急马上去做,会有不少坑要填。一三可以尝试做起来。
自动化测试的话,最重要一点,就是要让开发同时写一些自动化测试,传统测试人员短期内恐怕难一下子写出来高质量自动化测试代码。还有就是要项目管理上要支持,例如说写测试的时间要放到计划里面,必须要留出来写测试的时间,不能不给又想马儿跑得快不让马儿吃草。
PR是个很好的代码审查以及结合CI看测试状态的方式。但是需要花点时间去搭平台。如果创业公司,没有必要自己去基于Jenkins这种搭建,去买成熟的第三方服务就足够了。
最后一点,要改变,不要着急一蹴而就,一点点去试点,然后再推广,不建议贸然改变太多。
作者回复: 这倒是小事了,可以养成习惯,每天下班前检查一下,一次性更新。
我有写过一个小脚本,在CI里面运行,PR merge或者部署测试环境都自动更新,PR里面标题加上Ticket编号就可以。又酷又省心✌️
作者回复: 对敏捷了解已经很熟悉很深入了👍
你还可以继续考虑考虑还有没有其他手段可以加强质量的?尤其是可以从瀑布模型那边学习借鉴一些。
作者回复: 具体看哪一类的工具,比如CI的话你可以看看开源的Jenkins(https://zhuanlan.zhihu.com/p/54050436),比如项目管理工具你可以看看Jira或者类似的,自动化测试具体要看你的语言,源代码管理GitHub
作者回复: 任务拆分力度可以解决好分工协作问题;敏捷里面每个Sprint开会前会有迭代计划会,团队成员一起安排计划下一个Sprint的ticket;Sprint结束还有迭代回顾会做总结。
交付的问题解决了,质量上再思考思考?
作者回复: 小厂使用敏捷开发,几件事需要做起来:
1. 固定迭代周期,每2-4周一个迭代,迭代结束能交付可用的产品,为了定期发布舍得砍掉功能需求
2. 增加自动化测试的比例,把源代码管理、CI(持续集成)用起来,借助开发流程、自动化测试保证基本产品质量
3. 用好任务管理系统,把所有要做的任务都跟踪起来,按照优先级都排到相应的迭代版本,在一个迭代中,有紧急任务插队加塞,相应的就应该把其他任务移出去。
嵌入式软件能不能用微服务这问题超纲了,我也不懂
DevOps也不是银弹,主要有三点你可以借鉴:
1. 高度自动化
2. 透明可量化
3. 紧密协作
你这个问题可以从上面几个角度考虑,尤其是自动化的角度考虑是不是可行。
作者回复: 我有写过一篇《Code Review最佳实践》发在了博客园:
https://www.cnblogs.com/dotey/p/11216430.html
供参考
作者回复: 你说的应该是Scrum Master的角色,你们这个是很好的方案,必然要有人去处理对外的对内的杂事,保证其他人可以专注的工作。
另外在后面一篇也介绍了一个轮值的方案,就是每周安排一个人专门去做一些杂事,大家轮流来。
作者回复: 可以试试“问题停车场”,把问题留在后面在讨论,并且严格限制会议时间。
对于需求更改,严格做到当前Sprint不做更改,另外通过迭代计划会,一起确定下个Sprint的计划,要做的事情。
作者回复: 是的,基于PR结合CI和Code Review是一个非常好的控制签入代码质量的手段!
作者回复: 1. 不知道你是不是已经工作并参与到实际项目中
建议先多观察身边的项目,对你学到的知识加以印证,项目经验其实更多来源于参与后的观察和思考。
举例来说,你可以结合你学到的知识,看看你们项目现在是什么开发模型,看看项目经理是如何处理项目中的问题的。
如果还没参与到实际项目,可以做点开源项目练练手。
2. 除了Jira有很多选择,例如禅道、Worktile,你搜索一下:“项目管理软件”,腾讯、阿里、华为都有自己的
作者回复: 哈哈,你们大亚麻是大厂中的超级厂👍
厉害的,一栈到底!
作者回复: Review不仅仅是可以发现很多问题,另外如果知道自己的代码会被Review,也会写的认真一点:)
作者回复: 赞👍
可以在一个点一个项目先应用起来,慢慢再更多内容。另外限于篇幅,很多内容并没有介绍特别详细,可以辅助阅读一些书籍和文章,可以帮助你更好了解。
作者回复: 在下一篇里面还会有谈到这个问题。自动化测试是辅助的,还是离不开人工的测试。而且开发写的集成测试和测试写的自动化测试还是有一点差别,一个是用程序模拟的操作的模拟的固定数据,而测试则用的是真实的数据真实的环境。
举个例子来说,网页的自动化测试,开发只会用Chrome Headless,数据都是事先写好的模拟数据;测试的话会用主流的Chrome、Safari、Firefox、Edge分别测试(自动化或手动),数据都是测试环境的真实数据。
作者回复: 是的,开会要高效,就不能太发散,问题停车场是一个很好的方式改进这个问题。
作者回复: 抱歉我近期主要在国外,如果你要邀请专业人士去公司分享,给您推荐邹欣老师(微博 @程序员邹欣 ),他比我专业多了:)