NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

按时上下班的程序员,做出来的东西没有“弹性” | DIVE 基础软件大会专访

  • 2021-11-26
  • 本文字数:4600 字

    阅读完需:约 15 分钟

按时上下班的程序员,做出来的东西没有“弹性” | DIVE 基础软件大会专访

编辑|辛晓亮

采访嘉宾|刘新铭

 

开发效率跟每个开发者和开发团队息息相关,高效率意味着可以在更快的时间内更好的完成更多的内容。但在互联网行业繁荣发展的同时不少企业还在使用“拼工时”的做法,加班、996、内卷等问题也是持续困扰多数开发者,似乎提高效率是一个很困难的事情。

 

在鉴释科技联合创始人兼首席架构师刘新铭(英文名 Shin)看来,关于如何提升研发效率的问题,要讨论的其实就是态度和时间管理。11 月 17 日,Shin 现身 InfoQ 大咖说,妙语连珠,结合自己的职业经历,给出了很多关于提升开发效率、做好时间管理等方面的思考和建议。

 

此外,在明年 3 月 25 日,Shin 还会在 DIVE 全球基础软件大会上做关于编译器的硬核技术分享,感兴趣的朋友不要错过。

 

以下内容节选自当天的分享,InfoQ 做了不改变原意的编辑:

工作其实是在投资自己

 

InfoQ:首先请您跟大家做一下自我介绍,包括职业经历,目前在做的事情等等。

 

Shin:我入行是 1984 年。从 84 年开始的 10 年时间,我都在做编译器,从最底层的开发人员做到惠普的整个工具链(Tool Chain)的负责人,负责整个工具链,包括了编译器、debugger 和性能分析器等,给惠普服务器、安腾服务器做的工具链。之后,我去做了两年操作系统,主要还是管理的工作,负责惠普分布性存储的内核部分,也是最难的部分。我们的主要工作目标是性能调优,把所有性能方面存在的大大小小的问题修复好。接下来还搞了三年的物联网,我在英特尔实验室做首席科学家,(担任)物联网实验室主任,在北京跟北京市政府合作做了几个物联网端到端的解决方案。后来,我就去了国外,在美国一家华人公司待过两年,帮他们做数字化转型,因为在那之前,该公司的软件都是用 Java 写的,我们把它变成更适合在现代的云端架构上面运行,所以这也是为什么现在在鉴释有关云方面的技术由我负责。

 

InfoQ:在您这么长的职业生涯中,遇到的加班情况多吗,您是怎么看待加班这种情况的?

 

Shin:我从入行到现在,平均一周工作时间不会少于 60 个小时,这算加班吗?以美国加州法律而言,这不算加班。所有的专业软件开发人员或者职业经理人,在他们的劳工法里是归类为“豁免”的,不需要打卡。所有的工作是根据给你的内容来定,你的任务就是把它完成,花多少时间是你个人的事情,与公司无关,不会有人强迫你一周必须工作多少个小时,而是自己去判断应该花多少时间完成工作内容。

 

所以在美国,对职业开发人员来说,不管软硬件开发,加班这个词是不存在的。这里可能有人会说,那你一周工作 60 个小时不是吃亏了吗。其实你工作有一半是为公司工作,一半是为自己工作,永远要注意个人与公司之间的平衡。

 

这里提到的为自己工作就是为自己职业生涯做投资。我做开发工作的时间多,又会去认真的思考的话,自然可以积累到越来越多的经验,个人的价值是会不断得到提高的。

 

从这个角度来说,我有一部分时间是在为自己工作,为自己加班,为自己投资。

 

InfoQ:您回国后感觉国内加班跟国外有哪些不同呢?

 

Shin:国内的加班情况跟国外完全不同。我刚才提到了我是每周工作 60 个小时,一周六天,平均一天就是 10 个小时。但是国内的员工就因人而异,我碰到过年轻的开发人员对知识非常渴望,对工作投入的时间会非常多,也遇到过斤斤计较,到点“失踪”的。这里面有一个很有趣的规律,你会发现一些比较重要或者难解的问题,慢慢会往愿意花多余时间工作的人身上去挪移。这些人会在公司里慢慢变成不可或缺的人。

 

