优秀程序员和一般程序员有什么区别?

2023-11-17

  • 优秀程序员和一般程序员有什么区别?

  • 为什么有的人一入职就能平步青云,而有的人入职很久却一直在原地打转?

  • 程序员的职场进阶之路到底有多少门道?

 

今天,我们邀请到了前Google Top Performer,来Offer的闫老师,给大家分享一下他的职场经验。

 

1. Google标准下的优秀程序员是什么样的?

2. 如何完成从“新手-大神”的程序员进阶之路?

 

闫老师曾以年级Top 1%、4.0满绩点的成绩从USC获得CS的硕士学位。进入Google后,连续3次被评为Google的Top Performer。

 

 

不仅闫老师本人的奋斗史非常值得借鉴,闫老师还成功帮助上千名学生拿到FLAG级别公司Offer,这让他对程序员的升级之路有了更深的认识。

 

 

Google标准下的优秀程序员

 

想知道如何从一般的程序员成长为优秀的程序员,首先,我们要搞清楚,优秀程序员的标准是什么。

 

在Google的评价标准中,程序员是否优秀,取决于能解决多复杂的问题、解决的问题有多大影响力。

 

那什么是复杂的问题呢?复杂的问题一般会:

 

  • 牵扯到不同的团队,甚至是不同部门的团队。这就需要程序员和来自不同专业的人自如交流。

 

 

 

 

  • 实现起来需要考虑到不同的情况,需要程序员有极其严谨的逻辑思维能力。

 

 

  • 这个问题的Scale非常的大。你做的产品可能需要support百万、千万级的访问,同时保证系统的正确和稳定。

 

 

比如设计一个简单的web application来实现Facebook最基本的功能,一般的程序员可以把东西做出来给50、100个人用,但是优秀的程序员做出来的成果可以让100万人用。

 

这个Scale就不在一个等级上了,所要考虑问题的复杂程度也是前者无法比拟的。

 

对大部分刚入职的同学来说,想直接达到Google优秀程序员的标准可能不太容易。

 

其实,在职业生涯的每个阶段,公司对程序员都是有不同要求的。

 

 

我眼中的程序员进阶之路

 

我认为,对于初入职场的新生,首要的任务是出色地完成目前阶段的事情,先成为一个合格的程序员

 

 

在这个阶段,培养coding能力和对逻辑的理解能力是重点,数据结构和算法等系统知识更要扎实。

 

做到这些, 你就可以比较好地完成简单、基本的任务了。具体表现可能是:

 

- 你的code比别人的更清楚易懂

- 你的方法比别人的效率更高

- 你的程序比别人的更具可扩展性...

 

单是能做到这些,其实就要花一番苦功了。

 

如果顺利达到合格程序员的标准,你可以开始往下一段位努力了。

 

在这个阶段,你需要着重提升自己两个方面的能力 - 大局观和领导力

 

01

大局观

 

横向来说,一个良好的大局观可以让你不仅仅局限于一个“点”,而是关注由多个“点”组成的“面”。通俗点说,即你对自己的所要完成的任务有一个big picture,可以从多个角度思考如何解决一个问题。

 

纵向来说,良好的大局观就是长远的动态眼光。就像下棋一样,走一步看两步想三步,让你做的项目一直处于一个向前发展的态势,这是非常重要的。

 

 

02

领导力

 

另外,良好的领导力也至关重要。

 

这时的你应该已经对自己所做的项目有了深层认识,不再需要别人告诉你这个东西该怎么做。不仅能自己发现问题、解决问题,还能给其他人分配任务,通过合作在最短时间内找到最优解

 

 

我曾指导过一个Z同学。她不是名校毕业、没有耀眼的实习经历,几经波折才拿到了Snapchat的offer。

 

但是进入公司后,在8个月内她就能从Entry Level蜕变成组里的得力干将,成功升职。

 

她是怎么做到的?大家可以参考一下:

 

Z同学 | Northwestern EE

入职Snap仅8个月就升了一级

 

进入Snapchat之后,我大致经历了三个阶段。

 

第一阶段:刚进入公司的我十分紧张,压力山大。这时,manager给我分配什么任务我就完成什么任务,其他时间都在熟悉工作内容、适应工作环境。

 

