章老师博士毕业后在清华待了 12 年,主要是做网络方面的研究,到 2006 年的时候离开清华,进入到工业界,首先做了六年的用户产品研发,之后在 2012 年加入百度,一直做网络基础架构相关的开发工作,主要是对内服务,在运维部和系统部,做 BFE 平台研发。2020 年 6 月份转入对外服务,现在在做 BFE 商业化推广。2018 年 1 月到 2021 年 10 月份,兼任百度公司代码规范委员会主席。
接下来的内容主要分为三个部分,都是在围绕工程能力。第一,说明清楚为什么要重视工程能力;第二,阐述什么是工程能力;第三,说一下怎么来提高工程能力。
为什么要提升工程能力
这个话题这两年受到很大的关注,和现在形势变化有很大关系,第一个很重要的形势是业界竞争加剧了,很多所谓蓝海或者非常空白的领域已经不存在了,大家都在同一个领域竞争,竞争非常激烈;成本已经发生了巨大的上涨,现在中国软件工程师成本与美国相比,差距没有那么大,据之前的交流,中国软件工程师的成本已经超过英国,跟美国已经没有太大的差距了;产业升级,之前互联网公司大部分做的是 ToC 互联网,现在很多公司都转向 ToB,转向 ToB 对软件研发或者工程能力的要求,已经有了非常大的变化。
另外也发现一些现象,现在很多互联网公司加班加点。在去年还出现了 996.ICU,圈外人不知道什么意思,圈内人都知道,每天 9 点上班,9 点下班,一周工作 6 天,最后累到进入 ICU 重症监护室。今年我们也发现有一些变化,很多公司开始响应国家号召,减少工作时间,尽量避免 6 天工作制。但是减少时间之后,我们该怎么样保证工作产出?这其实要依赖我们的工程能力。
我还观察到的现象,很多的从业者写了很长时间的代码,甚至 8-10 年以上,但是很多的方法都是错的,换句话说,软件工程师是一个所谓的青春饭,为什么?其实跟从业者的素质是有关系的。所以以上的形式,要求我们中国的软件工程师,也需要更新迭代。
《经济新动能》一书讨论的是中国经济如何进行转型升级。在这种大潮流下,IT 从业者或者中国软件工程师也要考虑这个问题,就是这四个字“转型升级”。
什么是工程能力
很多人认识到要提升工程能力,但是提升什么能力呢?如果没有正确的认识,可能也无从下手。有些人会认为工程能力就是写好代码。确实我们很多软件工程师每天关注的或者平时学习的东西,仅仅是写代码。
但是我今天重点想表达的观念是,工程能力不仅仅是写好代码这么简单,也不是某一个人写好代码这么简单,它反映的是团队的综合素质。软件工程师大多是理工科毕业,感觉人文学科对软件工作似乎是没有太大的帮助,但我经过这 20 多年软件研发之后,深刻体会到做工程不仅仅是自然科学,也是人文社会科学。所以对于从业者来说是需要关注那些非技术的方方面面,而且你会发现在你工作的大量时间中,并不是用在琢磨技术上,很多时间可能是涉及到沟通等非技术因素,对我们影响非常非常大,还有包括项目管理,这些看上去和技术并没有直接关系,但是对研发项目,或者工程能力影响是巨大的。
工程能力的定义来自《百度软件工程能力定义》,这是百度内部的文件,写于 2019 年底,当时要提升工程能力,需要有文件阐述到底什么是工程能力。最后我们写了这样的一句话:使用系统化的方法,在保证质量的前提下,更高效率为客户和用户持续交付有价值的软件或服务的能力。这句话可以拆解为以下五个要点,第一是研发的目的是要提供价值,第