在任何领域,无论是艺术、体育还是软件开发,达到顶峰的最快方法就是研究那些已经处于顶峰的人……并做他们正在做而你没有做的事情。
如果您以编写代码为生,这意味着要考虑一下高级开发人员。这意味着确定他们拥有哪些你不具备的技能、习惯和特质。
在过去 3 年里与全球顶尖软件工程师一起工作了数千个小时之后,我发现您现在就可以实施 12种高级开发人员特质,以快速将您的成长提升到一个新的水平。
让我们从第一开始......
1、专注
专注意味着对某些事情说不,这样我们就可以做其他事情。
理想情况下,对不重要的事情说不。并对那些能带来改变的事情说“是”。这样能使我们的“这艘船”移动得更快。
这对许多开发人员来说确实很难,因为它违背了我们的本能。这意味着接受你无法完成所有事情。并不是每个机会都是平等的。
您无法学习所有新框架。您无法阅读所有时事新闻。您不可能参加所有会议。而你不必这样做。
你的时间有限。你的能力也是如此。
成为一名高级开发人员意味着选择你的战斗。

Steve Jobs
“People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are.” - Steve Jobs
有趣的是,你选择的越好,你进步的速度就越快。高级开发人员每天都有 24 小时的时间。但他们做得更多。
如何?
通过少做事。
当新事物出现时,问问自己“这真的重要吗?” 或者这只是另一种趋势?很可能这只是另一种伪装成机会的干扰。

高级开发人员说的“不”多于“是”。他们完成的项目比开始的项目还要多。他们在学习新框架之前先掌握已经使用的框架。如果你想更快地进入高级,你需要培养的第一个特质就是专注。
2. 二阶思维
让“初级开发者”尖叫的一件事是“让我们构建它,我们会找到结果”的态度。年轻人倾向于先编码,后思考。
如果您刚刚开始,这可能是一个很好的态度,但是当您开发可用于生产的软件时,某些技术决策您将无法更改。或者很容易改变。
例如,您选择Vue作为前端框架。
然后,需求发生变化。你开始认为 React 会是一个更好的选择。当然,你可以切换到 React。但这既不容易,也不便宜。
高级开发人员知道,依靠自己的供应很容易获得快感。但是,如果您爱上了您最了解的框架和库,您将开始做出糟糕的技术决策。

他们会仔细考虑自己选择的后果。这可能意味着在尝试理解问题时询问“五个为什么”。
或者考虑他们的解决方案可能存在的缺点。
例如,现在我们添加了 Redux,全局状态可能更容易管理。但我们必须在 Redux 上招募新的开发人员。学习成本很高。
而且,你猜怎么着,我们的 JavaScript 包会变得更大,这对性能不利。
考虑二阶思维将使您成为更好的开发人员。它还将在技术面试中为您提供帮助。
3. 实用主义
当初级开发人员阅读一本关于最佳实践的书时,他们会跳起来并尝试将它们应用到任何版本中的每一行代码。他们虔诚地追随他们。
如果您无法自己做出技术决策,那么遵守预定义的规则会容易得多。但软件开发不是一种信仰。
一个很好的例子是测试。
当初级开发人员阅读 TDD(测试驱动开发)时,他们将开始尝试测试所有内容。旨在实现完整的代码覆盖率。事实上,完整的代码覆盖率会带来递减的结果,并且最终会浪费时间。

高级开发人员知道如何平衡最佳实践和上市时间。何时走捷径,何时不走捷径。
快速破解会产生错误和技术债务。当代码上下文发生变化时,始终遵守规则会导致错误的决策。
你需要一个平衡。
根据情况重新考虑您的技术选择。
4. 没有什么可证明的
由于缺乏自信,初级开发者发现自己总是试图向别人证明自己。对自己的价值和技能缺乏信心的高级开发人员也是如此。
他们的信心建立在他们从别人那里得到的认可上。
这是一场必败的游戏。
他们会试图在特定的技术讨论中展示他们知道多少,与他人交谈,或者在深夜或周末推代码。
实际上,所有这些行为都会造成有害的团队环境和适得其反的结果。在最好的情况下,他们会让你看起来比你实际的级别低。

