作者 | 田玮靖 出品 |《新程序员》编辑部
“成长”是一个永恒的话题,伴随着生命的始终。而在生命中占据很长一段时间的职业生涯,是提及成长最多的时期。作为开发者,在职业生涯的不同时期会遇到不同的挑战。初入职场时,容易遇到技术瓶颈问题如某项技术怎么实现、代码质量如何提升等。在职场摸爬滚打几年后,开始管理技术团队,此时如何与人沟通,说服大家为了共同的目标努力,以及怎么提升团队的研发效能等管理问题扑面而来。如果后续担任企业CTO或选择技术创业,还将思考技术如何更好地赋能业务发展、如何排兵布阵和断事用人、如何布局未来及制定战略方向等问题。
不难发现,推动开发者职业通道不断上升的自身因素主要有两方面:硬实力、软实力。前者主要表现为技术开发维度,而后者涵盖了洞察力、判别力、决断力、沟通力、管理力、领导力等多个维度。如何提升软、硬实力?或许我们可以从已经获得成功的前人身上汲取经验。
在《新程序员:我们的技术时代,我们的程序人生》一书中,多位知名“技术大神”和正在奋斗的开发者分享了他们的成长经验。其中,C++之父Bjarne Stroustrup、MySQL之父Michael “Monty” Widenius、SUSE CTO Brent Schroeder;阿里巴巴CTO程立(鲁肃)、技术创业者和投资人戴志康、游戏开发者云风提到了技术能力与管理能力的提升,希望能给渴望提升实力的开发者带来启发。
初级开发者:训练逻辑,打好基础
作为与数据打交道的初级开发者,严密的逻辑思维是不可或缺的,也是写好代码的基础,而能够让逻辑思维升级的重要手段便是学习数学。
被称为“C++之父”的Bjarne Stroustrup(以下简称Bjarne)曾这样建议:“程序员在数学上付出的努力永远不会白费。学习数学是训练我们大脑的最佳方法之一。”Bjarne用其四十余年的编程经历告诉开发者,虽然在很多应用程序的开发中不会用到数学,但在构建基础设施或大规模部署应用程序时,容量和成本问题忽视不得,为了获得更大容量的同时使用更小的成本,算法就会起到关键作用,而如果不具备深厚的数学知识,或许得不到最优解,甚至会带来危害。
另外,对于大多数开发者来说,学习数学的用途主要体现在概率和统计方面,用来判断代码速度是否够快、某个功能是否有足够的扩展性、某个故障的发生概率有多大及其影响范围有多广,等等。
《新程序员》资深开发者:追根溯源、融会贯通
从普通开发者成长为资深开发者,再从资深开发者升级为“大神”开发者,最重要的能力不是代码写得多巧妙,而是追根溯源、融会贯通的能力。
知名技术创业者、天使投资人戴志康在接触无数技术创业者并阅览他们的创业经历后,总结出优秀开发者和普通开发者的区别:优秀的技术人就是能够从更高的角度看问题,‘知其然知其所以然’,而普通的技术人,通常是将别人抽象、总结的东西拿过来,不善于或不习惯亲自探究‘所以然’,这时总会碰到‘这个能做,那个做不了’的问题。为什么优秀的技术人很少遇到这种情况?因为他的思考框架已经涵盖技术周边(即横向如前端、后端、运维、产品等)和技术纵深(即纵向如架构、算法、数据库、操作系统等)两个方向。此外,他还可能触类旁通发现许多事物的类似规律。
可见,开发者变“强”的关键在于突破横、纵两个方向的认知维度。而对于突破认知维度的方法,戴志康以自身实践的经验举例:“二十年前我用PHP语言开发软件,PHP的上游是什么?是操作系统、数据库等基础软件。而在数据库中,有SQL语句、执行计划、存储结构、存取机制等,逐一钻研。因为只有清楚SQL语句的上游需求,这条SQL语句才能写好,只有了解操作系统执行逻辑,才能写好PHP。”正是通过不断地追根溯源,戴志康发现他的技术开发能力提升了一大截。
正所谓“实践出真知”,在计算机的世界中,很多问题通过假设、验证、分析的方式都能找到答案,如怎样的代码会让程序运行速度加快,再如不同的文件尺寸和变量会对解释型语言的执行有什么影响。通过钻研和总结每次实践的结果,了解程序的运行逻辑。当一个开发者清楚自己写下的每一行代码会以何种逻辑、何种速度执行,以及带来何种结果时,他就突破了纵向的认知维度。而突破横向的认知维度,简单来讲是跳出岗位本身的限制,从全局思考上下游链路的需求、原理、方法等,并将技术逻辑运用到其他领域分析问题,做到融会贯通。
《新程序员》“大神”开发者:看透本质,将复杂的问题简单化
与追根溯源、融会贯通相辅相成的能力是看透本质,将复杂的问题简单化。
如果开发者可以用足够简单的方法解决根源问题,抛开中间的一些枝节干扰,那他就具备了所谓“10x程序员”的能力。就技术开发而言,很多年轻程序员都喜欢炫技,拥有近四十年的码龄的“大神”开发者云风年轻时也一样,但如今他认为炫技不能解决问题的本质。这与把事情做简单有什么关系?以前云风认为写出复杂的程序并且不出错是一种出色的能力,可随着时间的推移,代码需要被别人维护,可能还要和其他人合作,这时会遇到一个问题:怎么让代码更容易被理解?因此,开发者必需让代码足够简单,让别人一看就明白。好代码是开发者的一张名片,什么样的代码是好代码?云风的编程经历告诉他,“并不是看上去好像没有问题的代码,而是看上去所有东西都清清楚楚,断定它肯定不会出问题的代码。”
那么,如何写出足够简单的代码?除了上文提到的对程序运行逻辑的掌握,云风提到一项重要能力——评估事物和自身的能力。一方面要了解一件事情的来龙去脉,以及需要多长时间完成、需要什么条件完成,这是靠开发者经年累月的经验堆出来的,没有捷径;另一方面,要对自身有清晰的认知,这样才能规划好做事流程和用时,减少返工。
MySQL之父Michael “Monty” Widenius也发表过类似的观点:“写代码时要尽量将代码一次性写成,而不是写完后再没完没了的修改。”这也是他长久以来所遵循的编程法则。对于一个开发项目而言,普通开发者和“大神”开发者都可以做,但区别体现在哪?体现在“大神”开发者一周就能完成的任务,普通开发者需要一个月才能完成。因为当一个程序员经验不足时,他评估一件事可以用两天搞定,但他又花费更多时间来解决他做事过程中发现的问题,不停地改错和返工导致任务完成时间和预期出入很大,这就是评估能力的差异,因此,具备评估能力就是写出简单代码的开始。
技术层面的硬实力固然重要,但在开发者的职业通道中,不是只有技术专家这一个选择,还可以选择做管理者、创业者或大型企业的CTO等,这时,软实力就显得更为重要。有很多硬实力很强的资深开发者,因为无法突破软实力的限制,只能停留在技术开发领域。
技术管理者:人际交往能力比技术实力更重要
对于选择技术管理通道的开发者而言,SUSE CTO Brent Schroeder指出:与人交往的能力往往比技术实力更重要。在带领团队的过程中,思考的不仅是个人成长,更重要的是让团队成员如何更好地迎接挑战并实现成长、如何通过激励机制或发挥带头作用使整个团队得到提升。另外,对于表现欠佳的团队成员,管理者也需要加以引导甚至进行针对性的培训来鼓励他们,改善他们的表现。除了团队内部的管理外,团队外部的协作,如说服他们为共同的目标努力,也非常考验人际交往能力。但不幸的是,这种能力很难从课本上获取,只能通过不断地自我实践来培养。
不过可以肯定的是,人际交往的第一步是建立信任。在团队协作中,信任共事的人,接受他们做得不好的方面,以把整件事情做好为主。根据云风的经验,“每个模块都按照你的想法做,通常是行不通的。你可以找准你真正想要的那件事,围绕那件事情,把它做好,其他事情放心交给你的伙伴。接纳其他人的不同想法,求同存异,把整件事做好就可以了。”
CTO六部曲:跟随公司业务发展不断进化
随着技术管理者能力的不断升级,或许会成为大型企业或创业公司的CTO,此时,“核心不是看方向,而是怎么做好技术”,阿里巴巴CTO程立(鲁肃)根据其自身经历分享道。看方向是CEO的职责所在,而CTO需要通过技术让业务增长更加高速地增长,并保障业务不被技术拖慢增速。
通常,企业遵循着波浪式的发展过程:一开始要先找到一个方向,进入一个业务的轨道;如果这个方向判断准了,企业就会进入快速增长阶段;发展到一定阶段,就必须要脱离现有的惯性,再去找新的发展方向……在此过程中,CTO主要承担两份职责,一份是技术保障,重工程能力,另一份是组织能力,重领导能力。对于两份职责所涉及的不同事项,从个人层面而言,或许不能将每件事都做到极致,但“核心思考是,技术创业者需要跟着公司业务发展不断进化。”
程立根据其从蚂蚁技术到阿里巴巴经历的六个阶段,总结了CTO的六步曲:
当然,无论是管理团队还是领导团队,二者的软实力是相通的,并不矛盾,可针对自己的不足之处进行逐一提升。只是成长没有捷径可言,需要投入足够多的时间,进行足够多的自我实践,在过程中讲究方法,时常回顾自己怎么才能把这件事学好、做好,发现偏差时及时修正。
做更好的自己
除Bjarne Stroustrup、Michael “Monty” Widenius、Brent Schroeder、程立、云风、戴志康的人生经验外,《新程序员:我们的技术时代,我们的程序人生》还邀请到了C#与TypeScript之父Anders Hejlsberg;PostgreSQL全球开发组联合创始人Bruce Momjian、Vue创始人尤雨溪、百度CTO王海峰、Caffe作者及阿里巴巴副总裁贾扬清、指令集创始人兼CEO潘爱民、OceanBase创始人阳振坤、LVS创始人章文嵩、科技作者吴军等各技术领域的先行者及代表人物,分享他们的程序人生经验及感悟。从技术开发领头人,到新生代程序员,他们的故事伴随着技术发展历程横跨了六十余年。
以技术名人堂、技术领导力、技术先锋、技术创业者、技术管理者、我是程序员、女性力量、技术向善、斜杠程序员这九个模块划分,通过48个程序人生故事,让你了解技术发展、汲取成功经验、获得成长方法、升级自我认知、认清未来方向。
「纸质书+电子书」同步预售
由CSDN策划出品,中国水利水电出版社出版,《新程序员:我们的技术时代,我们的程序人生》纸质书、电子书同步开启预售(2022年5月底正式发货),数量有限,先到先得!
现在,扫描下方二维码即可预定。
『纸质书+电子书』限时预售价:55 元
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185083.html原文链接:https://javaforall.cn