《THe Effective Engineer》的作者Edmond
Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式。
看看你是否具备?

勇于去研究你不懂的代码

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

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

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

精通代码调试(debug)

很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的? 几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。

这是一个很重要的能力,但是偏偏学校里不教,面试的时候考官也不经常提及。

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

  • 不妨先猜测一下到底发生了什么。假设你的猜测是对的,想想你的猜测会导致程序有什么结果。
  • 试着观察这些结果有没有异常的地方。如果你没有发现异样,那么说明你的猜测就是对的。如果你发现了异样,那么说明你的猜测是错的,接下来换一个猜测试试。

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

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

重视能够节约时间的工具

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

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

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

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

优化你的迭代速度

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

如果你用一个好一点的编辑器,每次找到函数定义只要2秒钟,那么你每天就会节约10分钟。每年你就可以节约40个小时。如果你能找到3个这样的场景去优化一下,那么你每年可以节约一个月的时间。

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

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

系统性的思考方式

当你在写代码的时候,你很容易就认为只要你按照需求实现了指定的功能,你的代码就写完了。但是这其实只是冰山一角。

任何没有发布到生产环境的代码都不会产生任何价值。

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

  • 你的代码和其他人写的代码在功能上是什么关系?
  • 你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?
  • 为了部署你的代码,线上生产环境的代码是不是需要改动?
  • 新的代码会不会影响到已经运行的代码?
  • 在新的功能下,你的目标用户的行为是不是你期望的?
  • 你的代码有没有产生商业上的影响?

这些问题都不是很容易就能回答的,但是在写代码的时候,你需要明白你的代码最后会不会得到最好的结果。

以上是顶尖程序员的一些基本思维方式,哪些是你具备并应用的?哪些是你想到而没有做到的?

顶尖程序员的五种思维模式,你具备吗?相关推荐

  1. 顶尖程序员的五种思维模式,值得学习

    <THe Effective Engineer>的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师.他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式. ...

  2. 顶尖程序员不同于常人的 5 个区别

    2019独角兽企业重金招聘Python工程师标准>>> <The Effective Engineer>的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采 ...

  3. 全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复“顶尖程序员”下载PDF资料)

    全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复"顶尖程序员"下载PDF资料) 原创: 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读:全球最厉害最有 ...

  4. 一个平凡程序员的五年感悟:没有足够的付出,就没有热爱

    本来是想写<一个失败程序员的五年感悟>,后来想了想,不管过去如何,不应该再去评断.既然已经客观存在,自己也能够意识到问题所在,在接下来的时间里去改.去努力就好了.不应该轻易地给自己打上失败 ...

  5. 怎么锻炼出顶尖程序员的编码套路(转)

    个人比较欣赏的一篇文章,值得细细品味. 以下内容为转载,修改了部分标点符号及文字等(原谅我看到有些内容时有些洁癖),链接在文章末尾. 怎么锻炼出顶尖程序员的编码套路 我每天都开车去上班,但我的驾驶水平 ...

  6. 成为优秀程序员的8种方法

    成为优秀程序员的8种方法 是时候认真对待如何提高你的编程技能了.让我们开始吧! "成为一个牛逼的程序员"是一个看似很容易实现的职业生涯改进目标,但其实这并非是一个简单的目标.一方面 ...

  7. 千万程序员都说完美,成为Java顶尖程序员 ,看这11本书就够了

    成为Java顶尖程序员 ,看这11本书就够了 如下是我推荐给Java开发者们的一些值得一看的好书.可是这些书里面并无Java基础.Java教程之类的书,不是我不推荐,而是离我本身学习 Java基础技术 ...

  8. 顶尖程序员不同于常人的5个区别

    顶尖程序员不同于常人的5个区别: 原文作者:Edmond Lau <THe Effective Engineer>:https://www.theeffectiveengineer.com ...

  9. 转贴:程序员的七种武器

    程序员的七种武器       信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落.程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程 ...

最新文章

  1. SAP QM Multiple Specifications的使用 I
  2. 如何从网页上下载Flash?
  3. 架构师之路 — 数据库设计 — 关系型数据库理论
  4. csdn博客如何更改图片大小
  5. 秀啊,用Python快速开发在线数据库更新修改工具
  6. 【NOIP2016PJ】【Luogu2058】海港
  7. jqGrid细节备注—pager文字的设置,更改默认的提交方式
  8. mysql 取交集 php_mysql 查询结果取交集的方法
  9. 线性代数拾遗(四):线性方程组的应用
  10. sql删除语句_推荐强大开源的数据库SQL语句审核平台,再也不用担心删除跑路了!...
  11. php面向对象精要(3)
  12. 爽爆!阿里腾讯都在传的MySQL精华手册,GitHub标星89K
  13. 【数据分析】豆瓣电影Top250爬取的数据的可视化分析
  14. M27C64A引脚说明
  15. 【Nginx之轨迹】Nginx + Lua 实现 waf Web 应用防火墙(解决 nignx 加载失败问题:LuaJIT version which is not OpenResty‘s)
  16. 合力亿捷云客服3.0 开启“全员客服”新时代
  17. 运算放大器(运放)介绍
  18. 建模新手使用Maya的xGen功能后,角色毛发顺滑堪比使用海飞丝!
  19. 攻防世界MISC高手区Avatar
  20. STM32之震动传感器、继电器介绍及实战

热门文章

  1. 6. STM32——用串口发送数据点亮LED(串口的中断接收)
  2. Mongodb出现Error: couldn‘t add user: Could not find role: root@database 解决方法
  3. Get请求特殊符号被转义
  4. matlab元胞自动机学风演化,利用MATLAB和VC60混合编程技术研究元胞自动机动态演化过程...
  5. HotSpot VM GC收集器的易混淆的名称问题
  6. 使用Dialogflow API构建Slack智能聊天机器人的指南
  7. 季氏将伐颛臾---孔子
  8. 用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台
  9. 华清远见-重庆中心-VSS前端阶段知识点梳理
  10. m2014-c-c模拟java的hashmap容器类