全文共2885字,预计学习时长6分钟
图源:unsplash.com Amit Shamsipur
如果你想成为一个十分优秀的高级开发员,其唯一途径就是:
犯错,纠错,吸取教训,分享经验——如此往复。
经验来自错误的积累,吸取经验是成为成功的高级开发员的关键。道理就这么简单,对吧?
也就是说,如果你最近刚成为一名初级开发员,你会想要知道,需要采取什么行动才能在职业生涯中不断前进。仅仅是时间问题吗?需要回炉重造或是取得一些高级证书吗?
这都没有必要。
正规的教育或许有助于晋升,但确实有很多已达高位的开发员都只有大专文凭。
另外,关于高级开发员值得注意的是,优秀的开发员会做的不只是编写高质量的代码,他们一定还有其他可取之处。一个高级开发员是可以给一家公司带来超过10倍价值的人,他们知道如何调用“好东西”,并且能为客户带去价值。
不要只把它当作一个头衔。这是职业道德。成为真正的高级开发员的关键不在于做了什么,而是如何做的,这是唯一途径。你不会从一开始就是高级开发员,错误会随之出现——很多错误——并最终转化成经验和教训。
以下是笔者认为高级开发员应该具备的一些品质,这些品质将其从众人之中区分开来。
他们充满好奇
阿尔伯特·爱因斯坦说得好:我没有什么特殊的天分,我只是有颗强烈的好奇心。
研究表明,当好奇心被激发时,学习和记忆的能力就会提升。大脑中的边缘奖励系统会在人好奇的时候发挥作用。奖励系统一旦激活,大脑就会释放一种名为多巴胺的化学物质,它会提高人的兴奋度,即使是无趣的内容也能让人更快速地学习。
优秀的高级开发员会更进一步。他们将以结构化的方式引导自己的好奇心,从而能够在紧急情况下调用积累的信息。途径之一就是在扩宽研究面以前,先深入研究任一语言。
他们刨根问底地了解所选择的平台
编程问题少有原创。也少有公司会打造一款没有多个团队研究过的技术产品。
这就是大部分尝试解决的的问题都已经被正在使用的某个语言/平台解决了的原因。例如,我曾经要使用 SAP 开箱即用面向对象类,将30000行巨型 SAP ABAP 代码模式化到 200行的一类中。我能够创造更多价值,因为我知道,首先最重要的不是钻研 SAP模块,而是掌握 ABAP。过程很漫长,但这是值得的。
优秀的开发员从不含糊了事。不论代码是否可行,他们总会试图寻找每一个“为什么”的答案。
他们是优秀的导师
约翰·克罗斯比一针见血地指出:指导是学习,是倾听,是往正确方向前进的助推力。
2008年,谷歌在这一问题上做了重要研究。谷歌人力创新实验室的“氧气项目”团队用了一年时间,对绩效考核、员工测评、优秀管理者奖提名以及其他评估高低分管理者差异的资源进行了数据挖掘。他们的统计学家从超100个变量中收集了超10000份对管理者的观测结果。
研究得出了两个重要推论:
· 成功的管理者,最重要的是成为一个优秀的导师,他们知道如何指导其团队走向成功。
· 最无关紧要的是技术能力。这说明一个优秀的开发员不一定会成为一个优秀管理者。
最终,为了反映这些品质,谷歌改变了其反馈调查的形式。如今的调查主要关注管理者在指导团队上花费的时间,是否清晰传达等方面,而非取得了多少成果。他们还围绕这方面技能开发了新型管理培训程序。
这就是说,公司对每名高级开发员的主要期望是,能够熟练地与内外部客户和股东进行互动。当与没有科技专业背景知识的人沟通时,技术用语毫无作用。这就是最优秀的高级开发员无法因技术博得赞赏的原因。
因此,培养相关方面的能力很有必要。这些能力包括用简单的语言解释复杂的技术概念,运用实例,迅速判断听众对术语的适应程度。
指导是连接新人和老手之间的强大纽带。这不仅是为了事业发展,也为了个人成长。分享知识,共享经验,继续前进。
他们没有 “Shiny-Toy” 综合症
杰夫·贝索斯有言:一个公司不该沉迷于自己的光芒,因为那是不长久的。
这句话也适用于开发员。实际上,大多开发员本质上是喜鹊,总会搜来一些闪光的东西,储存起来并寻找之间的联系。如果还对这一现象没有概念,那读者可以理解为, “Shiny-Toy” 综合症的特点就是想要拥有最新的玩具,常常不顾现实或功能需求,或者被紧张感绑架,着眼于其他事物前对拥有的东西保持极其短暂的热情。
最优秀的高级开发员将这一问题置于可控范围内。他们清楚地知道什么时候不能做什么。他们知道,仅仅为了提高阅读率而从擦除的数据中重写一个库,或是由较陈旧的框架转向最新的框架,总归不是明智的决定。他们不是在规避风险,只是在慎重选择。
因为最终一切都回到了代码上。代码必须呈现其该有的样子——再无其他。代码的目标应该是足够清晰,可以在几分钟甚至几秒内被掌握。代码应具有较高的可读性,哪怕没有较高的技术含量也没关系。
简单即极致繁复。
他们不知为不知
尼尔·盖曼曾说过:有时不知道才是事情顺利发展的关键。
最难说出口的三个字不是“我爱你”,而是“不知道”。这是行为经济学畅销书《苹果橘子经济学》的作者史帝文·李维特和史帝芬·杜伯纳的观点。
你会如何处理这一不可避免的局面?充满自信,花20分钟讲述自己的成就,享受着头顶的光环。你不断给予肯定的回答,但现在人们提出了一个问题……而你真的不知道。
对很多人来说,这痛苦又扫兴。但是,实事求是完全没问题。这比掩饰自己知识或技能的不足要好很多。关键是要知道如何解决问题——不管是去请教他人还是深入探索。
这一切都在于如何回答问题,使自己更优秀。你能深入了解他们为什么这样问,从而获得更多信息,提供更广泛的帮助吗? 你能一起为找到答案提供帮助吗?你会在事后做一些研究以跟上他们的步伐吗?
成为一个高级开发员不意味着需要知道一切,而是意味着可以帮助大家寻找一切的答案。
最后一个品质:他们可以嗅到不良代码的气息
西莫·科雷说这句话的时候,被推上了风口浪尖:
程序员的麻烦在于,只有到了无法挽回的地步,人们才知道他在做什么。
这就是高级开发员对代码“气味”十分敏感的原因。如果代码看上去或感觉很糟,那它很有可能就是糟糕的。之前的开发员可能已经犯错了,然后你也会接着犯错。这就是编码的过程。
在反复构建出现过的解决方案时,应该努力完善代码库,不要让其变得更糟糕。所以在问“见鬼的,谁写了这个”时,应该立刻跟上一句“我要怎样使之变得更好”。
另外还需要在找到完善的方式前明白要完善什么,要明白好坏代码都是什么样的。顶级球员会在学习其他优秀球员的比赛上花更多的时间。我敢保证对顶级开发员来说也是如此。
不良代码就是那些不清楚为什么,可就是感觉不太对的代码。这些代码需要被删除,永久地删除,这是高级开发员和芸芸众生区分开来的独特之处。即使不容易,也要做正确的事。
以唐纳德·克努特的话作结:我觉得日常生活就像编程。喜欢什么,就可以把美好放入其中。
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)