开发者涨薪指南:提升软、硬实力

作者 | 田玮靖

出品 |《新程序员》编辑部​​​​​​​​​​​​​​

“成长”是一个永恒的话题,伴随着生命的始终。而在生命中占据很长一段时间的职业生涯,是提及成长最多的时期。作为开发者,在职业生涯的不同时期会遇到不同的挑战。初入职场时,容易遇到技术瓶颈问题如某项技术怎么实现、代码质量如何提升等。在职场摸爬滚打几年后,开始管理技术团队,此时如何与人沟通,说服大家为了共同的目标努力,以及怎么提升团队的研发效能等管理问题扑面而来。如果后续担任企业CTO或选择技术创业,还将思考技术如何更好地赋能业务发展、如何排兵布阵和断事用人、如何布局未来及制定战略方向等问题。

不难发现,推动开发者职业通道不断上升的自身因素主要有两方面:硬实力、软实力。前者主要表现为技术开发维度,而后者涵盖了洞察力、判别力、决断力、沟通力、管理力、领导力等多个维度。如何提升软、硬实力?或许我们可以从已经获得成功的前人身上汲取经验。

《新程序员》001期-004期

《新程序员:我们的技术时代,我们的程序人生》一书中,多位知名“技术大神”和正在奋斗的开发者分享了他们的成长经验。其中,C++之父Bjarne Stroustrup、MySQL之父Michael “Monty” Widenius、SUSE CTO Brent Schroeder;阿里巴巴CTO程立(鲁肃)、技术创业者和投资人戴志康、游戏开发者云风提到了技术能力与管理能力的提升,希望能给渴望提升实力的开发者带来启发。

1、硬实力提升

初级开发者:训练逻辑,打好基础

作为与数据打交道的初级开发者,严密的逻辑思维是不可或缺的,也是写好代码的基础,而能够让逻辑思维升级的重要手段便是学习数学。

被称为“C++之父”的Bjarne Stroustrup(以下简称Bjarne)曾这样建议:“程序员在数学上付出的努力永远不会白费。学习数学是训练我们大脑的最佳方法之一。”Bjarne用其四十余年的编程经历告诉开发者,虽然在很多应用程序的开发中不会用到数学,但在构建基础设施或大规模部署应用程序时,容量和成本问题忽视不得,为了获得更大容量的同时使用更小的成本,算法就会起到关键作用,而如果不具备深厚的数学知识,或许得不到最优解,甚至会带来危害。

另外,对于大多数开发者来说,学习数学的用途主要体现在概率和统计方面,用来判断代码速度是否够快、某个功能是否有足够的扩展性、某个故障的发生概率有多大及其影响范围有多广,等等。

《新程序员》资深开发者:追根溯源、融会贯通

从普通开发者成长为资深开发者,再从资深开发者升级为“大神”开发者,最重要的能力不是代码写得多巧妙,而是追根溯源、融会贯通的能力。

知名技术创业者、天使投资人戴志康在接触无数技术创业者并阅览他们的创业经历后,总结出优秀开发者和普通开发者的区别:优秀的技术人就是能够从更高的角度看问题,‘知其然知其所以然’,而普通的技术人,通常是将别人抽象、总结的东西拿过来,不善于或不习惯亲自探究‘所以然’,这时总会碰到‘这个能做,那个做不了’的问题。为什么优秀的技术人很少遇到这种情况?因为他的思考框架已经涵盖技术周边(即横向如前端、后端、运维、产品等)和技术纵深(即纵向如架构、算法、数据库、操作系统等)两个方向。此外,他还可能触类旁通发现许多事物的类似规律。

可见,开发者变“强”的关键在于突破横、纵两个方向的认知维度。而对于突破认知维度的方法,戴志康以自身实践的经验举例:“二十年前我用PHP语言开发软件,PHP的上游是什么?是操作系统、数据库等基础软件。而在数据库中,有SQL语句、执行计划、存储结构、存取机制等,逐一钻研。因为只有清楚SQL语句的上游需求,这条SQL语句才能写好,只有了解操作系统执行逻辑,才能写好PHP。”正是通过不断地追根溯源,戴志康发现他的技术开发能力提升了一大截。

