免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

  • 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:353688
用户头像

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

关注

评论 1 条评论

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

Java多线程开发系列1:操作系统进程与线程

BigBang!

线程 进程 Java多线程

Mac专业级音频制作软件 Logic Pro

展初云

Mac软件 音频处理 Logic Pro

CodeWhisperer 的正确使用

亚马逊云科技 (Amazon Web Services)

人工智能 GitHub 云上探索实验室 Amazon CodeWhisperer Amazon Bedrock

域名证书到期,如何通过nginx更换https证书

javaNice

nginx

《用友企业绩效管理白皮书》要点解读之趋势洞察

用友BIP

企业绩效管理

Macos ftp传输工具:Transmit 5 中文版 支持M1 附安装

加油,小妞!

ftp传输 Transmit 5

API自动化测试​

RestCloud

API测试 API 接口

物联网卡运营 阶梯限速、阶梯防超套、自动化推送

开源物联卡管理平台-设备管理

物联网 IoT SIM卡 eSIM安全 java 技术提升

SDK可以支持本地检测吗

矩视智能

深度学习

Python 文件处理指南:打开、读取、写入、追加、创建和删除文件

小万哥

Python 程序员 软件 后端 开发

Mac电脑专业级音频制作软件 Logic Pro X中文免激活

胖墩儿不胖y

Mac软件 音频处理 音频制作软件 音频管理工具

用友成功签约国家能源全资子公司-宁波风电

用友BIP

财务数智化

Transmit 5 for Mac文件传输客户端

展初云

文件传输 ftp Mac软件

【我和极客时间的故事】极客时间带给我的成长

三掌柜

我和极客时间的故事

对话在行人|泰开集团:通过财务数智化转型,实现多重管控要求

用友BIP

对话在行人 数智化领先实践

针对海量审计日志统计分析的Amazon OpenSearch Service应用

Hanson

Linux操作系统中软件安装:用RPM包管理器安装软件步骤

小齐写代码

合约交易所系统开发搭建流程

区块链技术

OpenHarmony,奏响中国基础软件的“光辉岁月”

脑极体

开源鸿蒙

平台工程动态 Monthly News 2023-10

杨振涛

DevOps 平台 平台工程 平台工程社区 PECommunity

一起学Elasticsearch系列-索引的CRUD

Java随想录

Java ES

App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法

雪奈椰子

Bartender 5 for mac菜单栏图标管理软件

展初云

Mac Bartender 菜单栏图标管理软件

垃圾回收是什么?

暂时不愿意透露姓名的热心人士

垃圾回收

亚马逊云科技大语言模型下的六大创新应用功能

淼.

Programming abstractions in C阅读笔记:p184-p195

codists

Photoshop Web版本用了哪些CSS技术

南城FE

CSS css3 前端 PhotoShop

全国气温跳水大赛启幕,华为天气提醒用户及时添衣

最新动态

pycharm pro 2023.2.4中文版 支持M1

加油,小妞!

开发工具 PyCharm Pro

APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。

从研发域到量产域的自动驾驶工具链探索与实践

百度Geek说

人工智能 自动驾驶 dubbo 企业号11月PK榜

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