另外做软件的话与硬件不同,软的意思就是说很有弹性。时间到了就要上班下班的人,他做出来的东西通常没有弹性,这是很有趣的事情。

首先做好个人时间管理

 

InfoQ:效率和加班是什么样的关系呢?

 

Shin这纯粹是时间管理的问题。以我个人为例,我尽量把我自己每天开会的时间压缩到不足 3 小时,剩余 3.5 个小时做比较困难的需要动脑的事情,3.5 个小时做相对简单的事情。这样的话一天就被分成了三段。那些斤斤计较每天 8 小时的,减去 3 个小时的会议,一般解决难的问题花的时间比较多,再减去 3.5 个小时,就只剩下了 1.5 个小时去做比较简单的事情。

 

可是很不幸的,简单的事情一般是决定于你自己的设计够不够好。结果就是大多数人,一天除去开会处理邮件的时间,剩余几个小时都在做杂七杂八的乱事儿,没时间去思考。当你没有时间去想和解决新问题的时候,价值就不会得到提升。

 

然后主要难的事情还没做的时候就开始焦虑,加班是被压力压出来的,不是自我管理出来的。我即使是一天工作 10 个小时,我心态是很放松的,但压力压出来的焦虑加班,就很痛苦。

 

InfoQ:简单、重要、会议这三个阶段怎么执行顺序上会有什么要求吗?

 

Shin:我先讲一下我每天怎么分配自己的时间,通常的话我是早上 10:00 开会,我会 8:30 左右到办公室开始梳理当天的工作内容,会议要讨论的要点,要解决的难点痛点,就是把最好的时间放在最困难的事情上。到下午的时候才开始写代码,修改、测试、调优等,这些是不太用大脑的。

 

InfoQ:因为开发多数是为业务服务的,在这个前提下,不可避免的会有很多临时的会议打断你的工作节奏,那么如何解决这种突发的情况对效率产生的影响呢?

 

Shin:我在带新员工的时候也会遇到这样的情况,他们反馈说你让我做很多计划是无用的,因为不断有新的东西进来打乱工作计划。还是回到那句话,如果你设计的时候想的不够远,做出来的东西就会出现很多问题。你主动管理自己的时间,管理自己做的事情,积极主动去做设计。对自己做的东西有充分全盘理解的时候,即使是突然遇到的问题,你会比较轻松的定位到问题解决问题。

 

还是回到一个工作方法和态度的问题,一个积极主动的人他被动处理问题的情况要少得多。越认真的人,要处理的问题越少,也是很有趣的事情。看你把加班当成投资还是负担,在你付出的时间上,你是主动积极的做了规划,了解全盘,还是只是被动的去接受任务。所有的开发效率就是从这个过来的。

 

InfoQ:接着咱刚才提到的会议,现在特别流行一个“站会”(Standup Meeting),这个对效率会有提升吗?

 

Shin:这个在网上大为传播是 Facebook,他们一个小团队是 5 到 6 个人,有 PM、测试、开发,每天开“站会”。“站会”这个其实是有来源的,在 1988 年有个电影《Stand and Deliver》(中文名《为人师表》),讲述一个高中的老师在洛杉矶的郊区教一群墨西哥移民的子弟。这些人基本上已经放弃了自己的人生,他就跟自己的学生打气,要站起来把事情完成,Stand and Deliver,所以“站会”是这么来的。

 

“站会”最重要的工作是在协调所有人当天的优先级,比如说两个开发人员说我需要 PM 做哪些决策,测试人员说我需要开发给我这样的信息去做哪些测试。是人跟人之间协调沟通的机制,通常合理的“站会”不能超过 10 分钟,超过 10 分钟,这个“站会”就没效率。

 

通过“站会”,小团队里要定义好我当天要完成什么工作,注意是完成什么工作而不是要做什么工作,这是国内和国外最大的不同点。一个好的“站会”是我昨天的工作完成了没,如果没有完成原因是什么,我今天的目标是什么,我可能会有困难,我需要某某人帮助我解决这些困难。这个时候小组的 Leader 就会知道基于这个互动沟通的过程去协调工作内容。

 

