写点什么

怎样才能成为一名出色的资深开发者?

  • 2019-09-23
  • 本文字数:2988 字

    阅读完需:约 10 分钟

怎样才能成为一名出色的资深开发者?

做什么不重要,怎么做才重要。



如果你想成为一名真正杰出的资深开发者,那只有一个办法:犯错误、改正错误、从错误中学习、分享错误、再重复这一过程。


所有犯过的错误都将成为你的宝贵经历。再从经历中学习,这就是成为一名成功资深开发者的关键。很简单,对吗?


换句话说,你刚刚步入社会,成了一名初级开发者,你纠结着该怎样做才能取得职业发展。这只是时间的问题吗?你要不要回到学校继续深造呢?或者再多拿些高级认证?


并不全是。


虽然正规教育可以让你迅速得到提升,但事实上我认识许多资深开发者,他们都只有大学学历而已。


好的资深开发者不仅要能写出漂亮的代码,还必须具备某些其它特质,这样才能受到别人的青睐。资深开发者是能为公司带来 10 倍以上价值的人,他们知道好的东西是怎样的,可以为顾客交付价值。


不要把资深开发者仅仅当成一个职务名称,它更是一套工作上的行为准则。不是你的工作内容,而是你的做事方法,让你真正地成为资深开发者。关于这一点没有什么好商量的。你不可能一进入职场就是个资深开发者,在成长的过程中你肯定会犯错,犯很多很多的错,但这些最终都会转换成你学到的东西和经验。


下面这些特质是我从许多资深开发者身上总结出来的,正是这些特质,把他们与普通的开发者区别开来。

1.他们很好奇

正如阿尔伯特·爱因斯坦所说:


我并不聪明,我只是特别好奇。


研究表明,当好奇心被激发时,人学习和记住知识的能力都会得到大幅度提升。当你好奇时,大脑中的奖励系统就会开始发挥作用,大脑分泌出名为“多巴胺”的化学物质,让人变得异常兴奋,学习速度非常快,即使对枯燥的内容也是如此。


好的资深开发者会更进一步。他们会有组织有计划地引导自己的好奇心,在紧急状况下就会用上自己积累起来的知识。


举个例子,先把一门编程语言学深学透,然后再扩展开,去学习其它语言。

2.他们会对选中的平台进行彻底研究

你不太可能碰上一个别人从未碰到过的编程问题。也没几家公司开发的东西真的是别的公司没有做过的。


正因如此,在使用你的语言和平台的过程中,你所面临的绝大多数问题,都曾经被解决过。


比如,我曾经利用 SAP 自带的面向对象类,将 30,000 行的 SAP ABAP 代码模块化,最终成了一个 200 行的类。我能做出这样的成绩,最主要的原因是我决心在了解其它 SAP 模块之前,先深入掌握 ABAP。我知道这样做会很慢,但付出的努力是值得的。


好的开发者从来不会满足于现状。不管他们的代码能不能工作,他们对每个应该问的问题,都会努力找出答案。

3.他们都是好导师

John Crosby 曾经一针见血地说:


辅导就是深入别的想法,听取别人的意见,再朝正确的方向推一把。


谷歌曾在 2008 年对这个问题做了一次重要研究。谷歌人才创新实验室的氧气计划团队以绩效评语、员工调查、优秀经理奖提名和其它信息等为素材,进行了长达一年的数据挖掘研究,以评估得分高和得分低的经理之间到底有多大差别。他们对 100 多名经理的 10,000 多项数据进行了研究。


研究有两点重要发现:


  • 要想取得管理成功,最重要的事就是做好导师工作。成功的经理们知道怎样指导团队成员获得成功。

  • 最不重要的事就是技术实力。这也从另一个角度证明,好的开发者不一定能成为一个好的经理。


根据研究成果,谷歌修改了他们的调查反馈模板,以反映出这些特质。在过去他们注重衡量经理人的产出如何,现在则关注他们花多少时间来指导团队,对愿景是否沟通得清晰有效,等等。他们也以这些技能为中心,开发了新的管理培训项目。


他们说,每个资深开发者的核心期望之一,就是要能够与内外部用户和合作者进行有效沟通。非技术背景的人没办法理解技术行话。所以最好的资深开发者反而总没办法在技术上得到别人的赞赏。


所以,你要提升自己的沟通能力,迅速判断听众们能听懂什么水平的技术术语,然后用简单的语言和贴近生活的例子来解释复杂的技术概念。


辅导紧密关系着新手向老手的成长,不管是职业发展还是个人成长。分享知识,分享经验,提前锻炼团队。

4.他们没有“闪亮玩具” 综合症

如杰夫·贝索斯所说:


公司不应该对闪亮的东西上瘾,因为闪亮的东西不长久。


这也适用于开发者。事实上,大多数开发者都是属喜鹊的,他们总是喜欢搜罗新鲜闪亮的东西,不管怎样先保存起来,再慢慢寻找用途。


如果你对这种现象没什么切身感受的话,闪亮玩具综合症的典型特征就是想拥有最新潮的玩具,不管有没有实际用途,不管是否需要。或者就是痴迷于紧张而又短暂的拥有感,然后很快就移情别恋了。


好的资深开发者会不断提醒自己不要犯这样的毛病。他们很清楚什么时候不要做什么事。他们知道很多决定都是坏决定,比如为了提高可读性而把一个库完全重写,或者从旧框架切换到一个全新的框架。他们并不害怕风险,他们只是知道哪些事情该做而已。


所有事情最终都会归结到代码上。代码应该只做它应该做的事,别的什么都不要做。代码的功能要清晰易懂,让人花几分钟甚至几秒钟就能明白。浏览代码应该非常容易,对水平不高的开发者也应如此。


大道至简。

5.他们承认有自己不知道的东西

