15 码农,开发者,工程师,你究竟是谁?
你好,我是晓蕾。这一节我们一起重新认识一下自己的定位。
有时候我们自嘲说自己是码农,有的同学会认为自己是开发人员,还有的同学坚定自己对技术是有一些追求和想法的。在通用的认知里,大家会认为再往上走就是架构师,接着就是CTO、CEO了。
在这么多自我定位里,道哥为什么偏偏选了工程师这个词?什么是工程?什么是工程师?工程师和开发者有什么不同呢?
极客时间:回到咱们访谈主题里工程师这个词。我们先说说工程师三个字里,什么是工程?
道哥:关于工程的定义,首先要讲清楚什么是技术,什么科学。这是个关键问题,如果没搞清楚这两个词是什么意思,很多方向就是错的。
什么是科学,什么是技术呢?很简单,科学是发现这个世界存在的规律,它是发现的过程。技术是发明一个世界上不存在的东西,是个发明的过程。发明和发现的区别,代表了科学和技术的不同。
你会发现所有的科学家都是在发现一个已经存在的规律,不管是数学还是物理,包括自然科学,都是一样的,是要去发现已经存在的规律。但是技术不一样。说起爱迪生,你第一时间想到的是发明家,他发明的所有人造物,世界上以前存在过吗?不存在,对不对?然后他把它搞出来了,这就是技术。
再举个例子,为什么中国会有科学院和工程院呢?因为它们还是不一样的,两者的目标不一样。很多人都没搞清楚中间区别,但是没关系,我们的开发者肯定会搞清楚它。
在技术和技术中间会用到大量的东西,这个时候工程就和系统结合到一起了。系统工程在我们国家是钱学森提出来的,钱学森真的很了不起,他在科学上有很大的发现,在工程上面也有很大的成就。
系统首先是要做大量的组合,一个系统中间一定有不同的模块。钱学森了不起的地方在于他讲清楚了“对于系统来说,重要的是全局最优,而不是局部最优”。所以其实钱学森一旦到了具体的系统模块,他也是搞不清楚的,但是他一定是清楚全局的。
举个具体的例子,对我来讲,之前做的上海城市大脑这个工程,这个东西对我来说,就是要把它封装成一个整体。单独的飞天、单独的5000台服务器、单独的数据库、单独的AI算法都是不起作用的,都是局部。具体局部到每一个模块我也不懂,比如说AI的视觉算法,哪个算法好,这个我也不懂的。但是它最终是要组成一个系统的,整体应该做成什么样我是懂的,而且整体的目标我是清楚的,我定义的,所有的风险我要把控。然后每个模块之间的连接和反馈这些机制我要把它建立起来,这就是系统,最后把它封装成为一个整体。
当你把一切的成本控制下来,把一切的安全解决好,性能把它给做上来,这个时候它就变成了一个比较好的系统。慢慢地,大家就潜移默化地接受它是一个独立个体,会把它看成一个整体,而不是看成局部的组合。我觉得这个就是工程的意义所在了。
现在很多同学可能还是很懵懂的阶段,像我刚进阿里的时候,连公司怎么赚钱都不知道,那我就不可能做工程了。因为我们必须要有一个全局的视角。至少知道这家公司、这个业务要什么东西,才能够做出判断。我们如果不抬头看一看,连做这个判断的能力都没有,那就只是Coding,某一天你的老板会跟你说,今天可能不需要你了,公司这个模块砍掉了。
所以为什么我做计算讲谈社的时候说“培养一个面向未来的CTO”,给大家讲各种各样的东西?讲量子计算,讲碳中和,讲人工智能……可能CTO他就是开发网站的,那他为什么还要学这些东西呢?因为今天你如果不懂这些东西,未来连做判断的能力都没有。那还怎么做CTO呢?
极客时间:工程的概念理解了,那什么样的人算是工程师呢?
道哥:稍微总结一下,我们谈了什么是科学,什么是技术。谈到了技术里面几个关键的要素,成本、性能、安全。接着谈到什么是系统,最后,一个好的系统需要通过工程来完成。可以说,工程的最终目标是要做出一个交付,或者是一个产出物,这个产出物对社会是有价值的,是以前社会上不存在的,被我们人为造出来、发明出来的。这是工程师要干的事情。
我们永远都在追求创新和差异化,如果这个东西世界上已经存在了,就变成我去Copy一下就好了,那不是工程师要做的事情。在我看来,所有的工程师都在追求大工程。所以我给自己的定位是工程师,因为我一定是在追求如何做大的工程的。
大工程是所有工程师想追求的一个目标,就像所有的开发者都想做CTO。如果你真的是个工程师,一定是抵抗不住大工程的诱惑的。比如说中国的跨海大桥,那是相当了不起的工程。比如说宁波湾跨海大桥。你想想,这是多大的一个人生成就,这辈子就够了。实现大工程主要有两个路径,一个是政府主导,一个是商业化路径。比如说美国以前最大的工程阿波罗计划、曼哈顿计划,这些都是政府主导的。
对我来说,云盾是个小工程。真正的大工程,我觉得上海城市大脑是一个,因为我觉得它是有历史地位的,今天可能还看不出来,但是它的历史地位是确实存在的,其他的我还在追求。
再举两个工程师的例子。比如你说王坚博士的角色是什么呢?他是个企业家,他创造了阿里云,但我认为他最终的贡献不是创造阿里云这家公司,而是他创造了飞天,所以他是个工程师。现在他追求的下一个目标就是创造城市大脑。
还有马斯克,他非常清楚地知道自己要的是什么,他会把这个工程系统宏观的架构设计出来,而且他会用尽一切的手段去解决掉中间的风险。甚至可以说,只要世界上存在一种方法,那他就一定能解决掉。在他创业早期做Space-X的时候,他看了所有跟火箭有关的材料,问了很多火箭专家,都告诉他把成本降下来是不可能的。但他看完所有资料之后,他说这个完全是可能的。
为什么会出现这种情况?是因为专家他只懂那个领域的东西,但他们没有真正理解什么叫做工程,什么叫做系统,所以也没有办法从全局的视角设计一个大的系统结构。但是马斯克具备这种能力。这是他最了不起的地方,这个也是工程师需要具备的。
极客时间:关于工程师,你刚才提到了王坚博士、马斯克,还有离我们更近的例子吗?
道哥:举个例子,最近大模型挺热,我在抖音上就刷到了一个很好的工具。那个工具我自己还用了一下,我觉得这个想法挺好的,很综合,真的就像微软想做的Copilot一样,人家已经做出来了。我找人接触了一下,然后那个人跟我说这是一个小孩做的,才24岁,在一家外企,他基于大模型做了一个类似Copilot的工具。我侧面打听了一下,问他拿过投资没有?他说都拒绝掉了,他认为这个事情一个人就能搞定。很有趣的年轻人。
我们看了一下他的程序,觉得中间程序代码的深度肯定是有一些问题的,他的技术专业度一定是不够的。但是我们拿他跟在大厂上班的一个高P对比一下,你会发现,这些大厂高P可能已经没有激情了,只会干自己领域的事情,他是这个领域的专家,但是他永远做不出这样的东西。
所以这两类人是不一样的,像这个年轻人身上有动手能力,他是一个工程师。而有的人只是从事了一份工作,仅此而已。这两类人的状态和自我设限的程度也是完全不一样的,在大厂有很多这样的人,或者说大厂大多数的人是这样的,只会干自己能干的事情,也没有兴趣去看看世界。但是年轻人啥也没有,自己折腾,觉得能干所有事情,年轻人就觉得自己什么都能干。
极客时间:我的理解是,心理或者精神上年轻的人,就会觉得自己什么都能干,个人的状态、自我设限的程度就会不一样。刚才说工程的时候提到了“系统”,系统和我们常说的架构有没有什么关系?
道哥:我觉得架构是一个很误导人的概念。我很少提架构,而且我非常谨慎地在提架构。因为现在外面对于架构师的定义是完全不一样的,好像做技术的级别一高就做架构了,有的架构师还不写代码。
其实所谓的架构很简单,系统里的结构就是它的架构,架构师的职责就是去把这个系统的结构设计得合理。那么问题就来了,他怎么把这个架构设计得合理?这取决于他的认知水平。他的认知水平取决于什么?不就是我刚才说的工程师所有需要具备的一些能力吗?所以他得有判断。
或者这么说,大多数有架构师Title的人,其实是伪架构师,我认为这里面的一部分同学不一定真正具备架构设计能力,甚至可能连目标都没搞清楚。目标是根据需求来的,有需求才有目标。有的架构设计可能连门都没摸到,只是把开源社区的东西Copy一下,把别人的PPT拿过来改,别人写得很好的PPT画一画,那个不叫架构。
极客时间:关于架构师这件事,现在跟业务结合在一起有了各种各样的分类,有业务架构、系统架构、技术架构、安全架构等等,从你的理解来看,这么多的分类有必要吗?
道哥:这都是赶时髦。比如说所谓的业务架构或者产品架构,因为我自己做产品这么多年,我觉得我现在在做的事情就是产品架构。我现在不管细节的东西,但是我会跟团队讲清楚,整个产品哪些大的模块和功能是必须要有的,细节交给团队的同学自己去做,但是没做对我也会看到。所以我自己觉得可能叫产品架构师更贴切一点,但是我觉得我的定位就是产品经理,仅此而已。
至于为什么说是赶时髦呢?因为弄了一个大家搞不清楚的名词出来。因为搞不清楚,所以大家就会觉得高大上。由于有这个Title的都是高级别的人,薪资也比较高,所以就越来越多人想要成为架构师,其实可能自己也不清楚什么是架构。
其实我认为没有必要分那么细,尤其像业务架构,不就是画张图的事情吗?一张图,就一页PPT,把你的行业分一分,业务架构就做完了。那还要什么架构呢?这个架构一定是在CEO的脑子里的。
极客时间:刚才我们还谈到了大的工程项目,好像都是在特定的历史时期有了一个机遇,这一点是不是能做大工程最重要的一个因素呢?
道哥:我想给你分析几个做大工程的特点,应该就能回答这个问题了。
这事儿首先跟国力有关系,跟市场环境有关系,不管是政府有没有钱,还是说市场有没有能力去买单,这个都有一定关系。所以我觉得现在中国还是很幸运的,有机会做更大的工程。你想想,一个非洲的小国家怎么可能做大工程,不可能,他们都得去买美国的东西或者中国的东西。从历史来看,我觉得就是这个问题,不是别的因素。
其次,做大工程是要有资源的。做工程的第一件事情就是谈资源。我去做城市大脑,去上海的第一天,应该是第一次给博士汇报,就被他嘲笑了一遍,他就说人家打这种大仗,就是飞机、坦克都派出来了,你就拉了个游击队出来。兵马未动,粮草先行,你的粮草在哪里?我这才马上去谈了几个合作伙伴,成立了事业部,投几百个人进来,最后这个项目有600人、5000台服务器、100个PB的数据,这都是巨大的资源,没有这些资源,这个工程不可能的,做大工程必须有资源在后面。
我们今天在家里也可能单机搞出一个东西,但这种它不是工程师做的东西,不是说今天脑子一热,写了程序放到GitHub上,有很多Star。它跟工程没关系,这只是一位开发者做了一个很好的开源软件,仅此而已,个人英雄主义。
最后,工程是团队作战。所以我当时花了很多力气去解决团队内部的矛盾,去协调各部门之间的关系。从这个层面看起来,你会发现这个工程的负责人很多时候不再做技术了。
讲到这里,我们也再稍微延展一下开发者跟工程师的差别,单个的开发者是做不了工程的,团队在哪里?资源在哪里?写某个软件只是一个很小的局部,比如飞天,写出来的这个代码是死的,我们今天不把它Post到上海,变成上海城市大脑,它就不是个工程。
互动小茶桌
在我的理解里,工程师这个词似乎已经脱离了程序员这个群体的范围。或者说,它不单单包含程序员所做的事情,反而更像是一个集大成者。就像道哥说的,只懂单一领域是不可能成为工程师的,我们都需要具备全局视角,从手中局部的工作看到系统的整体。视角的变迁会带给我们不一样的感知。
不知道你是不是和我一样,在这次的访谈里隐隐感知到了工程师精神中的勇气。了解新的领域,抬眼看看世界,自己完成一个在别人眼里需要团队作战才能实现的工具,不给自己设限,这些都是勇气。
到这里,“一个思考者的自我训练”就结束了。在这一场超级脑暴中,最让你印象深刻的观点是什么呢?欢迎你在留言区和我们互动。如果有所启发,也欢迎把内容分享给更多的朋友一起交流学习。
下一节,我们会一起进入到访谈的第三部分“对话未来工程师”。
戳此加入访谈交流群,和道哥一起探索工程师精神。
- Naro君 👍(2) 💬(1)
嗨
2023-09-18 - 再来两盆米饭 👍(2) 💬(1)
道哥的讲述很通透,让我对工程师精神有了更多深入的感触,平时工作中的个人存在感还是蛮低的,也有些迷茫,看了这篇让我对今后职业规划有了些方向
2023-09-18 - xtepCool 👍(3) 💬(0)
好了。,道哥把产品经理,码农,独立开发者,架构师都怼了个遍
2023-09-19 - 刘天宇 👍(1) 💬(0)
这工程师是总工程师(总师)的概念。大工程少,总师也少。
2023-11-05 - Bradly 👍(1) 💬(0)
干了6年软件工程师了,读了这篇访谈对这个职业有了新的认知,对工程师这个称呼和做项目从全局考虑等等感触很深
2023-09-24 - 天天向上 👍(0) 💬(0)
醍醐灌顶
2023-11-20 - Geek_f40e72 👍(0) 💬(0)
工程师是集大成者,build things up,按时把事情做成
2023-10-26 - Geek_411955 👍(0) 💬(0)
人生自古~
2023-09-28 - 于途 👍(0) 💬(0)
对于系统来说,重要的是全局最优,而不是局部最优。
2023-09-23 - 苏果果 👍(0) 💬(0)
🎉喜大普奔🎉 道哥将于9月20日17:00做客「极客时间」直播间。 关于道哥,关于自己的成长,你还有什么想问的问题吗? 欢迎在任意一节课下方【留言评论】! 我们会在【赞数较高】的问题中挑选3个,在直播间给出【比留言回复更更更详细】的解答! 还等什么!快来提问吧!😉
2023-09-18