InfoQ:所以“站会”做好的话是能明显提高开发效率的,那开“站会”的话多大的规模比较好?

 

Shin:这个确实跟团队的大小有关系,Facebook 的标准配备是不能超过 6 个人,80 90 年代我们一个团队不超过 3 个人。国内的公司的话不缺人,一个项目就是会投入很多人员进去,每天都要开很久的会,没时间去做真正开发的事情,这不是很好的现象。

 

InfoQ:Shin 上面提到 Facebook 开发团队是 6 个人,您之前是 3 个人,国内大厂可能会多一点,那这个大小团队开发在效率上的优势劣势都有哪些?

 

Shin:这个要看团队成员的素质。国内是最好的人在大公司,美国是好的人去新创公司,因为去大公司就是一个萝卜一个坑,你能碰到的东西是很有限的。在这种环境下,他那个小团队的人是很“饥饿”的,他们对知识的追求,对工作完美的追求是没上限的,这样的团队大了反而碍事。《Mythical Man Month》这一本书中也提到了,人数的增加不能增加你的产出量,到某一个临界值反而会降低你的产出量,因为你要花更多的时间去做沟通。当然小团队也有问题,如果成员素质差太多,沟通的成本也会上来。沟通的成本是由团队的素质、成员的数量、项目切割的碎片化程度三个因素决定的,效率也就因此而来。

工具对效率的影响

 

InfoQ:最近比较热门的云原生会对团队效率有所提升吗,这应该算是工具向的吧?

 

Shin:我举一个例子,我们从去年的 9 月开始,把我们的软件从一个 Server 上搬到了云上,我们当时选的是亚马逊的云,因为他们云原生的架构比较完整。上云之后,我不需要再搞很多东西,之前在 Server 上的中间件等都可以丢掉。所以云原生带最大的价值,你原来必须要维护的中间件,都可以交给他们去做,我个人觉得效能提升是巨大的。最大是因为中间件大家都是开源的。

 

InfoQ:工欲善其事,必先利其器,我们能看到选对或者配置好开发工具之后对开发者效率的显著提升,也发现了不少开发者陷入了工具中,反被工具所累,Shin 怎么看待工具对效率的影响?

 

Shin:聪明的人是工具为他所用。我个人的习惯是自己造工具,根据自己的需要造工具,不管做什么事情,用什么工具,都是完成工作的目标,假设工具不能为我所用,我不会在上面浪费一分一秒。我对用什么工具没有意见,重要是顺利的完成工作。

 

InfoQ:Shin 对今天讲的内容简单做一下总结吧?

 

Shin:我觉得主要是以下几个点。

 

第一,要改变自己的心态,你的工作是为自己投资,不只是还老板的债,让自己开心一点,为自己投资是开心的事情,还债是痛苦的事情。

 

第二,时间要管理好,每天要花足够的时间解决需要动脑的事情,这个东西其实是给自己设置了高标准,你不会去接完全是搬砖的活。这些是可以自己主动要求的,你有了第一个改变,才会有第二个改变。

 

第三,就是要评估自己工作的做的好不好。科学的做法就是大胆的假设,小心的求证。我个人觉得国内有个东西是不太好的。国内所有的团队开发人员,心理上对测试是排斥的,我个人不认为测试是单纯的测试,我把测试认为是一个求证的过程。

 

最后一个就是要看书,每周至少要花半个小时去看书,最重要的是你要跳出每天固定的思维,如果人一天一直是在一个圈里,长此以往,思维会固定住。也不建议看抖音,比较浪费时间,技术直播是可以看的。开车的是话可以听一些录音的书或者让自己放松的音频。每天多花点时间充实自己。


活动推荐:


InfoQ 决定于 2022 年 3 月 25 日至 3 月 26 日在北京悠唐皇冠假日酒店举办【DIVE 全球基础软件创新大会】,刘新铭作为本届大会【编译器】专场的出品人也会出现在会场与大家交流。本专场重点介绍全球编译器的发展方向和现状、编译器在国内的研发成果及在芯片等尖端行业的应用,给编译器这一底层技术从业者和爱好者带来一些新的启发和认知。未来十年将会是基础软件发展的黄金十年,如果你对这些内容感兴趣,一定不要错过。

