全文共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,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

成为优秀的高级开发员,重点在于……相关推荐

  1. 微软企业服务部华东区招聘顾问/架构师/.NET高级开发员

    [因应华东区服务业务扩展,长期需要咨询顾问/架构师/.NET高级开发员,有意者发送邮件至 ningxue@microsoft.com] Job Title: .NET Consultant/Archi ...

  2. 每日一皮:高级开发员 VS 菜鸟开发员

    亮瞎了我的眼... 漏皮的补皮 每日一皮:我以为的工作量 VS 实际上的工作量 2020-06-10 每日一皮:当我修复一个隐藏Bug时,陷入了死循环中.... 2020-06-09 每日一皮:CPU ...

  3. 如何从初级程序员变成高级程序员?赶紧看一看

    高级程序员是一名犯过其领域内所有可能犯到的错误的专家. 如果按照工作经验对软件开发人员进行分类,可能是这样的: 初级:2-3 年工作经验 高级:10 年以上工作经验 中级:介于初级和高级之间 这种按工 ...

  4. 如何从初级程序员顺利晋升到高级程序员?

    文共3080字,预计学习时长9分钟 来源:Pexels 按经验级别划分的软件开发人员可能如下: · 初级:拥有两到三年的经验 · 高级:拥有十年以上的经验 · 中等或 "中级水平" ...

  5. 如果成为一名高级安卓开发_什么是高级开发人员,我如何成为一名开发人员?

    如果成为一名高级安卓开发 Becoming a Senior Developer is something many of us strive for as we continue our code ...

  6. eclipse oxygen java7,Eclipse Oxygen:M7重点在于可用性

    [IT168 评论]4.7版本是EclipseOxygen的第七个里程碑.跟以前的版本不同,其重点主要是使Java开发工具(JDT)和插件开发环境(PDE)更优秀,而M7的重点在于可用性,平台也有一些 ...

  7. [译] 如何成为一名优秀的初级开发人员

    本文翻译自Medium上的一篇文章,原文标题:How To Be A Good Junior Developer. 点击文末的阅读原文可以跳转到英文原文. 到明年,我的职业编程生涯即将满15年.15年 ...

  8. 30K程序员的简述:如何成为高级开发人员

    这篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径).本文适合那些有着简单愿望的人:你想成为一名高级开发人员 ...

  9. 成为优秀高级程序员的10个要点

     成为优秀高级程序员的10个要点 What 软件工程师的职业生涯要历经以下几个阶段:初级.中级,最后才是高级.这篇文章主要是讲如何通过10个步骤助你成为一名高级软件工程师. Why 得到更多的报酬 ...

最新文章

  1. ASP.NET中常用的26个优化性能方法(转)
  2. 高通平台:USB充电
  3. import tensorflow 报错 ImportError: DLL load failed: 找不到指定的模块。
  4. 面试必会系列 - 1.2 Java 集合,源码讲解
  5. 两个Python web框架:Django Tornado比较
  6. oracle exp 00006,Oracle 12.1新特性----使用RMAN从备份中实现recover table
  7. SVN代码回滚命令之---svn up ./ -r 版本号---OK
  8. web面试常见问题补充
  9. php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...
  10. mapbox 修改初始位置_一行代码教你如何随心所欲初始化Bert参数(附Pytorch代码详细解读)...
  11. Atom飞行手册翻译: 4.5 ~ 4.8
  12. 三星Galaxy A70s现身GeekBench数据库:搭载6400万像素传感器
  13. bigdecimal js 判断等于0_Js BigDecimal实现精确加减乘除运算的方法
  14. lzg_ad:使用EWF API开发常见问题
  15. mysql字符串查询_mysql字符串查询常用命令
  16. 计算机日志查询域用户登录记录,Windows域控制器身份验证登录日志记录和取证...
  17. 合工大OJ 1359
  18. MySQL5.6 GTID
  19. Oracle查看用户所在的表空间
  20. MiSUMi米思米选型光盘 FA工厂自动化零部件 3D CAD库 2017

热门文章

  1. R统计绘图-VPA(变差分解分析)
  2. java图片高保真缩放
  3. minotaur的故事_Minotaur为Mesos,Kafka和Hadoop开发开源云
  4. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校副教授Dan Zhang:基于线性规划的近似动态规划方面的一些最新成果...
  5. NR/5G - SUL
  6. 51nod - 1204 Parity
  7. TypeScript/JavaScript 2021-02-25T03:34:35.772Z 时区 日期格式化
  8. 去除数组中指定元素的方法
  9. Livy 安装使用说明
  10. 10分钟了解BIM+GIS融合,常见BIM数据格式及特性