第二阶段:逐渐上手后,我开始有了时间和精力思考手头的项目。我意识到如果只接收manager的指令,那我永远只能是个“新人”。于是,我开始主动跟manager提出我的想法,主动发现问题,寻找解决方案。

 

第三阶段:渐渐的,因为我出色的技术和沟通能力,manager放手让我去负责一个项目。甚至有时,我会向manager提出建议,告诉他我们应该做什么。

 

主动承担、积极思考、善于沟通,就是让我从战战兢兢的小白迅速蜕变为独当一面的工程师的法宝。

 

三个小建议

 

在实际的工作中,我给大家分享这3点建议。

 

第一,take initiative,注重培养自己的主观能动性。

 

不要只是满足于完成了一道题或老板交待的任务,还需要不断“复盘”,注重总结才是王道。不总结,不举一反三,不查漏补缺,是很难深入理解的。

 

 

第二,不要满足于实现了一个小的feature,或是写了多少行code。

 

在一个很大的项目里,你做的事情只是很小的一部分。要培养自己的大局观,不仅对自己做的部分有深层理解,还要去主动了解别人做的部分,了解别人和自己做的东西在一个系统下的关系。

 

第三,多和senior级别的程序员交流,尝试从更high level的角度看问题。

 

这样你才知道自己欠缺什么,应该在哪些方面提升。你可以想一想,如果我要变得像我的老板一样,或是像我老板的老板一样,甚至,像Jeff Dean一样,我还缺什么东西。

 

 

Jeff Dean能完整设计出Google整个的search engine,那我能不能做类似的事情?如果不能,中间还有什么东西是需要学习补充的。

 

很多时候,我们知道的越多,越能意识到自己的无知,才能进一步激励自己进步。人生是这样,程序员的升级之路也是这样。

 

最后,希望刚刚进入职场的同学们都能更加主动地思考和交流,向合格程序员、甚至优秀程序员的方向努力。

 

而还在努力求职的同学们,也可以通过实践动手做项目,积累经验、提升素质。这样不仅能帮助你提高求职竞争力,也能为日后步入职场打下坚实的基础!

 

