点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

首先我想声明,我不认为自己能属于 TOP 1%,也许勉强算得上 TOP N%,N 大于 1。实际上,业界对于“TOP 1%”的界定一直很模糊,因为它取决于究竟谁才能称得上是人们口中的“软件工程师”——要包括使用 R 语言的数据科学家吗?以及制作 Excel 图表的业务分析师吗?

程序员的能力层次可以划分为三等

所以下面我们从 0.0 到 3.0 来区分程序员的能力层次。一般而言,程序员可以分成三个大类:

  • Adders,即做加法的人(“1 级”,0.0 到 1.4)。对于他们,只要给予充分的时间就可以解决大多数编程问题。这些人往往是做业务线工作、写脚本来获取数据、回答高管或交易者关心的问题等等。在这一层级中,能力优秀的人往往想要脱离狭隘的细节,超越这个层面来研究更普遍的“核心”问题。

  • Multipliers,即做乘法的人(“2 级”,1.5 至 2.4)。这一层级中,他们可以选择技术、制定架构决策、编写或维护有用的库。更倾向于以自己的名字做出开源贡献,以及在各种会议上发言,而且往往在执行上与公司相当。

  • Global Multipliers,即在全球范围内做乘法的人(“3 级”,2.5 以上)。这一层级能够构建社区、创建平台甚至提出 Google、MapReduce 这样的概念。他们的野心往往超出了大多数公司的范围,所以经常在学术界、独立咨询、或在大公司的研发实验室的高薪岗位上任职。

当然,这三个抽象层次并不是完全准确的,比如有一些 “Adders” 任务也是非常困难的(例如建立一个生产交易系统),大部分“ 1 级”程序员无法完成。有的时候,未达到“ 2 级“(或者 3 级)要求的人也会被赋予“ 2 级”(或者 3 级)的工作,比如复杂的软件系统结构。也许一个很难的 1 级任务是真正的 1.3 或 1.5 甚至更高。所以,以下只是理论层面的讨论。

注:为了更好地评估程序员的水平,我们假定在 1.5 (0.0 ~ 3.0)时,程序员能力达 50%(0% ~ 100%)。

0.7 程序员基本上只可以完成最直接的编码任务,1.0 就是人们通常认为的“软件工程师”基本水准,1.2 可能就是中等水准的工程师(但在顶级科技公司,中等水准的工程师要求接近于1.6)。例如在谷歌,SWE 3 要求 1.6 ~ 1.8 级别的工程师任职,但分配了 1.2 ~ 1.4 级别的工作。谷歌的 Sr. SWE 要求 1.8 ~ 2.0,但是分配了 1.4 ~1.7 级的工作——所以在这样的大公司工作,工程师的水准经常被低估,但也侧面体现了谷歌的代码质量相当高。相对的,在一些没有 1.5+ 工程师的公司(一般是一些依靠软件的非技术公司)中,通常会由 1.2 ~ 1.4 级别的人员来做“ 2 级”工作,所以技术水准可想而知。

注:Google 团队由 SWE(软件开发工程师)、SET(软件测试开发工程师)、TE(测试工程师)组成。

如何成为 TOP 1% 级别的程序员?

上面所有的言论其实都是为了证明,客观一点来看, “TOP 1%”完全取决于公司内部程序员群体的具体构成。以我的观点来看,目前全球大约有 20 万程序员达到了 2.0 级或更高的级别,这也是我认为的 “TOP 1%” 水准。那么对于程序员来讲,怎么才能练就 2.0 的水平呢?

  • 首先,7 ~ 14年的成长时间。虽然我这 8 年来也一直在编程,但因为工作的关系一直断断续续的,所以我猜我是 1.9 ~ 2.0 级的。因此你必须一直编写代码,阅读代码,并且不断尝试新技术,通过各种失败的尝试来反复提升自己。如果能做到这一点,每年 0.1 ~ 1.1 的进步是必然的。而且,因为大多数雇主会把你的工作内容分配在你真实的能力之下,所以可以在工作完成之外,悄悄地学习和试验新技术。

  • 做到充分的研究。计算机科学是一个复杂的领域,要做到精通,至少需要对所有事情有一个正确的理解。如果你认为汇编代码、线性代数或强静态类型是“吓人的”或“太深奥了”,那么你永远不会达到 2.0,不能有胆怯心理。同时要保持好奇心,对所有话题都要涉猎,不能有“这不会用到的”侥幸心理。此外,还需要了解行业本身:为什么会有这么多的软件项目失败?是什么错误(技术性的和非技术性的)导致的?如何防止?如何成为一个好的创业CTO?哪些模式值得学习?哪些模式需要舍弃?......

  • 无论成功与否,都努力做出一些项目。想要成为一个称职的程序员、建筑师、或是 Linux 黑客,只有通过反复的实践。虽然实践中可能会面临着各种摇摆不定、失败、不顺利等等情况,但是一定要坚持做下去,才有可能有进步。

  • 借助网络来发掘创意。不要把“网络”看作下班后的休闲工具,程序员也是社交生物,所以可以通过和其他优秀的程序员交谈,了解他们解决了什么问题,以及如何解决问题。

  • 停滞不前时选择跳槽。大多数程序员的能力都被局限在 1.2 左右,归根结底是因为他们没有机会去进步。他们的工作中需要花费大量时间去解决各种复杂的、纠结的遗留代码,而不是专注在计算机科学本身。花费大约 3 个月的时间来研究糟糕的传统架构是非常有用的,但不能再长了。如果想在成功的项目工作,遇见更强大的人,那么是时候离开现在的岗位了。

