源作者:Edmond Lau
来源:程序师

更新整理:极客重生

优秀程序员是稀缺的,你只要问大厂面试官:你们还招人吗,他肯定会说:一直在招人,为什么会一直在招人呢,HC真的有那么多吗?真实情况是,面试者众多,但优秀的程序员却很少,能遇到合适的就更难了,这才是一些岗位一直在招人的原因,宁缺毋滥啊,如何才能让自己变得优秀呢?这个标准到底是什么?今天分享一篇优秀程序员的秘密,可以参考学习一下。

《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式:


1.勇于去研究你不懂的代码

一般人都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在人们很容易就接触到优秀的开源代码资源,你可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。

除了代码之外,很多人对于陌生的工作内容也会感到恐惧。每次换工作的时候,你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候工作效率没有以前那么高。很多人甚至觉得,他们是不是骗了面试官。

其实,大家都是在学习的过程中。在一个陌生的领域,没有人从一开始就是大神。如果你想变得越来越好,无论是写代码,与人沟通或者其它的技能,都是需要投入时间去学习的。

2.精通代码调试(debug)

很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的?  在cxdebug阶段花费时间太多,导致工作效率低下!

几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。这是一个很重要的能力,但是偏偏学校里不教,面试的时候考官也不经常提及。

那么怎么去调试代码呢?其实核心就是以下几个方法:

1、不妨先猜测一下到底发生了什么。

2、假设你的猜测是对的,想想你的猜测会导致程序有什么结果。

3、试着观察这些结果有没有异常的地方。

4、如果你没有发现异样,那么说明你的猜测就是对的。

5、如果你发现了异样,那么说明你的猜测是错的,接下来换一个猜测试试。

对于顶尖程序员来说,这个过程在脑海中就是电光火石的一瞬间。只要你解决的问题足够多,你做出来的猜测就会越准确。

至于如何发现异样?你就需要有一套自己的工具或者方法论了。最简单的就是在代码里输出日志来判断。但是这是比较笨的办法,你需要去接触一些高级的工具或者直接带有Debug功能的编辑器。

如何提高代码质量!这篇文章讲很多工具来辅助提高代码质量,让你debug能力可以自动化起来!

3.重视能够节约时间的工具

打败人类的AlphaGo每天可以进行上百万局的下棋训练,我们人类一万个小时的训练却需要10年之久。也就是说,电脑运行几分钟,可能就等于人类工作好几年。

曾经在Facebook担任技术总监的Bobby Johnson描述过,高效率的程序员都把时间花在制作工具上。

很多人也认为工具是很重要的,但是他们并没有花时间去制作、整合自己的工具。但是,Jonson团队最出色的员工耗费了他们1/3的时间在工具制作上,这些工具可以用来发布代码,监控系统,以及能让他们花更少的时间去做更多事情。

总之,不要花时间去做机器可以代替你去做的事情。

最后最好可以让这些流程自动化起来,这样能减少人为失误,保证代码质量,维持系统稳定,节约大量时间,就可以早点下班了,详细可以参考这篇文章:

不加班的秘密

4.优化你的迭代速度

假设你要花12秒钟去搜索某个函数是在哪里定义的。再假设你每天做这个动作60次,那么你每天就要花12分钟去搜索函数定义。

如果你用一个好一点的编辑器,每次找到函数定义只要2秒钟,那么你每天就会节约10分钟。每年你就可以节约40个小时。

如果你能找到3个这样的场景去优化一下,那么你每年可以节约一个月的时间。想想这一个月你可以做多少有意义的事情。

再假如你在调试一个App的bug的时候,改完一次代码都需要重启一下App,然后点击4、5次才能看到bug有没有改好。那么你是不是可以先花几分钟设置以下,让App一启动就转到显示Bug的页面呢?

千万不要小看这些琐碎的细节,改善它们的回报是巨大。

5.系统性的思考方式

当你在写代码的时候,你很容易就认为只要你按照需求实现了指定的功能,你的代码就写完了。但是这其实只是冰山一角。任何没有发布到生产环境的代码都不会产生任何价值。

如果想写出真正有影响力的代码,你需要从整个系统去理解你的工作:

1、你的代码和其他人写的代码在功能上是什么关系?

2、你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?

3、为了部署你的代码,线上生产环境的代码是不是需要改动?

4、新的代码会不会影响到已经运行的代码?

5、在新的功能下,你的目标用户的行为是不是你期望的?

6、你的代码有没有产生商业上的影响?

这些问题都不是很容易就能回答的,但是在写代码的时候,你需要明白你的代码最后会不会得到最好的结果。可以参考下面这篇文章:

如何成为一名大厂的优秀员工?

这些只是顶尖程序员的一些基本思维方式,如果你想要更详细的了解在Google,Facebook,Twitter这些公司的顶尖程序员是如何工作的,去关注作者的博客或者他的书吧。