议题提交页面:https://dive.infoq.cn/2021/beijing/track/1224

大会报名页面:https://dive.infoq.cn/2021/beijing/apply


专家介绍:


刘新铭,鉴释联合创始人兼首席架构师。主导鉴释面向 DevOps 的静态代码分析工具的核心研发工作。他在开发和交付高性能计算系统(HPC)编译器和性能分析工具方面拥有数十年的丰富经验,是业界公认的静态代码分析技术专家。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-11-26 14:242897

评论 5 条评论

发布
用户头像
内容很好,用标题吸引眼球不太行
2021-12-04 18:15
回复
用户头像
这和福报没啥差别
2021-11-27 16:21
回复
更多的是心态上的不同
2021-11-29 09:53
回复
更多的是幸存者的偏见。幸好有得选择,否则还不如机器。
2021-12-04 08:40
回复
本来我也很羡慕那些一天不用睡觉,天天扯淡的人,他们的能力很强,但是我后面发现,我不是这样的人,天生限制了,我只能做一条咸鱼。
2021-12-04 08:42
回复
没有更多了
发现更多内容

贴吧低代码高性能规则引擎设计

百度Geek说

低代码 规则引擎 平台化 企业号 1 月 PK 榜

Koordinator v1.1发布:负载感知与干扰检测采集

阿里巴巴云原生

阿里云 云原生 Koordinator

经常会采坑的javascript原型应试题

loveX001

JavaScript

k8s 学习实战(一)

AiDaddy

k8s安装 kubenetes

Java高手速成 | 数据库实训:图书馆管理系统建模

TiAmo

数据库 管理系统 1月月更

React-Hooks源码深度解读

flyzz177

React

从源码角度看React-Hydrate原理

flyzz177

React

从recat源码角度看setState流程

flyzz177

React

用javascript分类刷leetcode13.单调栈(图文视频讲解)

js2030code

JavaScript LeetCode

看透react源码之感受react的进化

flyzz177

React

详解UDS CAN诊断:SecurityAccess Service(SID:0X27)

不脱发的程序猿

汽车电子 CAN ISO 14229 诊断和通信管理功能单元 SecurityAccess Service

ChatGPT 最近火得不要不要的

HoneyMoose

Reids的BigKey和HotKey

小小怪下士

Java redis 程序员

SPL 实现电力高频时序数据实时存储统计

石臻臻的杂货铺

SPL

小心被坑死!如果你还在用 Zookeeper 做注册中心

风铃架构日知录

Java zookeeper 程序人生 后端 注册中心

云时代,最好用的MySQL客户端工具推荐

NineData

MySQL 数据库 GUI

ChatGPT 使用 API 进行 Postman 调用测试

HoneyMoose

React源码分析(一)Fiber

flyzz177

React

深入react源码看setState究竟做了什么?

flyzz177

React

Kubernetes 跨集群流量调度实战 :访问控制

Flomesh

Service Mesh 服务网格 服务网格

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

AIGC最近很火,给大家推荐一个已经有1000位开发者使用的中文aigc开源模型,包括ai画图、ai聊天

AIGC布道者

人工智能 机器学习 AI AIGC AI绘画

谈谈你在面试中遇到的一面、二面、三面有什么区别?

风铃架构日知录

Java java面试 程序员面试 面试‘’ 面试流程

每个人都必须为2023年的十大基本技术趋势做好准备

超自动化

AI 超自动化

【架构设计】你的应用该如何分层呢?

JAVA旭阳

Java 架构

一体化运维,降本增效!秒云助力海富通基金打造智能运维平台

MIAOYUN

运维 金融 智能运维 IT解决方案

一文教会你mock(Mockito和PowerMock双剑合璧)

京东科技开发者

测试 powermock Mock pom 企业号 1 月 PK 榜

国内首款支持gRPC+WebSocket调试的工具——Apipost

不想敲代码

群晖NAS设置Calibre个人电子图书馆

刘旭东

群晖 Calibre 个人图书

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

HarmonyOS开发者

HarmonyOS

按时上下班的程序员,做出来的东西没有“弹性” | DIVE 基础软件大会专访_文化 & 方法_辛晓亮_InfoQ精选文章