初级开发人员需要掌握的 12 个高级开发人员特质

如果你以写代码为生,这就意味着要多看看高级开发人员。这意味着要找出他们拥有哪些你不具备的技能、习惯和特质。

在过去 3 年中,我花了数千小时与世界各地的一流软件工程师一起工作,我发现有 12 个高级开发人员的特质是你现在就可以具备的,可以让你快速成长到下一个层次。

1.专注
专注意味着对一些事情说 "不",这样我们就能做另一些事情。
你的时间是有限的。你的精力也是有限的。

高级开发人员说的 "不 "比说的 "是 "多。他们完成的项目比开始的多。他们在学习新的框架之前,会先掌握自己已经在使用的框架。如果你想更快地成为高级开发人员,你需要培养的第一个特质就是专注。

2.二阶思维
"让我们构建它,然后我们就会发现问题",这种态度就是 "初级开发人员 "的典型特征。初级开发人员倾向于先编码,后思考。
如果你刚刚开始工作,这种态度可能很好,但当你在开发可投入生产的软件时,有些技术决定是你无法改变的。或者说无法轻易改变。

他们会三思而后行,考虑自己选择的后果。这可能意味着在试图理解一个问题时要问 "五个为什么"。或者思考他们的解决方案可能带来的弊端。

考虑二阶情况会让你成为更好的开发人员。在技术面试中,它也会对你有所帮助。


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.保护你最重要的资产
作为一名高级开发人员,不仅要对自己的代码和技术决策有长远的考虑,还要对自己的健康有长远的考虑。

因为健康就是财富。

开发人员的工作非常容易久坐。你每天大部分时间都要坐在电脑前的椅子上。这对健康非常不利。
此外,办公室里还有薯片、苏打水和糖果等垃圾食品。这意味着,除非你有意识地努力,否则很难保持健康和体型。   

但是,如果你想在编写软件的职业生涯中长期高效地工作,又不想最终患上背部疾病、糖尿病,甚至更严重的疾病,你就必须开始关注自己的健康。

在饮食方面,少吃糖和精制碳水化合物。肉类也不要吃得太多。还要考虑你的心理健康。不要听信 "吃饭、睡觉、重复 "之类的建议,要建立工作之外的生活。开始新的爱好。联系朋友。休息一下。从短期来看,你的进步可能会慢一些。但从长远来看,你将能在游戏中坚持更长的时间。

12.闭环
最后,高级开发人员了解因果报应的原理。他们知道,无论他们工作多么努力,多么聪明,都有几十个人帮助他们走向巅峰。
这并不会抹杀他们的功绩,而是对其他人的认可。
因此,他们将这个圈子封闭起来。

他们帮助其他开发者。而且他们这样做并不抱任何期望。
不是因为这样做能让你升职。或地位,或钦佩。他们这样做是因为这样做是正确的。

帮助刚刚起步的人,会让你重新迸发出部分火花。初学者第一次看到事物时的激情和好奇心是如此具有感染力。