最后,希望大家多学习,多思考,让自己变得更优秀!

- END -


看完一键三连在看转发,点赞

是对文章最大的赞赏,极客重生感谢你

推荐阅读

如何成为技术大神

后端技术趋势指南|如何选择自己的技术方向

如何成为一名大厂的优秀员工?

不加班的秘密

优秀程序员的秘密|宝贵经验分享相关推荐

  1. 在职场,光有技术是不行的,18年老程序员职场宝贵经验分享

    程序员是公认的技术型岗位,我们喜欢用实力说话,那么是否技术实力强就能在职场如鱼得水? 以前我觉得只要技术过硬,在哪都是香饽饽,后来发现也不尽然,公司不是研究所,在研究所里你或许可以不管不顾地只追求技术 ...

  2. 程序员转型产品经理经验分享

    这是我见过最好的一个分享,不算是公司招聘还是应聘都值得每个人看一看,想一想 程序员转型产品经理经验分享 本文作者是 Google 集团产品经理Ken Norton ,他由技术转产品,在创业公司和大公司 ...

  3. 转载CSDN - 从程序员到HR——面试经验分享

    CSDN博客一周热文推荐,为您总结回顾过去一周的CSDN博客热门文章,推荐优质的博客作者,分享精华文章和优质博客. [1] 谭海燕:北漂之惠普H3C面试经历 上一篇讲到了<北漂之百度面试> ...

  4. 程序员爱情+10年经验分享

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告  走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的 ...

  5. 资深程序员面试的五大经验分享,顺利走向人生巅峰

    一.为什么入职这么难? 入职比较难的原因一般有三个: 简历通不过筛选: 不知道面试官问什么: 不知道如何提升自己的技能. 以下我们会逐步对上面三个问题进行回答. 二.如何写简历 简历写的不好,就意味着 ...

  6. 程序员之路-学习经验总结分享

    程序员这个行业,日新月异,技术体系更新速度快,新技术新框架层出不穷,所有的技术都像是一个无底洞,当你学得越多就会发现不懂的越多,不懂的越多,需要学习的就更多. 因此,一旦选择了这个行业,就意味着你必须 ...

  7. 优秀程序员都会关注的公众号

    程序员的价值绝对不在于技术本身,而在于做出好用且好看程序的能力. 程序员常有,优秀程序员不常有. 成为优秀的程序员是极其困难的,并且这个过程不可能一蹴而就. 你是不是也立志做一名优秀的程序员呢? 据说 ...

  8. 【译】成为优秀程序员(和人类)的101个技巧

    1.擅长谷歌搜索 作为一个编码者,意味着你需要搜索你问题的答案.通过有效地使用谷歌,你将节省很多开发时间. 2.承诺和交付 最好让你的团队知道一项任务将花费三周的时间,并以两种方式交付的事情.通过给予 ...

  9. 纯干货:优秀程序员和普通程序员的差距就在这7个关键点

    最近好几个读者问:如何成为牛逼的程序员?编码能力如何成长.回答完后,有些心得也给大家分享下. 其实程序员最关键的技能远不止编码能力,架构思维.底层知识的深度等等,同样很重要. 程序员这个行业,是一个区 ...

最新文章

  1. 四月青少年编程组队学习(Python一级)Task01
  2. Kotlin一大特色之空安全
  3. flask 使用cache时 报错 No module named 'flask.ext'
  4. QMQ顺序消息设计与实现
  5. Camel 组件之 Timer
  6. java 使用string_java中string怎么使用
  7. win10计算机更新后网络卡,win10电脑更新完卡死 win10电脑更新完卡死解决办法
  8. 在 Coding 上搭建 Hexo 个人博客!
  9. 小程序api 分享scene_抛弃微信小程序API的嵌套回调吧!
  10. 四个措施打造安全的DevOps流程
  11. re2020 bt2020_2020年最好的4个在线学习平台
  12. Java随机生成名字大全 手机号
  13. python area函数,python3 函数
  14. 笔记本重启一直进bios
  15. VM 虚拟机查看ip地址
  16. xubuntu16.04修改开关机动画
  17. 【天猫】双十一活动策划书;保守估计500万销售额,货值表
  18. 数据通信与网络:CH10 Error Detection and Correction
  19. 008年杀毒软件排行榜以及排行对比图
  20. 网易邮箱大师桌面版显示“服务器连接失败,请稍后重试”的一个解决办法

热门文章

  1. ORACLE 表类型 OLTP和OLAP
  2. java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
  3. CSS实现【表格内容超过一行的部分,用省略号代替】
  4. 五周第四次课(4月23日)
  5. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
  6. js 预编译 解释执行 作用域链 闭包
  7. 数据库索引的实现原理及查询优化
  8. 友盟开放日: 通过 App 内社区提高留存率的 6 个技巧
  9. C++虚函数与虚函数表
  10. 对于***win2000 精彩过程实例!不可错过_出自:痞菜