正所谓“实践出真知”,在计算机的世界中,很多问题通过假设、验证、分析的方式都能找到答案,如怎样的代码会让程序运行速度加快,再如不同的文件尺寸和变量会对解释型语言的执行有什么影响。通过钻研和总结每次实践的结果,了解程序的运行逻辑。当一个开发者清楚自己写下的每一行代码会以何种逻辑、何种速度执行,以及带来何种结果时,他就突破了纵向的认知维度。而突破横向的认知维度,简单来讲是跳出岗位本身的限制,从全局思考上下游链路的需求、原理、方法等,并将技术逻辑运用到其他领域分析问题,做到融会贯通。

《新程序员》“大神”开发者:看透本质,将复杂的问题简单化

与追根溯源、融会贯通相辅相成的能力是看透本质,将复杂的问题简单化。

如果开发者可以用足够简单的方法解决根源问题,抛开中间的一些枝节干扰,那他就具备了所谓“10x程序员”的能力。就技术开发而言,很多年轻程序员都喜欢炫技,拥有近四十年的码龄的“大神”开发者云风年轻时也一样,但如今他认为炫技不能解决问题的本质。这与把事情做简单有什么关系?以前云风认为写出复杂的程序并且不出错是一种出色的能力,可随着时间的推移,代码需要被别人维护,可能还要和其他人合作,这时会遇到一个问题:怎么让代码更容易被理解?因此,开发者必需让代码足够简单,让别人一看就明白。好代码是开发者的一张名片,什么样的代码是好代码?云风的编程经历告诉他,“并不是看上去好像没有问题的代码,而是看上去所有东西都清清楚楚,断定它肯定不会出问题的代码。

那么,如何写出足够简单的代码?除了上文提到的对程序运行逻辑的掌握,云风提到一项重要能力——评估事物和自身的能力。一方面要了解一件事情的来龙去脉,以及需要多长时间完成、需要什么条件完成,这是靠开发者经年累月的经验堆出来的,没有捷径;另一方面,要对自身有清晰的认知,这样才能规划好做事流程和用时,减少返工。

MySQL之父Michael “Monty” Widenius也发表过类似的观点:“写代码时要尽量将代码一次性写成,而不是写完后再没完没了的修改。”这也是他长久以来所遵循的编程法则。对于一个开发项目而言,普通开发者和“大神”开发者都可以做,但区别体现在哪?体现在“大神”开发者一周就能完成的任务,普通开发者需要一个月才能完成。因为当一个程序员经验不足时,他评估一件事可以用两天搞定,但他又花费更多时间来解决他做事过程中发现的问题,不停地改错和返工导致任务完成时间和预期出入很大,这就是评估能力的差异,因此,具备评估能力就是写出简单代码的开始。

《新程序员》004

 

2、软实力提升

技术层面的硬实力固然重要,但在开发者的职业通道中,不是只有技术专家这一个选择,还可以选择做管理者、创业者或大型企业的CTO等,这时,软实力就显得更为重要。有很多硬实力很强的资深开发者,因为无法突破软实力的限制,只能停留在技术开发领域。

技术管理者:人际交往能力比技术实力更重要

对于选择技术管理通道的开发者而言,SUSE CTO Brent Schroeder指出:与人交往的能力往往比技术实力更重要。在带领团队的过程中,思考的不仅是个人成长,更重要的是让团队成员如何更好地迎接挑战并实现成长、如何通过激励机制或发挥带头作用使整个团队得到提升。另外,对于表现欠佳的团队成员,管理者也需要加以引导甚至进行针对性的培训来鼓励他们,改善他们的表现。除了团队内部的管理外,团队外部的协作,如说服他们为共同的目标努力,也非常考验人际交往能力。但不幸的是,这种能力很难从课本上获取,只能通过不断地自我实践来培养。

