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

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

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

今天,我们邀请到了前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”

优秀程序员和一般程序员有什么区别?相关推荐

  1. 优秀程序员和一般程序员差别在哪?

    摘要:在这个世界上有两种程序员:Day Programmers(白班程序员)和Night Programmers(夜猫子程序员),你知道优秀程序员和一般程序员有哪些差别吗?你又是哪一类型的呢?俗话说不 ...

  2. 从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考”...

    从测试的角度来重新反思我们自己的程序以及我们的程序员之路--"通过追本溯源来进行前瞻性思考" 最近比较忙,而且情绪上有些浮动,但控制的非常好.这几天协会搞一个编程比赛,部分的题目是 ...

  3. 低级程序员和高级程序员的区别在哪?学会像高级程序员一样思考!

    低级程序员认为自己与高级程序员的区别:高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看 ...

  4. 程序员实用小程序_我从阅读《实用程序员》中学到了什么

    程序员实用小程序 In short: old but gold. 简而言之:古老而又黄金. Published in 1999, The Pragmatic Programmer is a book ...

  5. 大公司程序员 VS 小公司程序员 | 差别在哪?

    很多大学生毕业之后,都希望能进互联网大厂,但是大厂并没有那么好进,不说别的有的学历就会把你卡在门外.但是大厂有大厂的优势,小公司有小公司的优势.根据自己的需求选择自己合适的公司,才是最重要的. 大公司 ...

  6. 程序猿永远就是程序员的命么?

    程序猿永远就是程序员的命么?不管是不是,我始终抱着一颗上进的心,今天跟大家分享一段牛人的对话节目,如果你喜欢就的来看看,希望能学到点什么. 3 月 30 日电在美国硅谷,有一个 Paypal 黑帮,成 ...

  7. 如何做一个高效率的程序员,对程序员也是很重要。。

    如何做一个高效率的人,对一个人的成功很重要,如何做一个高效率的程序员,对程序员也是很重要.大家好,我是:OpenEIM,下面与大家交流一些经验. 这是一则笑话.Shlemiel是一位油漆工,他找了一份 ...

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

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

  9. 中国程序员和外国程序员

    作者:金戈大王 别被标题误导,我可没有说中国程序员不如外国程序员. 听说世界一流程序员都上一个论坛,叫stackoverflow,那天闲来无事,索性上去看看.不得了,发现一个热门问题 stackove ...

最新文章

  1. php jquery教程下载,jquery怎么下载和引用
  2. 智源青年科学家黄高:面向高效推理的深度网络结构设计
  3. Java集合源码学习(五)几种常用集合类的比较
  4. 网络功能虚拟化(NFV)的作用—Vecloud微云
  5. 直播预告 | TCCI追问研讨会第二期:双向脑机接口如何实现?
  6. MySQL(三)MySQL索引原理
  7. 【数据结构算法】图解prime算法和Kruskal算法(最短路径问题)
  8. 最新前端中高级面试题
  9. jquery扩展提示框
  10. 基于模拟退火算法解决TSP问题 | MATLAB源码
  11. 压力测试 JMeter 使用教程(三分钟拿下)
  12. matlab求hurst,请问如何用MATLAB计算大盘的HURST
  13. 10个免费的在线Markdown编辑器
  14. 疯狂管道鸟--纯JS小游戏
  15. 详细介绍借助Docker Hub访问gcr.io镜像
  16. docker部署环境
  17. 图像处理---亚像素
  18. 【算法】算法学习网站
  19. 信息安全精彩视频分享-一张纸入侵企业号星舰
  20. linux下的mkfifo 命令

热门文章

  1. 豆瓣电影R语言爬虫和数据分析.
  2. svn: E170001
  3. 为系统添加预装软件--雨滴应用商店APP
  4. Unreal中Interface接口的使用
  5. 区块链焦虑症:用卖肉包的理论分析你是不是一定要上区块链的车
  6. 前端水平垂直居中的方法
  7. 【博文】:甲骨文收购AMD的缘由
  8. 能长期做到以下32点的程序员,达到月薪30K往上,不太难:
  9. SAP中带用内部订单控制的成本中心发料的成本对象确定
  10. 51单片机定时器初值计算