11 | 研发环境:Facebook怎样让开发人员不再操心环境?
11 | 研发环境:Facebook怎样让开发人员不再操心环境?
讲述:葛俊
时长17:58大小16.44M
如何配置高效的研发环境?
开发机器
IDE
本地环境、联调环境
开发过程中使用的各种工具、数据和配置
测试环境、类生产环境
提供高效研发环境的原则
小结
思考题
赞 4
提建议
精选留言(19)
- 小名叫大明2019-09-16我看到了个人认为比较重要信息: Facebook认为人力成本更高,这个意识比较重要,很多公司没这个意识,有这个意识的确是通过延长工作时长来补,加班及长期加班又降低了非工具和环境造成编码效率,恶性循环。 慢慢理解招聘时多研发自驱,兴趣等能力的重视的原因了。哈哈
作者回复: 很高兴能启发大家一起思考!这才是最重要的 :)
共 2 条评论15 - 寒光2019-09-16想问下老师,“一图胜千言”的解决方案有没有对应的开源产品呢?现实中这个问题太烦人了,好多流程管理系统对图片不友好,word文档又太麻烦,不好管理。
作者回复: 这个我没有找到开源的方法 :( 当时我在一个小公司是这样做的: * 图像存储是Google Drive * 截屏上传工具是Share Bucket (https://apps.apple.com/us/app/share-bucket-image-sharing/id611078158?mt=12) 它支持上传到指定的Google Drive,同时存储URL到剪贴板。
5 - 我来也2019-10-26我办公用的电脑,显示器,键盘,触控板都是我自己花钱买的。 公司配的比较差。
作者回复: 我最近公司也是自配 😎
3 - 大磊2020-01-26Facebook的IDE没有使用那些商业的软件吗,比如jetbrains的,免费的vscode等,我感觉这些很好用啊😂
作者回复: 代码仓太大,导致IDE太慢。比如JetBrains的系列。另外后端代码都在数据中心的服务器上,使用IDE+远程文件速度也不行。 VSCode因为不是IDE,速度很好,远程编辑文件也不错,所以现在转向vscode了。
2 - 技术修行者2019-09-22关于研发环境的高效性,我目前的工作中是用资源池的方式,可以在几分钟内获取一套自定义的虚机,通过加载项目维护的Docker镜像,可以在半小时内搭建一套完整的环境。 但这种方式对于小型公司来说,有没有成本来创建和维护这样一套环境?从技术人员的角度来看,这样做很有价值,从公司长期发展的角度来说,也是有必要的。但是很多公司 不是互联网公司,它们可能是很传统的软件公司,平时没有高并发之类的需求,例如政府相关的项目,这种类型的项目,很多时候在现场开发,机器都不是自己提供的。这种情况很难保证研发环境的高效。 当然,这也许只是一个借口,用来发牢骚,我们应该抓住工作中任何机会去改善和提升。 关于思考题中的截屏,这是非常有价值的一个做法,特别有时涉及到不同组沟通讨论的时候,截图是很好的证据。我们的解决方案和你说的差不多,涉及到不同的工具,处理方式不太一样。 1. 如果工具本身支持图片存储,例如ZenHub或者JIRA,我们用工具本身来存储图片。 2. 如果工具本身不支持图片存储,我们用公司提供的网盘来存储图片,在工具中引用相关的链接。展开
作者回复: 写得非常好,可以看出你们团队,以及你个人,平时是比较关注研发效能,也关注研发人员技能成长的。这样的工作环境,应该很不错!
2 - 寒光2019-09-16截图的这个处理方法的确很赞👍
作者回复: 是呀,我个人超级喜欢 :)
2 - 送普选2021-01-09葛老师,问下测试数据环境有好的方法么?比如使用docker容器初始化MySQL实例或测试数据,测试完成后容器里的数据自动随容器销毁,不会遗留问题污染数据环境,谢谢1
- Phoenix2020-07-28说到痛点了,换过两家公司,都是考虑低成本,仅仅勉强提供可用的电脑配置,又以网络安全为由不准员工自己带电脑,结果就是下面的开发机器卡,慢,死机,领导天天在讲敏捷开发,高效,请问这种情况老师有什么破局之道吗?
作者回复: 我在你的另一个问题里回答了。祝好运!
2 - 技术修行者2019-09-22做到研发环境的高效性,一个基本的前提就是要意识到人的价值,人比软硬件更有价值。 如果认识不到这一点,文章中说的这些内容,会很难推动。
作者回复: 是的是的。软件研发因为灵活性和创造性,人的价值更重要了。
共 2 条评论1 - Jimmy2021-10-17我看新闻,说是facebook已经在2018年停止维护Nuclide/Atom-IDE了,转投vscode了,vscode可以利用remote插件远程登录到数据中心的开发机上开发,速度很快,目前没有发现什么卡顿的情况,感觉这个玩意很好用。
- Bravery1682021-07-16好的研发基础支撑工具和环境对于提高研发效率,真的是非常重要。
- 小包2021-04-21第二个例子是,我为一个云产品团队提供联调环境。这个云产品结构非常复杂,有十多个服务,至少需要 3 台服务器;不但有软件,还有数据、组网等复杂的设置,部署很困难;更严重的问题是,这个环境一旦损坏就很难修复,需要从头再来,所以开发人员自己配置基本不可能,运维人员也是忙于维护,应接不暇。 ---------------------------------- 我们的环境及遇到的问题跟这很类似,机器池如何组建能否详细说明下,非常感兴趣 如果一套环境需要3台机器,要保持两套空闲可用的环境,那么这个机器池需要多少准备多少机器呢,具体如何操作的呢?展开
- Joe Black2020-02-15其实做到这样还是需要公司自己内部有个为开发服务的运维团队的,至少要有几个岗。感觉这个在大部分中小公司不现实....
作者回复: 在中小公司,比较好的方式是不用专职人员,但是从政策和绩效方面鼓励高效的研发实践固化和推广。实际上Facebook等公司一开始也没有专门的团队。但是这些高效时间是一直受重视的。
- oillie2019-10-13我一般都是在jira里贴图的,然后把jira链接放到commit message里
作者回复: 这样做步骤比较多。不过也还可以 :)
- 于小咸2019-09-18之前想在公司应用trunk base的代码管理,发现总会跟别人的代码产生冲突,但每个人负责的模块不同,按理不应该冲突才对。学到这里恍然大悟,我们的开发环境和测试环境混合在了一起,并且代码没有及时同步!由于我们是一个机器人团队,每台机器人既是开发环境也是测试环境,大家通常会在机器人上进行开发,但机器人没办法分配给每人一台。 代码分散在了不同的测试环境中,没有及时同步到仓库,而测试环境又是大家共享,当同步代码时就不可避免地产生了冲突。展开
作者回复: 很高兴能给你一些解决问题的思路 :) 反正原则是想方设法让大家尽快合并代码,尽早解决冲突!
共 2 条评论 - 李双2019-09-17都是基于长远考虑,学习了
作者回复: 嗯,一直都是在短期和长期之间权衡 :)
- 刘晓光2019-09-16请教一个问题,开发机能够快速分配,有没有回收的策论?能给介绍一下么?
作者回复: 开发机器因为是开发人员经常要用,所以应该长期运行,而且系统不应该主动回收。通常来讲,可以限制每个人有1~2台。
- 许童童2019-09-16让开发流程顺畅,不阻塞,就等于是提高了效率,提升了研发效能,而且这种提升是每个开发者,员工能立即享受到的提升。
作者回复: 是的。这种环境开发起来很舒服。员工满意度容易比较高。
- Weining Cao2019-09-16我们现在遇到的一个问题是线上测试资源不够。因为我们发布的软件要支持mac系统,可是目前没有找到合适的提供mac虚拟机的服务商,可是买mac硬件又很贵。。。所以现在大部分mac环境提测的job都会长时间排队。。。
作者回复: 美国那边有Mac IaaS服务,比如MacStadium(https://www.computerworld.com/article/3431659/macstadium-announces-cloud-based-mac-iaas-for-developers.html) 不过在国内好像没有听说过。我搜了一下也没有搜到。。。