通过上面的阐述,你认为自己是属于哪个级别的呢?你现在的工作内容是否在你的能力之下?如果想要成为 TOP 1% 程序员,那么是时候做出改变了。

————— END —————

程序员,有什么资格去谈佛系?

开发者不可错过的 10 个人工智能开源项目

Java JDK 10:下一代 Java 有哪些新特性?

TOP 1%的软件工程师和其他 99%有什么不同?相关推荐

  1. 我与我的职业梦想 – 成为一名优秀的软件工程师

    无知少年对于计算机的热爱,甚至可以追溯到初中时为了弄明白步步高 9188 英语词典学习机中的 RPG 游戏,懵懵懂懂地看着 VB 的语法书:高中时,在全部人都沉浸在游戏的网吧中,看着是似懂不懂的 C ...

  2. HDL4SE:软件工程师学习Verilog语言(十一)

    11 流水线 前面一节介绍了状态机的概念.状态机用于描述事务处理的一个程序性流程,可以组成顺序,分支,循环的事务处理流程.这些概念本来在verilog中的行为级描述中是有的,但是由于不是RTL描述,因 ...

  3. J2EE高级软件工程师面试题集

      第一章:J2EE高级软件工程师面试题集 --JAVA基础部分 1.面向对象的特征有哪些方面1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不 ...

  4. 一个合格的软件工程师应该读过哪些书

    转自:http://blog.csdn.net/justjavac/article/details/7865418 编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问 ...

  5. instagram软件_我在facebook instagram担任软件工程师的4年中的4个教训

    instagram软件 语境 (Context) I joined Facebook as a software engineer (9/6/2016) and today is my four ye ...

  6. 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  7. 我是“真正的”软件工程师吗?

    by Sun-Li Beatteay 通过孙丽·贝蒂 我是"真正的"软件工程师吗? (Am I a "real" Software Engineer yet?) ...

  8. 总结-软件工程师 ( 编程能力 )

    总结-软件工程师 ( 编程能力 ) 软件工程师编程能力前言 /* 编码现状 */ 程序猿现状: 现项目不是白做的,的确知道怎么写代码,怎么做出一个界面,怎么发起一个网络请求... 仅此而已了.不知道如 ...

  9. 软件工程师生存指南:面试准备、工作经验和实用工具

    编者按:软件工程师是令人羡慕的职业.但是如何才能拿到这份工作?又如何才能做好这份工作呢?拥有相关经验的Valeri Alexiev提供了相关建议和工具.其中包括了如何准备面试.如何以软件工程师的身份工 ...

最新文章

  1. Python自学笔记-列表生成式(来自廖雪峰的官网Python3)
  2. Java 8的6个问题
  3. 成功解决运行tensorflow时ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘
  4. 牛客练习赛24题解(搜索,DP)
  5. socket自定义框架
  6. Andrew Ng机器学习编程作业:K-means Clustering and Principal Component Analysis
  7. OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书
  8. Bootstrap-分页插件Paginator
  9. java nextprime_中国MOOC_零基础学Java语言_第7周 函数_1分解质因数
  10. 图解think php,图解ThinkPHP5框架(三):配置类Config.php源码解读
  11. coreseek(中文全文搜索)安装和使用(一)
  12. 微信小程序轮播图swiper使用
  13. 映美精黑白相机在linux平台上的使用(一)
  14. fastapi+tortoise单元测试
  15. 技嘉主板+AMD CPU开启CPU虚拟化方法
  16. 网付扫码点餐新福利,消费者点餐可获微信支付金币奖励
  17. 电子印章有哪些特点和优势?
  18. 如何通过虚拟机和真实网线调试设备
  19. 面向对象:余愿,知你冷暖,懂你悲欢,与你共黄昏,也能问你粥可温
  20. 肉体的情欲、眼目的情欲、今…

热门文章

  1. Flutter代码锦囊---根据环境选择URL地址
  2. 凝结芽孢杆菌行业调研报告 - 市场现状分析与发展前景预测
  3. 2021年中国一次性防护服市场趋势报告、技术动态创新及2027年市场预测
  4. 微信小程序不支持打开非业务域名_开达应用五端合一:抖音/头条小程序基础配置...
  5. (转)Google 选择 Jetty, 放弃 Tomcat
  6. Chrome 100发布:启用全新图标,修复28个安全漏洞
  7. 李彦宏:自动驾驶是起点,终局是智能交通;iPhone15将搭载苹果自研5G基带芯片;英特尔收购Linutronix|极客头条...
  8. 面试官问我什么是「栈」,我随手画了 10 张图来解释
  9. Go 远超 Python,机器学习人才极度稀缺,全球 16,655 位程序员告诉你这些真相!...
  10. 雷军喜提第四家上市公司;梨视频 App 被全网下架;Flutter 1.17 稳定版发布 | 极客头条...