如何成为优秀的程序员

标签: 程序员 | 发表时间:2011-08-25 19:51 | 作者:keakon iBeyond
出处:http://www.keakon.net/
最近遇到的一些人和事,让我不禁思考起一个问题来:究竟是什么阻止了人们成为优秀的程序员?

思考一番后,我大致得出了如下几点:
  1. 对编程没有兴趣。
  2. 没有花大量的时间去学习。
  3. 不能从学习中得到快感和满足。
  4. 工作之余很少去写程序,来解决自己遇到的问题。
  5. 不深入研究自己所用到的技术,方式包括阅读相关书籍、文档和源码,写测试代码等。
  6. 不去积极尝试新技术。
  7. 遇到问题浅尝辄止,不去仔细分析问题产生的原因和最好的解决办法,而是花最少的时间绕到自己熟悉的领域去搞定。
  8. 写出来的代码杂乱,难以维护和扩展。
  9. 不能设身处地为客户着想,思考需求和功能是否存在不合理或不好用之处,有哪些地方可以改进。
  10. 不经常尝试自己的创意。
  11. 看到一个应用或诞生一个想法时,不能条件反射般地立刻想出自己可以如何设计和实现,其中哪些地方自己可以做得更好,哪些是自己暂时还难以解决的。
  12. 不了解自己所用方案的性能和代价,随意使用低效但方便的方法。
  13. 不知道自己的时间就是金钱。
  14. 只会很少的几门语言,特别是不会动态语言。
  15. 没有真正属于自己的见解。
  16. 思维跟不上时代。
  17. 英语糟糕,看不懂英文文档、文章和书籍,听不懂英文讲座和演讲,不能用英文阐述或解答问题。
  18. 智商不高,逻辑思维能力不强,反应速度较慢。
  19. 不会分享自己所学的知识,不去帮助解决自己能搞定的问题。
  20. 一味抱怨他人和推卸责任。

非要总结的话,大致就是态度、性格和能力这三点了。说实话能力是最好培养的,态度是最好办却又最难得的,性格则是最没辙的。

之所以说态度最难得,原因就是很少有人是真正对编程感兴趣的。只要感兴趣,就不会在乎在这上面投入的时间,也就必然会获得更大的收获。
但对大多数的程序员而言,编程只是养家糊口的手段而已。他或许会为了赚更多的钱,而努力成为一个优秀的程序员。可这毕竟不是他的目标,而是一个途径。他有很多条途径达成他的目标,例如向管理方向发展;也有可能一直达成不了目标,而在这条路上偃旗息鼓。不是说他注定成不了,而是比起别人来说,他得做出难以想象的努力。

前面也说了,投入的时间决定了程序员的成就,那么程序员的价值可以通过工作年限来衡量吗?
我想这基本适用于平庸的程序员,但优秀的程序员则完全不同,因为他们只要在这个领域上花3个月的时间,就能超过前者累积的3年经验。
这种差异是如何造成的呢?答案就是投入的时间。一个对编程有兴趣的人,会用更多的心思去研究,弄清楚一切他想弄清的东西;虽然工作看上去很轻松,但他每天用于提升自己的时间可能超过12个小时;而且由于编程是触类旁通的,在其他领域获得的知识也能用于新的领域,因此在他进入这个领域前,他就相当于已经有不少经验了。而若无兴趣的话,所谓的3年经验,其实就是用基本相同的技术,日复一日地做相同的事,然后做得比较熟练了而已;他能做到的顶多就是达到每天工作12个小时,而真正用来让自己成长的时间远少于3个月。

至于性格我也不便多说,也许只有和那些特别有人格魅力的人相处后,才会激励自己去改变。

最后要说的是,扫清这些障碍后,虽然人类不能阻止你成为优秀的程序员了,但你还得经过时间的沉淀,才可能成为卓越甚至伟大的程序员。

相关 [程序员] 推荐:

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

如何面试程序员?

- bluesnail - 阮一峰的网络日志
你要面试一个程序员,应该问他什么问题. 有人在Hacker News的讨论区里,请求指点,怎么才能在面试中发现合格的人. 众人纷纷出主意,有很多高质量的回帖,我觉得挺有启发,就整理出了下面这篇文章. 首先,最重要的是,你自己一开始就应该想清楚:. 哪些途径和方法可以发现这样的人. 只有明确这些根本性的问题,才能正确高效地完成面试.

程序员的本质

- Allen - 译言-电脑/网络/数码科技
来源What do programmers really do?.   很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员. 另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题. 甚至不少程序员对他们是做什么的都没有清晰的概念.   在这篇文章中,我想给不知情的人解释一下程序员到底是做什么的:.

程序员人生之路

- myartings - 博客园-首页原创精华区
   程序员人生之路(强烈推荐,分析的透彻. ),某程序达人的人生感悟,估计没有半个甲子的时间,是绝对不可能感悟出来的.    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心. 在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人.

程序员装B指南

- Qing-Run - 博客园-首页原创精华区
1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好. 一个用来查资料,一个用来写代码. 总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善. 沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子.

程序员收入报告

- diaoxsh - cnBeta.COM
最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告. 数据显示,上月是目前为止他收入最多的一个月. Chris的收入并不是指他的工资或薪水,Chris是一个自由职业者. 他的收入也不是来自个人承包软件工程的收入,他更像是一个果农,种了优良的果树,只要不断的给这些果树施肥浇水,这些果树会给他带来源源不断的财富.

程序员的利器-SourceInsight

- Alex - 博客园-首页原创精华区
作为程序员,大部分时间是在已有的代码上代码工作. 要对已有的代码进行调整,首先就要搞清楚当前代码中蕴含的逻辑关系. 所以常常有程序员调侃说花了大半天时间看代码,最后写代码的时间只有几分钟. 所以,对已有代码的分析质量将影响(甚至会决定)最终代码修改的质量. SourceInsight在代码分析上给予程序员极大的帮助.

程序员?还是小丑?

- Vingel - cnBeta.COM
和你从不认识的人坐在一起,试图弄清楚他是个程序员还是个小丑. 我没有想侮辱任何人的意思,而且,我是第一个要感谢这么多年的教育和努力终于把我变成一个专业小丑的人. 对于程序员新手,我充满怜悯,为了和缓的帮他热热身,我给了他一道温和的问题来消解我们之间的陌生. 我让Ada写一段程序,在纸上,打印出“hello“这个词10次.

程序员必读经典

- - 搜索引擎技术博客
你面试微软前必须要读的十本书:. Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》). Computer System: A Programmer’s Perspective (《深入理解计算机系统》) /Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》.