更多科技求职资讯,请关注“来Offer”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优秀程序员和一般程序员有什么区别? 的相关文章

  • 黑幕!阿里P8爆出学透这份算法面试文档,不再怕任何大厂算法题

    为什么要学习数据结构和算法 随着应用程序变得越来越复杂和数据越来越丰富 几百万 几十亿甚至几百亿的数据就会出现 而对这么大对数据进行搜索 插入或者排序等的操作就越来越慢 数据结构就是用来解决这些问题的 阅读本教程前 您需要了解的知识 在您开
  • 腾讯、阿里多位大佬共同推荐!封神级Python学习路线+核心知识点笔

    人工智能时代下 Python毫无疑问是最热的编程语言 有人夸它功能强大还上手轻松 有人说它学习曲线不那么陡峭 但是更多的人 在推开Python的大门后却发现 Python入门容易但精通却不易 你是否也曾傻傻分不清 列表 元组 字典 集合 等
  • 架构师必备技能之——MySQL数据库表设计

    好记忆不如烂笔头 能记下点东西 就记下点 有时间拿出来看看 也会发觉不一样的感受 目录 一 总体设计思想 二 字段相关设计原则 三 索引设计原则 四 SQL操作原则 五 其他原则 一 总体设计思想 1 不要在数据库做运算符操作 数据库服务器
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • Linux学习教程 Linux入门教程(超全面 超详细)收藏这一篇就够了

    Linux是什么 linux是一个开源 免费的操作系统 其稳定性 安全性 处理多并发能力已经得到业界的认可 目前大多数企业级应用甚至是集群项目都部署运行在 linux操作系统 之上 很多软件公司考虑到开发成本都首选linux 在中国软件公司
  • 卖过房,进过厂,毕业两年后这个99年的小哥哥毅然转行车载测试,收入翻番!

    21年大学毕业的时候 我就知道可能接下来找工作是个难题 这年头 大学生早就不值钱了 毕业生人数一年比一年高 但企业的招聘岗位却只有那么几个 再加上疫情影响 各行各业都在缩减开支 减少招聘 985 211等重点大学的人才人家还挤破头 哪里还有
  • 现在的00后,实在是太卷了......

    现在的小年轻真的卷得过分了 前段时间我们公司来了个00年的 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好 一大家子指望他一个人
  • 银行测试要求高吗?从业人员来为你解答!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 5k次 点赞69次 收藏10次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 接口测试和功能测试的区别

    接口测试和功能测试的区别 本文主要分为两个部分 第一部分 主要从问题出发 引入接口测试的相关内容并与前端测试进行简单对比 总结两者之前的区别与联系 但该部分只交代了怎么做和如何做 并没有解释为什么要做 第二部分 主要介绍为什么要做接口测试
  • 【HttpRunner】接口自动化测试框架

    简介 2018年python开发者大会上 了解到HttpRuuner开源自动化测试框架 采用YAML JSON格式管理用例 能录制和转换生成用例功能 充分做到用例与测试代码分离 相比excel维护测试场景数据更加简洁 在此 利用业余时间研究
  • 还记得当初自己为什么选择计算机?

    还记得当初自己为什么选择计算机 当初你问我为什么选择计算机 我笑着回答 因为我梦想成为神奇的码农 我想像编织魔法一样编写程序 创造出炫酷的虚拟世界 谁知道 我刚入门的那天 电脑却故障了 我只能用巨大的打字机来编程 我感叹道 果然这个魔法圈子
  • 从一个程序员的角度看东方甄选“小作文”事件

    最近东方甄选 小作文 风波愈演愈烈 开始小编和观众吵架 后面东方小孙本来想要平息风波 而 摔手机 和泄漏董宇辉薪资待遇有激起更大的风波 导致东方甄选粉丝每天都几万 几十万的下降 作为一个消费者 开始是不太能理解东方甄选的这些骚操作 东方甄选
  • [大厂实践] 零配置服务网格与按需集群发现

    本文介绍了Netflix通过扩展Envoy支持按需集群发现机制帮助团队无缝迁移服务网格的实践 原文 Zero Configuration Service Mesh with On Demand Cluster Discovery 在这篇文章
  • 外包干了2个月,技术退步明显了...

    先说一下自己的情况 大专生 19年通过校招进入湖南某软件公司 干了接近4年的功能测试 今年8月份 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • [大厂实践] 零配置服务网格与按需集群发现

    本文介绍了Netflix通过扩展Envoy支持按需集群发现机制帮助团队无缝迁移服务网格的实践 原文 Zero Configuration Service Mesh with On Demand Cluster Discovery 在这篇文章
  • 外包干了3个月,技术退步明显.......

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 如何打赢稳定性之战?

    文章目录 前言 为什么总会出现问题呢 如何证明你的稳定性做的有效果 既是持久战 也是防御战 1 提前建筑好防御工事 2 以攻为守 3 找外部支援和配合 前言 随着23年年末期间 各大厂争先恐后的出现的各种线上

