此文方式: 转载
作者: 简书昵称: 易懂程序猿
链接: 简书链接: https://www.jianshu.com/p/998551d9d051
欢迎大家热爱简书, 把最好的文章献简书: 官方专题 1 程序员 官方专题 2 上班这点事儿
我是 Camel 我挖掘一些钻少但文章写的好作者推荐给大家, 跟大家分享
如果不同意分享及转载的作者请及时联系我, 小编马上删除并尊重作者 谢谢!!
在 IT 行业飞速发展的时代, 有过的程序员, 有些成为程序员心中的大神, 那么那些成为大神的程序员们是因为什么成为大神的呢? 今天小编就和大家说说, 希望那些想要进入程序员界的小白或者刚学编程的伙伴们认真看看.
image
在《The Effective Engineer》的作者在写书的过程中, 为了了解那些顶级程序员和普通程序员的区别, 采访了很多硅谷顶级科技公司的顶尖软件工程师. 他发现这些给世界带来巨大影响的的工程师们至少有以下 5 个共同的思维模式:
1. 精通代码调试 (debug)
很多人在写代码的过程中, 经常会有的一个问题就是: 为什么我写出来的代码不能运行? 为什么运行的结果不是我想要的?
几乎所有的程序员写代码都不是一遍就能写好的. 但是顶尖的程序员非常快的就明白自己代码的问题可能是什么. 这是一个很重要的能力, 但是偏偏学校里不教, 面试的时候考官也不经常提及.
那么怎么去调试代码呢? 其实核心就是以下几个方法:
1, 不妨先猜测一下到底发生了什么. 2, 假设你的猜测是对的, 想想你的猜测会导致程序有什么结果. 3, 试着观察这些结果有没有异常的地方. 4, 如果你没有发现异样, 那么说明你的猜测就是对的. 5, 如果你发现了异样, 那么说明你的猜测是错的, 接下来换一个猜测试试.
对于顶尖程序员来说, 这个过程在脑海中就是电光火石的一瞬间. 只要你解决的问题足够多, 你做出来的猜测就会越准确.
至于如何发现异样? 你就需要有一套自己的工具或者方法论了. 最简单的就是在代码里输出日志来判断. 但是这是比较笨的办法, 你需要去接触一些高级的工具或者直接带有 Debug 功能的编辑器.
image
2. 优化你的迭代速度
假设你要花 12 秒钟去搜索某个函数是在哪里定义的. 再假设你每天做这个动作 60 次, 那么你每天就要花 12 分钟去搜索函数定义.
如果你用一个好一点的编辑器, 每次找到函数定义只要 2 秒钟, 那么你每天就会节约 10 分钟. 每年你就可以节约 40 个小时.
如果你能找到 3 个这样的场景去优化一下, 那么你每年可以节约一个月的时间. 想想这一个月你可以做多少有意义的事情.
再假如你在调试一个 App 的 bug 的时候, 改完一次代码都需要重启一下 App, 然后点击 4,5 次才能看到 bug 有没有改好. 那么你是不是可以先花几分钟设置以下, 让 App 一启动就转到显示 Bug 的页面呢?
千万不要小看这些琐碎的细节, 改善它们的回报是巨大.
image
3. 系统性的思考方式
当你在写代码的时候, 你很容易就认为只要你按照需求实现了指定的功能, 你的代码就写完了. 但是这其实只是冰山一角. 任何没有发布到生产环境的代码都不会产生任何价值.
如果想写出真正有影响力的代码, 你需要从整个系统去理解你的工作:
1, 你的代码和其他人写的代码在功能上是什么关系? 2, 你有没有好好测试你的代码? 或者其他人是否很容易测试你的代码? 3, 为了部署你的代码, 线上生产环境的代码是不是需要改动? 4, 新的代码会不会影响到已经运行的代码? 5, 在新的功能下, 你的目标用户的行为是不是你期望的? 6, 你的代码有没有产生商业上的影响?
这些问题都不是很容易就能回答的, 但是在写代码的时候, 你需要明白你的代码最后会不会得到最好的结果.
4. 重视能够节约时间的工具
最近打败人类的 AlphaGo 每天可以进行上百万局的下棋训练, 我们人类一万个小时的训练却需要 10 年之久. 也就是说, 电脑运行几分钟, 可能就等于人类工作好几年.
曾经在 Facebook 担任技术总监的 Bobby Johnson 描述过, 高效率的程序员都把时间花在制作工具上.
很多人也认为工具是很重要的, 但是他们并没有花时间去制作, 整合自己的工具. 但是, Jonson 团队最出色的员工耗费了他们 1/3 的时间在工具制作上, 这些工具可以用来发布代码, 监控系统, 以及能让他们花更少的时间去做更多事情.
总之, 不要花时间去做机器可以代替你去做的事情.
image
5. 勇于去研究你不懂的代码
一般人都不愿意去研究自己不曾接触过的代码, 很多人都没有尝试就放弃了. 如果你经常去研究你没有接触过的代码, 你就会越来越熟悉不同的代码结构和设计模式. 现在人们很容易就接触到优秀的开源代码资源, 你可以很方便的就下载下来做一些改动或者调试, 去研究为什么代码可以这么写.
除了代码之外, 很多人对于陌生的工作内容也会感到恐惧. 每次换工作的时候, 你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况, 以至于刚开始的时候工作效率没有以前那么高. 很多人甚至觉得, 他们是不是骗了面试官.
其实, 大家都是在学习的过程中. 在一个陌生的领域, 没有人从一开始就是大神. 如果你想变得越来越好, 无论是写代码, 与人沟通或者其它的技能, 都是需要投入时间去学习的.
来源: http://www.jianshu.com/p/5f491445da7e