不过可以肯定的是,人际交往的第一步是建立信任。在团队协作中,信任共事的人,接受他们做得不好的方面,以把整件事情做好为主。根据云风的经验,“每个模块都按照你的想法做,通常是行不通的。你可以找准你真正想要的那件事,围绕那件事情,把它做好,其他事情放心交给你的伙伴。接纳其他人的不同想法,求同存异,把整件事做好就可以了。”

CTO六部曲:跟随公司业务发展不断进化

随着技术管理者能力的不断升级,或许会成为大型企业或创业公司的CTO,此时,“核心不是看方向,而是怎么做好技术”,阿里巴巴CTO程立(鲁肃)根据其自身经历分享道。看方向是CEO的职责所在,而CTO需要通过技术让业务增长更加高速地增长,并保障业务不被技术拖慢增速。

通常,企业遵循着波浪式的发展过程:一开始要先找到一个方向,进入一个业务的轨道;如果这个方向判断准了,企业就会进入快速增长阶段;发展到一定阶段,就必须要脱离现有的惯性,再去找新的发展方向……在此过程中,CTO主要承担两份职责,一份是技术保障,重工程能力,另一份是组织能力,重领导能力。对于两份职责所涉及的不同事项,从个人层面而言,或许不能将每件事都做到极致,但“核心思考是,技术创业者需要跟着公司业务发展不断进化。”

程立根据其从蚂蚁技术到阿里巴巴经历的六个阶段,总结了CTO的六步曲:

  • 跟团队一起定义好目标,一起做成一些事情。

  • 多了解团队和业务,知道未来要去哪里,与团队共创一个愿景,点燃大家的热情。

  • 避免自己成为团队的天花板,把自己当成团队的地板,用人做事而非做事用人。

  • 别忘了“晴天去修屋顶”,永远居安思危。一旦危机出现,乐观地看待,每个危机背后都有机会,转危为机。

  • 不只看当下,也要布局未来,为公司建立技术纵深。在业务发展早期,技术的纵深就是一个点。当发展到像阿里巴巴现如今的规模时,技术纵深就是一个多面体,必须有充分的、多面的布局,才能支撑公司的发展。决定布局投入多少,要和CEO充分对焦。

  • 薪火相传,人才是公司未来发展的关键。阿里云曾经有一位技术负责人分享什么是一家公司技术能力的最高境界,就是谁来当CTO都能当好。

当然,无论是管理团队还是领导团队,二者的软实力是相通的,并不矛盾,可针对自己的不足之处进行逐一提升。只是成长没有捷径可言,需要投入足够多的时间,进行足够多的自我实践,在过程中讲究方法,时常回顾自己怎么才能把这件事学好、做好,发现偏差时及时修正。

3、《新程序员》48个程序人生故事的启发

做更好的自己

除Bjarne Stroustrup、Michael “Monty” Widenius、Brent Schroeder、程立、云风、戴志康的人生经验外,《新程序员:我们的技术时代,我们的程序人生》还邀请到了C#与TypeScript之父Anders Hejlsberg;PostgreSQL全球开发组联合创始人Bruce Momjian、Vue创始人尤雨溪、百度CTO王海峰、Caffe作者及阿里巴巴副总裁贾扬清、指令集创始人兼CEO潘爱民、OceanBase创始人阳振坤、LVS创始人章文嵩、科技作者吴军等各技术领域的先行者及代表人物,分享他们的程序人生经验及感悟。从技术开发领头人,到新生代程序员,他们的故事伴随着技术发展历程横跨了六十余年。

以技术名人堂、技术领导力、技术先锋、技术创业者、技术管理者、我是程序员、女性力量、技术向善、斜杠程序员这九个模块划分,通过48个程序人生故事,让你了解技术发展、汲取成功经验、获得成长方法、升级自我认知、认清未来方向。

《新程序员004》

「纸质书+电子书」同步预售

由CSDN策划出品,中国水利水电出版社出版,《新程序员:我们的技术时代,我们的程序人生》纸质书、电子书同步开启预售(2022年5月底正式发货),数量有限,先到先得!

现在,扫描下方二维码即可预定。

『纸质书+电子书』限时预售价:55 

​​​​​​​

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>