Neil Gaiman 曾说:


发现自己不知道某些东西,有时候正是弥补的良机。


世上最难说出口的一句话,不是“我爱你”,而是“我不知道”。行为经济学畅销书《魔鬼经济学》的作者 Stephen J. Dubner 和 Steven D. Levitt 这么认为。


这一刻无法避免,但当它发生时你又如何应对?你滔滔不绝地把自己的成就大讲特讲了 20 分钟,造就了领域专家的形象,享受着领军人物的光环。人们不断地提问,你游刃有余地解答。终于他们问到了一些其实你并不太懂的东西,这时候你会怎么办?


对许多人来说这是非常扫兴的事,但事实上直接承认也没什么大不了的,总比掩盖自己的短板好,不管是知识还是技能上的。这时最关键的就是你将如何解决这样的问题,不管是请教别人还是自己去深入钻研。


你对待问题的方式,正是你能否变得资深的关键。你能否深入了解他们问这样问题的原因,了解更多的背景知识,扩展自己的知识面?你能不能为他们提供帮助,一起找出问题的答案?你愿不愿意事后再研究一下,并且把答案反馈给他们?


成为一个资深开发者并不意味着你要无所不知、无所不晓。它只是意味着你可以帮助大家找到问题的答案。

6.最后,他们可以感受到坏代码的味道

在这个问题上,Seymour Cray 一语中的:


程序员们的问题在于,你完全没办法知道他们在做什么,直到错过良机,无法补救。


正因如此,好的资深开发者们都对代码的“味道”特别敏感。如果看起来或者闻起来像是坏代码,那就很可能是坏代码。之前的开发者很可能在这个问题上犯过错误,你也一样会。写代码就是这么回事。


当我们不断地解决接踵而至的新问题时,也要不断努力提高现有代码库的质量,起码保证不要变坏。所以当你挠头“谁写了这么烂的代码啊”的时候,下一个跟着要问的问题就应该是:“我该怎样才能让它变好呢?”


在想明白怎么改进之前,你先得知道要改进什么。你要知道好的代码和坏的代码都长什么样子。顶级足球运动员与普通运动员之间的区别之一,就在于他们会多花很多时间去研究其他运动员的比赛。我相信对顶级开发者来说也是一样的。


有味道的代码就是那些你也没办法说清楚为什么,但就是感觉不对劲的代码。这样的代码就应该被去除掉。这也是你做为一个资深开发者的独特卖点之一,可以让你鹤立鸡群。要做正确的事,即使不一定要马上开始。


用 Donald Kruth 的话来说:


我猜编程就和平凡的生活一样。如果你喜欢什么东西,你就会在其中发现美。


英文原文:


How to Be a Good Senior Developer


2019-09-23 11:353769
用户头像

发布了 152 篇内容, 共 71.3 次阅读, 收获喜欢 64 次。

关注

评论 1 条评论

发布
用户头像
认同
2019-09-25 19:08
回复
没有更多了
发现更多内容

Apache Flink 中作业图与执行图的深入解析

木南曌

flink 实时计算

Parallels Desktop 19 for Mac虚拟机 19.1.0

iMac小白

Parallels Desktop 虚拟机 Parallels Desktop下载 Parallels Desktop19

出海扩建扩产,光伏制造可复用的数据“最佳实践” | 数据要素 × 工业制造

奇点云

奇点云 数据要素 工业制造 光伏产业

在钉钉AI Agent 商店,寻找未来TOB 应用的答案

ToB行业头条

程序员转技术管理要做哪些努力?

伤感汤姆布利柏

Stable Diffusion中的embedding

程序那些事

人工智能 程序那些事 openai

如何在 Windows 上安装SSMS,保姆级教程来了!

霍格沃兹测试开发学社

云电脑知识科普

青椒云云电脑

云电脑

这10款VS Code神仙插件,嵌入式程序员必备

不在线第一只蜗牛

详解数仓的向量化执行引擎

快乐非自愿限量之名

Python 人工智能 数据库 算法

【论文速读】| 针对红队攻击和防御大模型的攻击提示生成

云起无垠

Docker从入门到精通:Docker 容器数据卷详解

霍格沃兹测试开发学社

使用pandas高效读取筛选csv数据

霍格沃兹测试开发学社

智己汽车与火山引擎在模型应用及算法领域达成深度合作

新消费日报

云电脑知识科普

青椒云云电脑

云电脑

架构实战营 - 模块二 - 作业

小畅

博睿数据亮相GOPS全球运维大会,Bonree ONE 2024春季正式版发布!

博睿数据

卫星地面站监测系统仿真

DevOps和数字孪生

卫星 协同仿真

ETLCloud平台组件模版的使用技巧

RestCloud

组件 ETL 模板使用

Rhino 8 for Mac(犀牛3D建模软件)

iMac小白

Rhino8激活版 Rhinoceros8 Rhino 8下载

澳鹏中国大模型智能开发平台4大优势

澳鹏Appen

人工智能 数据 数据集 数据标注 大模型

苹果开源高效语言模型 OpenELM;全球首个 AI 基因编辑器开源丨RTE 开发者日报 Vol.192

声网

Things 3.20.5中文免激活版 mac日程和任务管理工具

iMac小白

Things 3 Things下载

ClkLog实践中的挑战:如何设计和实施有效的埋点指标

ClkLog

开源 数据分析 开源软件 埋点分析系统

npm命令完整使用指南

霍格沃兹测试开发学社

【论文速读】|大语言模型(LLM)智能体可以自主利用1-day漏洞

云起无垠

「白嫖」开源的后果就是供应链攻击么?| 编码人声

声网

怎样才能成为一名出色的资深开发者?_语言 & 开发_Ravi Shankar Rajan_InfoQ精选文章