猎豹不需要在比赛中证明自己,它奔跑只是为了捕猎。
有两种方法可以解决这个问题。
第一个是停止在外部验证上花费太多。因为事实是你不需要向任何人证明你自己。只对自己说。
第二是与你头脑中的消极声音和平相处。
你可以成为自己最严厉的批评者。完美主义、对失败的恐惧以及对“真正的”开发人员的错误理解正在摧毁你的自尊。这就是为什么无论你多么努力,你总是觉得自己不够好。
是时候离开你的脑袋了。
专注于掌握你的手艺,其他的就会随之而来。你会立刻对自己和自己的技能更有信心。你也不用再向陌生人证明自己了。
5.掌握基础知识
每当我在LinkedIn偶然看到一个开发人员的简介,他们把自己描述为“React”开发者,或者“Angular”开发者时,我就知道他们不是高级开发者。他们可能在那个框架中是高级的,但总体上不是高级的。
框架开发人员永远不会成为高级开发人员。
框架不会让你变得高级,因为框架只是锦上添花。不是蛋糕本身。冰山的一角,和它的底部。

我甚至可以推测,在目前软件开发人员中流行的冒名顶替综合症背后,即使是高级软件开发人员也不是缺乏才能或缺乏努力。
这是基本面薄弱。
这也是为什么调试或性能优化等主题对于大多数开发人员来说是一个猜谜游戏。他们不习惯深入挖掘他们正在使用的库和工具的表面之下。
要成为高级开发人员,您不仅必须了解事物背后的“什么”,还必须了解事物背后的“原因”。
例如,高级开发人员不仅能够构建 React 应用程序。但他们也会理解为什么 React 是以某种方式构建的。以及它如何与编写的语言(JavaScript/TypeScript)和运行的平台(Web 浏览器)融合。
好消息是,一旦你掌握了基本原理,一切的技能水平都会提升。
6. 端到端交付
公司不录用初级开发人员的第一大原因是他们需要大量外部帮助才能完成工作。外部帮助意味着您将打扰高级开发人员来完成您的工作。
初级开发人员被认为“昂贵的”,因为他们无法独立交付。
相反,高级开发人员可以提供端到端的服务。给他们一堆要求,他们会解决剩下的问题。这并不意味着他们是独行侠,他们通常非常擅长团队合作。
这并不意味着高级开发者会为了推动事物向前发展而快速修改内容。
那不是“真正的”前辈。
这并不意味着他们深入了解软件开发生命周期的每个部分。
但是,高级开发人员了解整个软件开发生命周期的所有主要部分。并且可以为其中的每一个(前端、后端、部署)做出贡献。
如果您是一名想要升级的初级/中级开发人员,那么端到端交付是您需要关注的一个特质。
7.心智模式
高级开发人员与初级开发人员的主要区别之一是他们可以处理的复杂性。
资深开发者可以理解更复杂的代码库和需求。
他们可以理解二阶思维。代码库的变化将如何影响性能、成本甚至团队。
他们这样做并不是因为他们记住了每个实现细节。这是不可能的,因为人类的记忆非常有限。
他们这样做是因为他们将代码的复杂性抽象为心理模型。这些是表示现实的简单方法。
开发人员如何构建高质量的心智模式?
通过查看框架和库的背后并学习它们背后的设计模式。根据您的技术堆栈,存在很多噪音。诸如 SOLID 原则或 MVC ...
但我认为最好的开始方法是选择您正在使用的任何框架并尝试超越代码。

开始问自己,为什么框架的创建者要这样构建它?它是建立在新概念的基础上还是只是古老原则的实现(通常是这种情况)?
通过回答这些问题,您将建立软件开发的思维模型,并能够处理更多的复杂性。这是快速成长为高级开发人员的最有效方法之一。
8. 资深开发者掌控大局
高级开发人员可以做得非常好的一件事是领导技术讨论并影响周围的其他人。无论是业务利益相关者、产品经理还是其他开发人员,高级开发人员都知道如何引导他们朝正确的方向发展。
他们结合自信、技术专长和沟通技巧来做到这一点。
高级开发人员还能够设定严格的界限。
他们可以不带感情地反对。他们可以在会议上为自己(和他人)辩护。他们积极地协商薪资。
他们讲述自己的故事。

高级开发人员知道如何以及何时划定界限,并说“适可而止”。
如果另一个开发人员在代码审查期间开始指责其他人,高级开发人员知道如何阻止他们。如果高层管理人员试图介入开发人员的工作并进行微观管理,高层管理人员知道如何在不破坏关系的情况下把他们赶走。
作为一名开发人员,没有关于如何变得更加自信的分步指南。
它需要重复和练习。第一步是不要总是说“是”。并开始尝试在薪资谈判中按自己的方式行事。
9. 长远思考
初级开发人员考虑“现在”。他们的想法是短期的。当他们走捷径时,他们的代码也是如此。初级开发人员会扩展一段代码,而不考虑正确重构它,或者干脆忽略测试和性能。
但大三学生也会考虑他们的职业生涯。
这可能意味着频繁跳槽或过河拆桥。这可能意味着忽视。
就像不提高你的技能或推销自己的方式一样,因为现在你的工作很稳定。只是被解雇六个月后才后悔。
成为更高级的开发人员的一部分是开始进行长期思考。
第一个方法是改变你的心态。大多数初级开发人员的短期思维不是由懒惰引起的,而是由自我怀疑引起的。
他们内心深处仍在思考成为一名开发人员是否适合他们。或者他们是否选择了正确的职业。
这些疑虑阻碍了他们做出长期承诺。

