导读:本文带给大家成为高级开发人员的几个特质。其实不仅是高级开发人员的特质,也是大部分职场人士成为优秀人士的关键特征。
各位,2024新年快乐。
在任何领域,不论是艺术、体育还是软件开发,达到顶峰的最快方法就是研究那些已经处于顶尖的人,去做他们正在做而你没有做的事情。
如果你以写代码为生,这意味着要考虑一下高级开发人员。这意味着要确定他们拥有哪些你不具备的技能、习惯与特质。
在过去 3 年里与全球顶尖软件工程师一起工作了数千个小时之后,我发现现在就可以完成 12 种高级开发人员特质,以快速将我们的成长提升到一个新的水平。
让我们从第一个开始。
1 焦点
专注于焦点,意味着对某些事情说“不”,这样我们就可以做其他事情。理想情况下,对不重要的事情说“不”,并对那些能带来改变的事情说“是”。
这对许多开发人员来说确实很难,因为它违背了我们的本能。这意味着接受你无法完成所有事情。并不是每个机会都是平等的。
你无法学习所有新框架,无法阅读所有时事通讯,不可能参加所有会议。而你根本不必这样做,你的时间有限,你的能量也是如此。
成为一名高级开发人员意味着选择自己的战斗。
“专注意味着对你必须关注的事情说“是”。但这根本不是这个意思,这意味着对其他一百个好主意说不。” ——史蒂夫·乔布斯
你选择的越好,你进步的速度就越快。高级开发人员每天都有 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 个特征,你必将快速成长到高级开发人员,甚至更高的级别。
各位认为高级开发人员还有哪些特质?欢迎在文章下面点论。
作者:场长
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。