- 原文作者 : Ravi Shankar Rajan
- 原文链接 : How to Be a Good Senior Developer
- 译者 : 邓士伟
- 校对者: 邓士伟
- 状态 : 完成
It’s not what you do—it’s how you do it
如果你想成为一名优秀的高级工程师,只有一条路供你选择:犯错误,改正错误,从错误中学习,分享错误,重复。
从这些错误中学习是你成为高级工程师的关键,让这些错误成为了你的经验。
也就是说,如果你最近刚开始你的职业生涯,作为一个入门级的开发人员,你会想知道你需要采取什么步骤来爬上职业阶梯。只是时间问题吗?还是你要回学校还是要拿到一些高级证书?
不一定。
尽管正规教育可能有助于你晋升,但我知道许多开发人员只有大学文凭就已经达到了高级水平。
还有一点需要注意,当提到高级开发人员时,他们不仅能编写优雅代码,而且还具有其它受欢迎的特征。高级开发人员是指能够为公司带来 10 倍以上价值的人。这些开发人员知道“好东西”是如何工作的,能够为客户提供价值。
把它看作不仅仅是一个职位,还是一种职业道德。这不是你做什么,而是你如何做,这将使你成为一个真正的高级开发人员。但这件事是不可能的。你不会进入你的第一份工作就是高级工程师。它伴随着许多错误,最终转化为学习和经验。
以下是一些我认为对于一个高级开发人员来说很不错的品质,这些品质使他们区别于那些还没有完全做到的人。
1. 他们具有很强的好奇心
正如爱因斯坦所说:“我没有特别的天赋,只是具有很强的好奇心”。
研究表明,当你的好奇心被激发时,你可以提高学习和记忆信息的能力。当你具有好奇心时,大脑的边缘奖励系统就会起作用。当奖励系统被激活时,我们的大脑会释放出一种叫做多巴胺的化学物质,这种化学物质会让我们兴奋,甚至在无聊的话题上也能让我们更快地学习。
优秀的高级开发人员更进一步,他们以一种有条理的方式引导他们的好奇心,这样他们就可以利用在紧急情况下积累的信息。其中一种方法是在扩展语言之前深入了解语言。
2. 他们深入学习
我们遇到的编程问题很少是第一次出现,同样很少有公司创造出的成果没有别的团队在这之前创造。
这就是为什么你正在尝试做的大多数事情已经被你正在使用的语言/平台解决了。例如,我曾经使用 SAP
的类,将一个庞大的 30000
行 SAP ABAP
代码模块化为一个 200
行的类。我之所以能够增加价值,首先是因为我决定在钻研任何其他 SAP
模块之前掌握 ABAP
。我知道这很慢,但值得努力。
优秀的开发人员从不接受现状。无论他们的代码是否有效,他们总是试图找到每个他们必须问的“为什么”的答案。
3. 他们是伟大的导师
约翰·克罗斯比说:"导师是一个可以挑选的大脑,一个可以倾听的耳朵,一个可以推动正确方向的人"。
2008年,谷歌对这个问题进行了一项重大研究。谷歌创新实验室的“氧气计划”团队花了一整年时间进行数据挖掘、绩效评估、员工调查、最高管理者奖提名以及其他来源,以评估最高和最低级别管理者之间的差异。他们的统计学家收集了超过 100
个因素的 10000
个关于经理的观察数据。
这项研究得出了两个重要结论:
- 管理成功最重要的表现是做一个好的导师。成功的管理者知道如何指导他们的团队走向成功。
- 最不重要的是技术技能。这证明了一个优秀的开发人员不一定就是一个优秀的管理者。
因此,谷歌改变了评价标准。这些评价不再简单地衡量一个管理者取得了多少产出,而是关注他们花在指导团队上的时间,他们是否传达了清晰的愿景等等。他们还围绕这些技能制定了新的管理培训计划。
也就是说,每个高级开发人员的一个关键期望是,他们应该能够熟练地与内部和外部客户以及利益相关者进行互动。当你与来自非技术背景的人交流时,技术行话不会给你带来任何好处。这就是为什么最好的高级开发人员是那些没有被技术惊醒的人。
相反,你需要培养用简单的语言解释复杂技术概念的技能,使用现实生活中的例子,并快速衡量听众对行话的舒适程度。
导师是一个年轻人和一个更有经验的人之间强有力的联系,不仅对职业发展,而且对个人成长、分享知识、分享经验、开拓进取。
4. 他们不自满
据杰夫·贝佐斯论自满:“一个公司不应沉迷于光芒四射,因为光芒不会持久。”
这也适用于开发人员。事实上,大多数开发人员天生就是喜鹊,总是收集闪亮的东西,把它们储存起来,寻找联系。如果你不知道这一现象,闪亮玩具综合症的典型特征是想要拥有最新的玩具,通常不考虑实际或功能的需要,或者在转移到其他东西之前被强烈但非常短暂的高拥有率所吸引。
最好的高级开发人员会控制这种情况。他们知道什么时候不做什么。他们知道从头开始重写一个库只是为了使它更可读,或者从旧的框架切换到最新的框架并不总是好的决定。他们不是规避风险,只是在选择正确的战斗时很小心。
因为最后,一切都归结为代码。代码应该做它应该做的事情,而不是别的。代码的目的应该足够清楚,以便在几分钟甚至几秒钟内掌握。浏览代码应该很容易,即使没有复杂的技巧。
简单是最高级的。
5. 他们承认自己不知道的事情
尼尔·盖曼曾经说过:有时候不知道一切都会好起来的。
最难说的三个字不是“我爱你”,而是“我不知道”,这是行为经济学畅销书《怪诞经济学》的作者史蒂芬·J·杜布纳和史蒂芬·D·莱维特的观点。
当它发生时,你将如何处理那不可避免的时刻?20分钟来,你一直自信地谈论着自己的成就,享受着在比赛中处于领先地位的喜悦。你对一个又一个问题回答是,但现在他们问你的东西…嗯,你真的不知道。
对许多人来说,这是一个痛苦的反应。但是,这样说完全可以。这比掩盖你缺乏知识或技能要好得多。这里的关键是要知道你将如何解决这个问题-要么询问别人,要么深入挖掘。
这都是你成长为高级工程师的路上要遇到的如何回答问题。你能深入了解他们为什么要问这个问题,以便获得更多的背景知识和更广泛的帮助吗?你能帮忙一起找出答案吗?你会否在事后做些调查并跟进?
作为一名高级开发人员并不意味着你必须知道所有的事情,而是意味着你可以帮助找到最终答案。
6. 最后,他们可以识别坏代码的味道
西摩·克雷说的完全正确:程序员的问题是,你永远无法知道程序员在做什么,直到为时已晚。
这就是为什么优秀的高级开发人员对代码“气味”非常敏感的原因,如果它看起来像糟糕的代码,闻起来像糟糕的代码,那么它可能就是糟糕的代码。以前的开发人员可能犯了个错误,你也会犯。这就是编码的工作原理。
当我们迭代地构建以前的解决方案时,我们应该努力改进代码库,而不是让它变得更糟。所以当你问“这是谁写的?”接下来必然会有“我能做什么让它变得更好?"
你还需要知道在必须改善之前,你可以找出如何改善它。了解好的和坏的代码是什么样子的。顶级足球运动员比一般球员花更多的时间学习其他优秀球员的比赛。我相信这同样适用于顶级开发人员。
臭代码是一种代码,虽然你不能很清楚地说明原因,但感觉不对。它需要被移除。通常臭味难闻的代码表明了一些更深层的问题,这些问题将在未来引发更多的问题。作为一名高级开发人员,这是你独特的卖点,使你与众不同。做正确的事,即使这不是最容易做的事。
用唐纳德·克鲁斯的话说:我想,日常生活就像编程一样。如果你喜欢什么东西,你可以把美放进去。