随机推荐

  • 『 云原生·Docker』初识Docker镜像与Docker镜像操作(一)

    系列文章目录 本系列主要分为以下六大部分 正在更新中 尽请期待 云原生 生之门 云原生 前置知识 云原生 Docker 云原生 Kubernetes 云原生 KubeSphere 云原生 DevOps 点击关注本专栏 提示 已经更新的或正在
  • moviepy第2天

    MoviePy 完整文档 是一个用于视频编辑的Python库 剪切 串联 标题插入 视频合成 又名非线性编辑 视频处理和创建自定义效果 有关一些使用示例 请参阅库 MoviePy可以读取和写入所有最常见的音频和视频格式 包括GIF 并在Wi
  • C语言实现判断一个整数能否被3 5 7中哪些数字整除

    include
  • Excel中的散点图这么强大,学习了!

    全世界只有3 14 的人关注了 数据与算法之美 平时见得最多的也许是柱形图了 但我个人最喜欢的却是散点图 在讲散点图之前 我先阐述一个不太严谨的个人观点 我认为 所有的数据图表都可以分为两类 一类是偏重于展示 一类是偏重于研究 如何理解 偏
  • !!!RFID原理及应用期末复习总结!!!少走弯路,直接满绩!

    选用教材 RFID原理及应用 清华大学出版社 第一章 概述 学习目标 什么是RFID RFID的发展史 RFID的构成及各模块功能 RFID的几种分类 RFID的应用领域 射频识别 RFID RFID技术 又称射频识别 是一种通信技术 可通
  • 《深入理解Java虚拟机》学习笔记

    JDK 用于支持Java程序开发的最小环境 包括Java程序设计语言 Java虚拟机 JavaAPI三部分 JRE 支持Java程序运行的标准环境 包括Java SE API子集和Java虚拟机 第一章 Java虚拟机发展史 1 Sun C
  • 3.取石头 (15分)

    题目内容 有一堆石子 A B两人轮流从中取出石子 每次取出的石子数目只能为1 3 7或8 最后一枚石子谁取到就是输方 A B两人都足够聪明 不会做出错误的判断 现给出一定数目的石子 A先取石子 计算A最终是输是赢 赢用1表示 输用0表示 输
  • 灰狼(GWO)算法(附完整Matlab代码,可直接复制)

    尊重他人劳动成果 请勿转载 有问题可留言或私信 看到了都会回复解答 其他算法请参考 1 粒子群 PSO 优化算法 附完整Matlab代码 可直接复制 https blog csdn net xinzhi1992 article detail
  • Redisson分布式锁

    SpringBoot集成Redisson步骤
  • GeoServer基础教程(五):使用GeoServer和OpenLayers发布地图服务

    转载 https ethanblog com tech publish wms with geoserver and openlayers html 在前面几节的关于GeoServer的基础教程中 我们介绍了如何使用GeoServer发布地
  • Oracle中case when详解

    格式 格式一 case when conditionalExpression 01 then result 01 when conditionalExpression 02 then result 02 when conditionalEx
  • linux下opencv2.4 静态库编译与使用(针对内网主机无法安装opencv情况下使用)

    linux下opencv2 4 静态库编译与使用 针对内网主机无法安装opencv情况下使用 1 如果内网主机无法通过网络安装opencv环境 此时需要使用静态库编译方法生成opencv应用程序 此时需要opencv相关的libxx a 2
  • ElasticSearch IK分词器配置远程词典

    ElasticSearch IK分词器配置远程词典 1 在线安装IK分词器 2 IK分词器的弊端 3 解决措施 配置远程词典实时更新 补充 1 在线安装IK分词器 ElasticSearch中默认的分词器是standard 该分词器对中文按
  • 每日一题:序列操作

    序列操作 题目 Daimayuan Online Judge 没啥思路 如果暴力的话肯定会超时 太难了太难了 参考了题解想了好久才弄懂 该题是思维题 操作1是将第x个数变为y 输入的时候就可以修改值了 毕竟只要一个语句就行 每次操作都是将x
  • seata 1.4.2 执行seata-server.bat报错:Could not create connection to database server.

    seata 1 4 2 执行seata server bat报错 18 40 17 778 ERROR tionPool Create 343563528 com alibaba druid pool DruidDataSource cre
  • 网络整理续

    计算机网络简答题 1 TCP 协议和 UDP 协议的区别有哪些 1 TCP 属于面向连接的协议 UDP 属于面向无连接的协议 2 TCP 可以保证数据可靠 有序的传输 可以进行流量控制 UDP 无法实现 3 TCP 协议有效载荷小于 UDP
  • Linux下20个常用Linux性能监控工具/命令

    此文章不作为商业用途 纯粹的用来学习 20个常用Linux性能监控工具 命令 对于 Linux Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具 这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因
  • vscode实用快捷键查找和替换

    vscode是一款功能十分强大的编辑器 且带有许多插件 利用插件可以让开发速度提升几倍甚至几十倍 vscode快捷键 查找 单文件查找 ctrl F 替换 单文件内替换一处 crtl shift 1 单文件内替换全部 ctrl alt en
  • mybatis-plus中wrapper的用法(详细)

    用到了wrapper ge le ne eq等的用法 及多表查询自写sql整理资料记录一下 以备后续复习 目录 可点击相应目录直接跳转 一 条件构造器关系介绍 条件构造器关系介绍 wapper介绍 二 项目实例 1 根据主键或者简单的查询条
  • 优秀程序员和一般程序员有什么区别?

    优秀程序员和一般程序员有什么区别 为什么有的人一入职就能平步青云 而有的人入职很久却一直在原地打转 程序员的职场进阶之路到底有多少门道 今天 我们邀请到了前Google Top Performer 来Offer的闫老师 给大家分享一下他的职