开篇词 | 为什么你要关注研发效能?
开篇词 | 为什么你要关注研发效能?
讲述:葛俊
时长10:40大小9.77M
赞 26
提建议
精选留言(65)
- jpxiong2019-08-21请问Facebook自动化测试水平现状和技术方案是怎样的?
作者回复: Facebook自动化测试水平很高。facebook.com没有测试人员。只有测试工具团队。 技术方案比较复杂,这里列举几点: - 在本地开发,代码入库前,持续发布过程中运行大量的测试。越是靠近流水线后端测试越多 - 开发、测试、生产共享一套数据库。测试数据使用标签区别出来 - 通过精准测试,减少测试的运行量,提高运行速度 - 测试工具和其他工具联动。比如,测试用例发现问题,自动化的使用`git bisect`命令发现导致问题的提交,然后自动生成bug,自动分配优先级,自动分配给问题提交的开发者。最后,自动显示在测试运行情况的面板里。
共 7 条评论28 - Robert小七2019-08-21目前在阿里云-研发效能事业部,期待老师的分享!
作者回复: 谢谢支持!你们云效的分支管理很赞,让我影响深刻。功能分支自动化产生;功能分支自由组合部署到上环境;线上验证之后分支再合入主仓。全程自动化,厉害。
共 3 条评论16 - wang_acmilan2019-09-07没有好的研发流程和研发效用思维,三军要累死。 国内推崇996但是国外很少有公司占用大家的家庭时间,而且国外牛公司这么多,也许我们的研发效能和国外牛逼公司还是些差距的,也许只是其中的一个原因吧。
作者回复: > 国外很少有公司占用大家的家庭时间 这一点不太准确。在硅谷的互联网公司。大家也是常常加班的。这一点。在创业初期的公司尤其明显。比如在我加入Facebook的时候,当时Facebook实际上已经比较成熟,已经有快接近1000开发人员。但是由于业务的高速发展以及同事之间的竞争。我们的加班都是很严重的。在每个周末我去办公室加班的时候,都看到,大概有百分之三四十的同事在加班。 不过他们大都使用任务驱动。只要你完成任务。时间长了无所谓,当然因为任务量大以及同事之间的竞争,所以很多人都是会主动加班的。但是。在工作时长方面。他们并不强制要求。更进一步。会提供非常灵活的工作时间安排,方便大家提高工作效率。比如Facebook每个礼拜三是一个默认的,没有会议的工作日。很多人在这一天选择在家办公。 所以在硅谷,工作和生活的平衡。完全要靠自己来调节。而我看到的实际情况是很多开发人员实际上平衡得并不太好。
共 2 条评论12 - big智慧2019-08-21正在实践提升效能的事儿,希望老师可以先共享点文章和书籍,让我们好提前准备准备。
作者回复: 好的。这方面的书籍并不是很多,不过我后面会记得介绍。今天先介绍一本关于流程的通用一点的书。我大概5年以前读的,觉得大开眼界,映象深刻:The Principles of Product Development Flow: Second Generation Lean Product Development。https://book.douban.com/subject/3844532/ 没有找到中文版。
共 2 条评论10 - 啸风2019-08-21公司技术一个人负责,要怎样才能提高?
作者回复: 你提供的上下文信息比较少。不清楚是新的项目还是维护项目,公司是技术驱动还是业务驱动,等等。所以我的回复会比较笼统。 不过一般来说,一个人负责技术,有好有坏。好处是自由度非常大,可以提高的空间很大!困难是技术全在一个人身上,压力大,可能会疲于应付,没有时间去系统性的思考和提高。 总的来说,最需要快速学习快速实践的能力。 如果你有更多的问题,欢迎交流!
共 3 条评论9 - 牛晋2019-08-21求证一件轶事:Kent Beck 在 Facebook 内部培训 TDD ,真的没有一个人去吗?😀 以及,Facebook 内部真的不推崇 TDD 吗?
作者回复: Kent Beck跟我在Facebook有交集,但是我没有听说过这个事儿😀 不过TDD在Facebook的确不是很流行。 这个是Kent自己在Quora.com上面写的关于在Facebook使用TDD的一段话。我觉得讲到点子上了。供你参考: Question: “Does Kent Beck use TDD at Facebook? How?” Kent: “Sometimes, but not as often as I did before joining Facebook. Going back to first principles, I am responsible for the quality of my work. The only way to check the quality of my work is with feedback. Some of that feedback can be collected before going into production and some can only be collected in production (this was a point I didn't understand four years ago). For the feedback that can be collected before going into production, tests are one way of generating that feedback (tests can be ruinously expensive to write and/or maintain if your system isn't designed for them). When I do write tests, I nearly always write them TDD-style (one at a time, before coding).” link: https://www.quora.com/Does-Kent-Beck-use-TDD-at-Facebook-How
共 2 条评论7 - Dump2019-08-21团队开发项目管理比较粗放,评审、排期、测试、集成、灰度、发布总是衔接不上,测试苦于重复地验证回归老功能以及应付一堆的新问题,开发苦于急急忙忙完成需求以及不断地改bug,产品觉得上一个功能要等好久、即使一个很简单的需求,各方都疲于奔命,但是都不知道怎么才能解决,因为deadline是固定的。
作者回复: 这个情况,首先好要优化流程,我在第四篇文章中会讨论。 具体来说,我觉得比较直接的是首先要控制WIP(work in progress)。推荐使用看板的方法。这本书不错: 中文版:https://book.douban.com/subject/25788807/ 英文版:https://book.douban.com/subject/5350839/
5 - tao10242019-08-21老师会讲好一些开发工具的使用吗?
作者回复: 这个会的。讲效率一定会讲到工具的! 专栏后面我会在个人效能部分介绍开发中常用的工具,包括命令行工具(日常工作各种操作),编辑器(会详细介绍VIM的高效使用原则),Git使用,API调试,log查看,网络查看等等。另外,我会友有一篇文章专门讲工具的集成使用,因为那样才是最高效的工具使用方法。 实际上,我一直是同事眼中的“工具达人”。之前在Facebook工具部的时候,同组的同事到日本出差,还远程打电话让我帮他解决git的问题呢 :) 你对哪一方面的工具比较感兴趣?
共 2 条评论5 - 技术修行者2019-09-04研发效能确实是一个很火的话题,尤其是对上规模的团队来说,有时团队大了,产出反而没有小团队多。 提高研发效能,有好的流程是一方面,更重要的是 1. 如何确保做的东西是有价值的。 2. 如何确保一个项目的计划是合理的。 3. 如何在非技术驱动的公司中说服老板,老板经常会说这个项目很简单,两周时间足够了。这种情况下,很难产生高质量的代码和高效率的交付。展开
作者回复: 赞思考 👍👍👍 看起来3是最难的一点。建议用同理心,从老板的角度考虑问题。
4 - hello zero2019-08-30老师,下面这个很高级啊,是怎么做到的?“又比如,社交网络出现 Bug 的时候,调测起来非常麻烦。因为要复现 Bug 场景中错综复杂的社交网络数据,困难并且耗时。但在 Facebook,它采用开发环境跟生产环境共享一套数据的方法。这就使得开发人员可以非常方便地在自己的机器上复现这个 Bug,进行调测。当然,这样的数据共享机制背后有着强大的技术和管理支撑来规避风险。”
作者回复: 这一部分我也不是特别了解细节。但是知道主要原则大概有几个: 1. 数据库中都有特定的Field指出是否是测试数据,这使得测试数据和生产数据共存在一个数据库 2. 数据能够快速恢复。这个是基本 3. 强大的监控。开发人员账号触碰到生产数据,如果是TA本人不应该有权限的,必须要有任务ID才能有Access。这些行为都会被记录下来。一旦发现不合规操作马上非常严格的处理。比如辞退。
共 2 条评论4 - 平淡人生2019-08-22公司属于小微团队,工作效能是我关注的,现在已经出现交付困难,员工能力水平参差不齐等问题!很困惑 ,怎么让团队成长起来,这也是我购买这个专栏的目的
作者回复: 嗯嗯,后面我会讨论流程优化,团队高效能实践,个人高效能实践,以及管理和文化。应该会有帮助。
4 - 爱吃彩虹糖的猫~2019-08-21我相信跟着老师的步伐,能让刚毕业不久的我大开眼界,同时感受大公司的研发流程。
作者回复: 欢迎讨论,感谢支持!
4 - Geek_kevin2020-02-23老师,您好,请问研发效率推行在公司层面,是需要独立的部门还是架构师,技术总监去推动? 效率提升是不是意味着背后要有一整套方法论和对应的工具来支撑?
作者回复: 一个比较好的方式是公司管理层在绩效方面对效能有关注。这样可以自然而然的驱动公司的效能工作。比如,业务团队的开发人员愿意更主动地去根据自己情况去提效,专门的效能团队也更容易推广工作。 具体来说,小公司一般是业务开发人员兼职,中大公司有专门团队负责。 至于背后有没有一套完整的方法论和对应工具,成熟的高效能公司是可以总结出来一套的。但是这些工具和方法论的实际产生过程,往往都是由业务提效的需求而催生的。所以一个比较好的方法是定位效能痛点并针对性的找到解决方法,同时持续性地对公司的效能状况进行系统性的审视。
3 - 文宇2019-10-28看评论也能收获很多。大赞
作者回复: 谢谢支持! 后面个人效能模块,有几篇评论,同学写的内容都可以单独写一篇文章了 :)
3 - 天天向上2019-11-04我在项目团队,涉及工具开发,前期任务管理用的“Phabricator”,很棒的工具。目前做CI相关,正在集成SonarQube。咨询下老师,您接触的Facebook等企业也使用Sonar吗?效能质量上怎么衡量的?谢谢
作者回复: Facebook没有使用SonarQube。我知道的硅谷的大公司也没有使用,都是自建一套。 我个人没有使用过Sonar,不过之前团队有简单使用,我觉得还不错。 至于效能质量的衡量,这个应该是根据自己团队的业务和代码决定哪些质量标准更重要。
2 - 小名叫大明2019-09-08虽然工作只有三年,但深受 之前为了快速迭代不注重效能和质量,欠下的债越来越多,测试苦不堪言,研发也怨声载道,产品和商务觉得项目迟迟不能上线的怨,领导的觉得研发能力不行等等诸多矛盾。 每个人都很忙,但是每个人产出都不高,久而久之人心涣散或者导致更加严重的后果。 苦于不知道这是哪儿的问题,如何解决,看到老师的专栏介绍,看了第一篇评论区的精美留言,我感觉开辟了新大陆,感谢极客时间,感谢作者的优质输出。 期待系统化学习后变得更加优秀的自己。展开
作者回复: 感谢你的支持! > 欠下的债 在第14篇文章中我会讨论技术债。阅读后欢迎留言 :)
2 - 追忆似水年华2019-08-22老师你好,我在一家传统公司的IT部门,日常工作就是做一些服务于各业务部门的网站。因为是自己一个人在做,从功能、界面的设计,到编写代码,再到服务器的日常运维,什么事情都要自己做。自己也想把工作做到最好,但是从没在IT公司历练过,又什么都得自己来,就总觉得自己一直在一个很低的层次上徘徊,杂而不精,而且工作效率也始终不好,希望能从老师这里学到一些知识,感谢。
作者回复: 一个人做也有一些好处,就是自由度高。你又愿意学习,那就没有问题。感觉你现在的知识点比较广。建议可以找到整个流程中自己比较有兴趣的一个方向深入学习。一个方向做好了,其他会触类旁通。 具体方法推荐在工作中学习。比如各个部门的网站有没有什么可以提高的共同点?实践中学习效果最好。
2 - 舒偌一2019-08-22老师,您好! 我们公司做某领域软件,针对此领域的单位有一套完整的信息化解决方案,由10多个系统组成(对应甲方单位相关部门),项目实施方式是:由项目经理依据项目需求,从以往项目中挑选各个系统组成新的项目实施方案,系统职能团队根据项目需求对系统进行个性化修改,一个职能团队一般会同时给2到3个项目做个性化修改,职能团队需要维护很多版本,为了能快速满足项目要求,程序员基本上全能,从需求确认、方案、编码到自测,基本上不做单元测试、代码复查、代码重构,大量的代码复制,程序员上班时间基本没有时间考虑完成任务之外的事情,这是目前的状态。 请老师给予帮助!展开
作者回复: 这个情况确实比较棘手。我建议大家花一点时间分析一下整个过程中的各个节点中的瓶颈问题。找到一个容易解决但是效果又会比较好的,进行优化。让大家能够比较看到效果,从而逐步形成提高的意识。事实上,没有时间考虑任务以外的事情,一段时间可以,但是不能总是这样。一定要至少偶尔停下来做一些优化。否则技术债越级越高,会塌的。
共 7 条评论2 - 许童童2019-08-21老师你好,研发效能和软件工程两者有什么关系呢? 我们团队对研发效能的理解就停留在效率上面,而且只注重自己的效率,不关注团队总体的效率,读了老师的文章,对研发效能有更深的理解,它有三大支柱:效率、有效性、可持续性。而不单单只看效率。
作者回复: > 研发效能和软件工程两者有什么关系呢? 我觉得软件工程更多的是工程方法。效能包括一些工程方法,也包括一些个人的研发实践,还有一些管理和文化。两者应该没有互相包含,而是有一些交集吧。
2 - 醒2019-08-21实现自动化的成本高不高?有没有通用的模板可以快速实现具体项目的整套自动化流程?
作者回复: > 实现自动化的成本 你说的具体是那一部分的自动化?如果你说的是CI/CD的话,建议看看你们使用的Git管理系统自带的框架。比如GitLab CI。https://docs.gitlab.com/ee/ci/ 这样的成本会低一些。
2