研发效率破局之道
葛俊
前 Facebook 内部工具团队 Tech Lead
34093 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
研发效率破局之道
15
15
1.0x
00:00/00:00
登录|注册

11 | 研发环境:Facebook怎样让开发人员不再操心环境?

测试环境、类生产环境
开发过程中使用的各种工具、数据和配置
本地环境、联调环境
IDE
开发机器
低效研发环境对研发效能的影响
截屏工具流程的价值和实现方式
注重环境的一体化、一致性
对环境的获取进行服务化、自助化
舍得投入资源,用资源换取开发人员时间
测试环境、类生产环境的管理
本地环境、联调环境的实施案例
IDE的演化
开发机器配置
研发环境的组成
开发环境的重要性
思考题
提供高效研发环境的原则
Facebook的实践
如何让开发人员少操心环境
研发环境配置问题

该思维导图由 AI 生成,仅供参考

你好,我是葛俊。今天,我来和你聊聊研发环境的问题,也就是如何才能让开发人员少操心环境,甚至不操心环境。从这篇文章开始,我们就一起进入工程方法模块了。
第 5 篇文章关于“持续开发”的讨论中,我与你介绍了获取开发环境是开发工作的核心步骤之一,对提高研发效能来说是非常值得优化的环节。当时,我与你提到了开发环境服务系统以及沙盒环境,解决了开发环境的准备工作。
而这里的“开发环境”只是研发环境的一部分,特指开发机器环境,包括开发机器的获取、网络配置、基本工具以及代码的获取和配置。今天,我们就来看看整体的研发环境的配置问题,从全局上切实解决开发人员因为操心环境而导致的效能低下。
在此之前,你可以先回忆下是否对以下问题似曾相识呢?
开发人员使用的电脑配置太低,运行太慢,编译一次要 10 分钟;
测试环境不够,上线时熬夜排队等环境;
工具零散,不成系统,很多步骤需要手动操作,开发思路常常因为流程不连贯而被打断;
团队成员的环境设置参差不齐,有个别开发人员环境配置得比较好,效率比较高,但没有固化下来,其他团队成员也用不上。
这些问题,实际上都可以归结为研发环境不够高效。就像低劣的空气质量和食物质量会影响我们的身体健康一样,不理想的研发环境会严重降低研发效能。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Facebook在研发环境配置方面展现出色,致力于提高开发人员的效率和体验。他们通过优化开发机器、持续投入IDE、提供高效的开发过程工具和环境,解决了开发人员因环境问题导致的效能低下。采用机器池的方法,为开发者提供自助式服务,极大地缩短了获取环境的时间。在开发过程中,他们重视开发体验,将开发流程中常用步骤的自动化做到极致,例如提供了端测的截屏工具,大大提高了效率。在测试环境、类生产环境的管理上,Facebook使用了内部系统进行管理,以IaC的方式进行管理。他们的实践经验可以总结出一套提供高效研发环境的原则,包括舍得投入资源、对环境的获取进行服务化、自助化、注重环境的一体化、一致性等。这些原则对其他公司的环境配置也具有借鉴意义。 Facebook在研发环境配置上的实践经验值得其他公司学习和借鉴。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《研发效率破局之道》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 小名叫大明
    我看到了个人认为比较重要信息: Facebook认为人力成本更高,这个意识比较重要,很多公司没这个意识,有这个意识的确是通过延长工作时长来补,加班及长期加班又降低了非工具和环境造成编码效率,恶性循环。 慢慢理解招聘时多研发自驱,兴趣等能力的重视的原因了。哈哈

    作者回复: 很高兴能启发大家一起思考!这才是最重要的 :)

    2019-09-16
    2
    16
  • 寒光
    想问下老师,“一图胜千言”的解决方案有没有对应的开源产品呢?现实中这个问题太烦人了,好多流程管理系统对图片不友好,word文档又太麻烦,不好管理。

    作者回复: 这个我没有找到开源的方法 :( 当时我在一个小公司是这样做的: * 图像存储是Google Drive * 截屏上传工具是Share Bucket (https://apps.apple.com/us/app/share-bucket-image-sharing/id611078158?mt=12) 它支持上传到指定的Google Drive,同时存储URL到剪贴板。

    2019-09-16
    6
  • 我来也
    我办公用的电脑,显示器,键盘,触控板都是我自己花钱买的。 公司配的比较差。

    作者回复: 我最近公司也是自配 😎

    2019-10-26
    3
  • Phoenix
    说到痛点了,换过两家公司,都是考虑低成本,仅仅勉强提供可用的电脑配置,又以网络安全为由不准员工自己带电脑,结果就是下面的开发机器卡,慢,死机,领导天天在讲敏捷开发,高效,请问这种情况老师有什么破局之道吗?

    作者回复: 我在你的另一个问题里回答了。祝好运!

    2020-07-28
    2
  • 大磊
    Facebook的IDE没有使用那些商业的软件吗,比如jetbrains的,免费的vscode等,我感觉这些很好用啊😂

    作者回复: 代码仓太大,导致IDE太慢。比如JetBrains的系列。另外后端代码都在数据中心的服务器上,使用IDE+远程文件速度也不行。 VSCode因为不是IDE,速度很好,远程编辑文件也不错,所以现在转向vscode了。

    2020-01-26
    2
  • 技术修行者
    关于研发环境的高效性,我目前的工作中是用资源池的方式,可以在几分钟内获取一套自定义的虚机,通过加载项目维护的Docker镜像,可以在半小时内搭建一套完整的环境。 但这种方式对于小型公司来说,有没有成本来创建和维护这样一套环境?从技术人员的角度来看,这样做很有价值,从公司长期发展的角度来说,也是有必要的。但是很多公司 不是互联网公司,它们可能是很传统的软件公司,平时没有高并发之类的需求,例如政府相关的项目,这种类型的项目,很多时候在现场开发,机器都不是自己提供的。这种情况很难保证研发环境的高效。 当然,这也许只是一个借口,用来发牢骚,我们应该抓住工作中任何机会去改善和提升。 关于思考题中的截屏,这是非常有价值的一个做法,特别有时涉及到不同组沟通讨论的时候,截图是很好的证据。我们的解决方案和你说的差不多,涉及到不同的工具,处理方式不太一样。 1. 如果工具本身支持图片存储,例如ZenHub或者JIRA,我们用工具本身来存储图片。 2. 如果工具本身不支持图片存储,我们用公司提供的网盘来存储图片,在工具中引用相关的链接。

    作者回复: 写得非常好,可以看出你们团队,以及你个人,平时是比较关注研发效能,也关注研发人员技能成长的。这样的工作环境,应该很不错!

    2019-09-22
    2
  • 寒光
    截图的这个处理方法的确很赞👍

    作者回复: 是呀,我个人超级喜欢 :)

    2019-09-16
    2
  • 技术修行者
    做到研发环境的高效性,一个基本的前提就是要意识到人的价值,人比软硬件更有价值。 如果认识不到这一点,文章中说的这些内容,会很难推动。

    作者回复: 是的是的。软件研发因为灵活性和创造性,人的价值更重要了。

    2019-09-22
    2
    1
  • Joe Black
    其实做到这样还是需要公司自己内部有个为开发服务的运维团队的,至少要有几个岗。感觉这个在大部分中小公司不现实....

    作者回复: 在中小公司,比较好的方式是不用专职人员,但是从政策和绩效方面鼓励高效的研发实践固化和推广。实际上Facebook等公司一开始也没有专门的团队。但是这些高效时间是一直受重视的。

    2020-02-15
  • oillie
    我一般都是在jira里贴图的,然后把jira链接放到commit message里

    作者回复: 这样做步骤比较多。不过也还可以 :)

    2019-10-13
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部