最近遇到的一些人和事,让我不禁思考起一个问题来:究竟是什么阻止了人们成为优秀的程序员?
思考一番后,我大致得出了如下几点:
- 对编程没有兴趣。
- 没有花大量的时间去学习。
- 不能从学习中得到快感和满足。
- 工作之余很少去写程序,来解决自己遇到的问题。
- 不深入研究自己所用到的技术,方式包括阅读相关书籍、文档和源码,写测试代码等。
- 不去积极尝试新技术。
- 遇到问题浅尝辄止,不去仔细分析问题产生的原因和最好的解决办法,而是花最少的时间绕到自己熟悉的领域去搞定。
- 写出来的代码杂乱,难以维护和扩展。
- 不能设身处地为客户着想,思考需求和功能是否存在不合理或不好用之处,有哪些地方可以改进。
- 不经常尝试自己的创意。
- 看到一个应用或诞生一个想法时,不能条件反射般地立刻想出自己可以如何设计和实现,其中哪些地方自己可以做得更好,哪些是自己暂时还难以解决的。
- 不了解自己所用方案的性能和代价,随意使用低效但方便的方法。
- 不知道自己的时间就是金钱。
- 只会很少的几门语言,特别是不会动态语言。
- 没有真正属于自己的见解。
- 思维跟不上时代。
- 英语糟糕,看不懂英文文档、文章和书籍,听不懂英文讲座和演讲,不能用英文阐述或解答问题。
- 智商不高,逻辑思维能力不强,反应速度较慢。
- 不会分享自己所学的知识,不去帮助解决自己能搞定的问题。
- 一味抱怨他人和推卸责任。
非要总结的话,大致就是态度、性格和能力这三点了。说实话能力是最好培养的,态度是最好办却又最难得的,性格则是最没辙的。
之所以说态度最难得,原因就是很少有人是真正对编程感兴趣的。只要感兴趣,就不会在乎在这上面投入的时间,也就必然会获得更大的收获。
但对大多数的程序员而言,编程只是养家糊口的手段而已。他或许会为了赚更多的钱,而努力成为一个优秀的程序员。可这毕竟不是他的目标,而是一个途径。他有很多条途径达成他的目标,例如向管理方向发展;也有可能一直达成不了目标,而在这条路上偃旗息鼓。不是说他注定成不了,而是比起别人来说,他得做出难以想象的努力。
前面也说了,投入的时间决定了程序员的成就,那么程序员的价值可以通过工作年限来衡量吗?
我想这基本适用于平庸的程序员,但优秀的程序员则完全不同,因为他们只要在这个领域上花3个月的时间,就能超过前者累积的3年经验。
这种差异是如何造成的呢?答案就是投入的时间。一个对编程有兴趣的人,会用更多的心思去研究,弄清楚一切他想弄清的东西;虽然工作看上去很轻松,但他每天用于提升自己的时间可能超过12个小时;而且由于编程是触类旁通的,在其他领域获得的知识也能用于新的领域,因此在他进入这个领域前,他就相当于已经有不少经验了。而若无兴趣的话,所谓的3年经验,其实就是用基本相同的技术,日复一日地做相同的事,然后做得比较熟练了而已;他能做到的顶多就是达到每天工作12个小时,而真正用来让自己成长的时间远少于3个月。
至于性格我也不便多说,也许只有和那些特别有人格魅力的人相处后,才会激励自己去改变。
最后要说的是,扫清这些障碍后,虽然人类不能阻止你成为优秀的程序员了,但你还得经过时间的沉淀,才可能成为卓越甚至伟大的程序员。