程序员顶尖和普通就是有5个区别!
转自:http://www.tvtv223.com/so/38/xxxporn/38.html?ref=myread
《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式:
1.勇于去研究你不懂的代码
一般人都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在人们很容易就接触到优秀的开源代码资源,你可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。
除了代码之外,很多人对于陌生的工作内容也会感到恐惧。每次换工作的时候,你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候工作效率没有以前那么高。很多人甚至觉得,他们是不是骗了面试官。
其实,大家都是在学习的过程中。在一个陌生的领域,没有人从一开始就是大神。如果你想变得越来越好,无论是写代码,与人沟通或者其它的技能,都是需要投入时间去学习的。
2.精通代码调试(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.系统性的思考方式
当你在写代码的时候,你很容易就认为只要你按照需求实现了指定的功能,你的代码就写完了。但是这其实只是冰山一角。任何没有发布到生产环境的代码都不会产生任何价值。
如果想写出真正有影响力的代码,你需要从整个系统去理解你的工作:
- 你的代码和其他人写的代码在功能上是什么关系?
- 你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?
- 为了部署你的代码,线上生产环境的代码是不是需要改动?
- 新的代码会不会影响到已经运行的代码?
- 在新的功能下,你的目标用户的行为是不是你期望的?
- 你的代码有没有产生商业上的影响?
这些问题都不是很容易就能回答的,但是在写代码的时候,你需要明白你的代码最后会不会得到最好的结果。
这些只是顶尖程序员的一些基本思维方式,如果你想要更详细的了解在Google,Facebook,Twitter这些公司的顶尖程序员是如何工作的,去关注作者的博客或者他的书吧。
程序员顶尖和普通就是有5个区别!相关推荐
- 某程序员对比美团和阿里的卷文化区别:美团重过程,死抠没用细节;阿里更自由,注重结果!...
互联网圈子里盛传美团的卷文化师从阿里,但青出于蓝而胜于蓝,事实是否如此呢? 一个程序员分析美团和阿里的区别,总结了以下内容: 美团: 1.必开早会,周会,月会,质量总结会 2.周报必须写思考 3.半年 ...
- 一个java程序员看待互联网行业与物联网行业的区别
版权声明:本文为博主原创文章,未经博主允许不得转载 互联网(Internet):又称网际网络,或音译因特网(Internet).英特网,互联网始于1969年美国的阿帕网.是网络与网络之间所串连成的庞大 ...
- 【程序员面试】校招和社招的区别
校招和社招的区别 校招和社招无论是简历的准备,还是面试的考察点都是有不同的侧重点的,所以我们需要了解二者之间的关系,正所谓,知己知彼方可百战百胜. 校招的面试侧重点 学校 (没办法,同等水平还是会看你 ...
- 正高职称 程序员_研究员级高级工程师和高级工程师有什么区别,副研究员与高级工程师有什么差别...
区别 一.含义 1.副研究员是中国科学研究人员高级职务名称: 2.高级工程师是中国专业技术职称工程类中的高级职称(职称改革后称为专业技术职务任职资格). 二.职称系列 1.副研究员的系列职称有实习.助 ...
- 程序员肿么了?为何总被认为是“屌丝”
没有想到会这么多人,有一点我强调一下,我的标题是被认为,而不是说真是.其实程序员相比其他行业不见得差,只是社会整体认可度不高.(或者说认知) 本文纯属闲时娱乐,请勿当真,请勿较真. 1. 程序员都很穷 ...
- Java程序员修炼之路(一)我们为什么选择Java
我们为什么选择Java 大多数人选择Java可能只是因为听说Java前景好.Java比较好找工作.Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么 ...
- 程序员的工资是不是被高估了?
来源 | 开发者技术前线 最近几年,IT 行业流行一句话,要嫁就嫁程序员,为什么呢?钱多.我们从网上的招聘网站,或者一些职场人士的口中知道一些程序员的工资比较高,或者是相对其他行业来说,工资会高一点. ...
- Java程序员修炼之路
作者简介:王成委,CSDN知识库特邀编辑,Java高级工程师,熟悉Java编程语言和Oracle数据库.专注于高并发架构设计和大数据存储方向的研究. 我们为什么选择Java 大多数人选择Java可能只 ...
- 安卓培训价格!半路出家Android程序员看我轻松逆袭!深度好文
前言 程序员,近年来十分火爆的职业,凭着巨大的市场缺口和高额的薪水吸引着大量毕业生加入程序员的队伍.这其中就包括各类专业的学生,像我这种自动化专业的也在其内.这些不是计算机科班出身的可以看作是半路出家 ...
最新文章
- linux里引号注意点
- 智领先机 惠普推出家庭信息中心HIC
- VC++实现任务管理器功能
- 【转】Python 简介
- hutol json null值没了_JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法...
- android ble status,Android BLE peripheral disconnects with status code BLE_HCI_INSTANT_PASSED(0x28)
- 小学计算机学情分析报告,小学信息技术_重点文字图说话教学设计学情分析教材分析课后反思...
- 用户管理实用命令(第二版)
- 12月上旬全球域名总量新增1.8万 环比减少84%
- gridcontrol值为0时设置为空_汇总:MySQL 8.0 运维便捷命令
- 信息技术(计算机基础知识精华版)
- 三菱伺服驱动器示例_三菱MRJB伺服放大器应用实例
- 网络操作系统和分布式操作系统的区别
- android应用图标的尺寸大小,Android APP LOGO尺寸
- React.createClass()方法
- socket.io的使用
- 立创开源 |ESP32-PICO-D4开发板
- 你可能学了假流程图,三步教会你绘制大厂流程图(第一篇)
- java uuid to long_巧借Long类实现自己的UUID生成
- 【调剂】东北石油大学三亚海洋油气研究院油气井工程和石油与天然气工程专业接受调剂...