杰出的程序员与平庸的程序员之间差距只有以下6个点,而人与人之间的差距,正是在这日积月累的细节中,被永远拉开了。有意思的是,这6个点都和意识有关,也就是程序员和其他一切新兴产业的工种一样,只需要意识加上时间的锤炼,人人皆可达到理想的阶段。杰出的程序员必然也是一个优秀的problem-solver。
1.专注眼下
见过太多心猿意马的程序员,我不得不把“专注眼下”作为天字第一条。他们往往有各式各样的小梦想,比如做个小商人、做个小摊贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力“耽误”了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。
不可否认,这世界上存在着伟大的产品、伟大的销售、伟大的投资客,而他们毫无例外都是程序员出身。可你听说过巴菲特评价比尔盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。
2.思考力与推动力
我认为处理Bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与杰出程序员的差距。当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜测与实验,都是体现程序员思考力的最好场景。是的,在衡量杰出程序员的标准上,思考力比经验更加重要。
有时候小伙伴跑过来,问我:“提交了一个任务被卡住了,怎么办”的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务,以排除代码自身的原因;可以通过Web UI检查异常;可以排查主机日志或删除缓存等。杰出的程序员永远不会等事情前进,他们会用尽一切方法让事情前进。
3.Never Say No
一句“技术上无法实现”“做不到”是容易出口,可有多少人在说出这句话的时候,心里是100%肯定的?如果不肯定,为什么不能回去谷歌一下再回答?原本我以为程序员是充满想象力,才能诞生那么多改变我们生活的软件和互联网产品。见识多了,才了解大部分程序员已经在与 Bug的对抗中变得保守而不愿担当风险,与此同时许多团队也不愿意宽容失败。
于是“Say No”变成一种习惯性的抵触,还记得曾国藩为什么解散湘军么?他说那支军队已“暮气渐深”,不能打仗了。要做杰出的程序员,就不能给自己滋生暮气的机会,如果面对不合理的需求,可以把时间成本摆出来,把曲线救国方案亮出来,简单粗暴“Say No”是不可取的。
4.投资未来
程序员是一个非常残忍的职业。你所学所用的语言、框架、模式,很可能在数年内就成昨日黄花了;你现在嘲笑的另一群程序员,可能马上就能转身来嘲笑你了。所以杰出的程序员除了做好自己的本分,还要花费时间来投资未来。
什么是“投资”?投资就是你现在投入的时间,在未来会以更多的时间或者金钱(看看早几年学习iOS的程序员现在的薪酬)回报你。
5.善用工具
善用工具可以分为4个层面:
搜索引擎
程序员的成长就像膨胀的圆饼,外面是无边无际的大海,圆饼越大,与大海接触的面也越大,懂的越多,不懂的越多,而计算机科学又是一门更新换代异常迅速的学科,同时也是知识互联网化最好的学科,很难利用传统的科班式有教有学的方法,相反通过搜索引擎则很容易获取到最新的知识。
不相信重复
大师的话叫DRY原则(Don’t repeat yourself),代码写多了,会有人为的直觉判断好的和烂的代码,我的标准是简洁和规范,简洁并不是美感上的标准,重复越少,给自己出错的机会也越少,后期维护的成本也越少。
代码片段
如果你不幸丢了三周前的代码,也许你能凭着过人的记忆力把脑子里残余的片段复写出来,但如果丢的是三个月前的代码,恐怕就没有那么好的运气了。杰出的程序员会着力找寻有效的资料保存方式,把工作里灵光闪现写下的代码、脚本、配置、经验等短的片段保存起来,以便任何时候都能复查。
自动化
杰出的程序员必须懒惰。对他们来说,重复的步骤和重复的代码一样丑陋,如果意识到一项工作有可能长期要重复,那么自动化的时间总是越早越好。
6.管理时间
之所以管理时间会对程序员这个行当特别重要,是因为在完成任务时你必须像荒野里的狼一样“独行”。没有外界约束的情况下还能稳定控制自己,保证能高效率地工作和学习,那么日积月累你肯定会变得比一般人厉害。
程序员干的是高强度的脑力活,一般每天集中4-5个小时应对本职工作就足够了,但工作之外,一定要安排时间用于学习。除了学习,留点时间放空自己也是必要的,利用泡茶或者喝咖啡的间隙,把弥足珍贵的时间留给自己,往前想往后想,事半功倍。
说了这么多,想必有人会问,费劲心思成为一个杰出的程序员,又有什么用处,会有高薪吗?能升职吗?答案不是必然,但一定掌握在你自己手中。我只知道,选择厦门触控未来职业技术培训,会让你离升职高薪更进一步。