好事需要时间,高级开发人员知道这一点并相应地调整他们的想法。
现在,随着人工智能威胁到软件开发的终结,这种短期思维比以往任何时候都更加频繁。如果某件事很快就会消失,为什么还要承诺呢?
相信我,只有当我完全致力于我作为开发人员的职业生涯时,事情才开始腾飞。
我说:“就是这样”。
我不再向外张望。我告诉自己:这是我现在的工作,也是我未来十年的工作,所以让我把它做好吧。
我开始投资我的技能,因为现在我知道它们会得到回报。
即使你未来 20 年不打算编写代码,拥有长远的心态也会给你带来巨大的好处。高级开发人员之所以能够达到高级水平,是因为他们致力于自己的技术。如果您渴望实现这一目标,您也应该这样做。
10.养成良好的习惯
我记得Kent Beck说过一句名言:“我不是一个伟大的程序员,我只是一个拥有伟大习惯的优秀程序员。”习惯很重要,因为它们经得起时间的考验。
因为任何关于JavaScript框架的知识迟早都会过时。技术的变化。但是你的习惯会永远伴随着你。
好消息是,人类是习惯的生物。
在我们的大脑中建立新的习惯并不容易。
但一旦我们把它们内化成习惯,我们就很容易坚持下去。利用这一点的最好方法是实现你的目标,并将其分解为日常行动。然后通过重复把这些行为变成习惯。
例如,如果您想在测试方面做得更好,那么每天编写一个单元测试。
如果你想在每天的会议上准备得更充分,思路更清晰,那就记日记吧。如果你想找一份新的开发人员工作,你必须发送100份申请,每天发送10份申请。
养成新的习惯,你向高级水平的进步将是持续和稳定的。
11.健康就是财富
作为一名高级开发人员意味着不仅要长远考虑您的代码和技术决策,还要考虑您的健康。
因为健康就是财富。
我在视频中一次又一次地谈论这一点。
开发人员的工作是久坐不动的。你一天中的大部分时间都坐在电脑前的椅子上。这对你的健康非常不利。
然后,还有所有的垃圾食品,比如办公室里的薯片、苏打水和糖果。这意味着除非你有意识地努力,否则你很难保持健康和身材。
但是,如果你想拥有一个长期而富有成效的软件编写职业生涯,并且你不想以背部问题、糖尿病或甚至更糟的事情告终,你需要开始照顾你的健康。

如果你想要金蛋,不要杀鸡取卵。如果你想提高工作效率,首先要照顾好自己。
这并不意味着您必须开始每周去健身房 5 次。
或者进行一些疯狂的节食。但每周至少进行2至3次运动。您可以去健身房、跑步或参加团队运动。
在饮食方面,减少糖和碳水化合物的摄入。肉也不要过量。
还要考虑您的心理健康。
不要理会诸如“吃饭、睡觉、重复”之类的建议,在工作之外建立自己的生活。
开始一个新的爱好。联系朋友。休息一下。
从短期来看,你的进步可能会慢一些。但从长远来看,你将能够在游戏中停留更长时间。
12.结束这个圈子
最后,高级开发人员了解这个行业是如何运作的。他们知道,无论他们多么努力,或者多么聪明,在他们走向顶峰的道路上,都有数十个人的帮助。
这并没有剥夺他们的优点,但也承认了其他人。
所以他们结束了这个圈子。
他们帮助其他开发人员。他们这样做是没有期望。
不是因为这样能让你升职。或者地位,或者崇拜。他们这样做是因为这是正确的事情。

甚至科比·布莱恩特也抽出时间来指导年幼的孩子并让他们进入篮球领域。您也可以抽出时间来帮助新开发者。
帮助一个刚刚起步的人会让你重新燃起火花。初学者第一次看到事物时所感受到的激情和好奇心是如此具有感染力。
另一件你可以变成日常习惯的事情!
好的,就是这样。具备这 12 个特征,您将快速成长到高级甚至更高的职位。