【51CTO.com快译】
首先我们要知道,在程序员这个职业中,究竟是天赋重要还是兴趣和努力重要?
而我的回答是,说天赋重要的人,只是在为自己不如别人刻苦而找出的借口。我最近也读了很多有关如何提升自我水平的文章,大部分文章以K. Anders Ericsson的研究结论为出发点的文章,也就是说天才的成就,虽然和他的天赋有一定的关系,但心理学家越是深入考察天才们的人生经历,就会发现天赋到了后期它的作用会越来越小,而后天储备的作用却越来越明显。
我发现大多数人提升的编程水平,所推荐的方法是一些很基础的事情。如,阅读代码、理解代码、编写代码、参加项目、讨论代码等等……当然,这些作法确实能够帮助程序员提升水平,但其实际效果显然是非常小的。
下面我会结合自己学习编程的经历,跟大家聊聊其中的优势与弊端:
1.通过编程竞赛进行实践
我会参加各类编程竞赛,总体来讲,用比赛来学习新语言并不现实。它提供的反馈循环较弱——我们只能了解到自己的程序能否正确输出,但设计流程不会受到评判。这种方法只能帮助大家了解新的算法或者特性,但在实践层面来讲,效果偏弱,它更着重“表现”而非“实践”。
2阅读关于编程的书籍
阅读相关书籍能够帮助我们快速提升知识储备,因此有关“水平提升”方案都会有这项要求。在这里给大家推荐5本非常棒的编程图书,这些精华图书都实实在在地给了我极大的帮助。它们值得反复阅读,且每次都能让我在软件工程方面获得更为深入、更具穿透力的见识。如果你还没读过这些书,那你还在等什么呢?
这5本书是:
-
《代码大全(第二版)》
-
《点石成金:访客至上的网页设计秘笈》(即《Don't Make Me Think》)
-
《人件》
-
《程序员修炼之道:从小工到专家》
-
《软件工程的事实与谬误》
3.学习快速搜索技术、手段
作为一名好的程序员,不仅仅是技能的问题了,而你寻找信息的技巧也非常重要,而这个趋势会越来越明显。你应该学会,如何接近特定的搜索,以及了解自己实际上想查些什么,信息筛选可以通过组建思维知识图谱来提升。***搜索多了,经验上去了,就知道一些高质量的网站和一些通常的说明文档位置,使得你的问题的求解更加容易,包括像应该使用哪种搜索引擎(提示:普通的搜索引擎不一定就是***选择),使用普通搜索引擎前应该访问哪个网站,甚至是应该到哪个论坛去寻求帮助,等等。
4.帮助别人
如果可能的话,帮助那些寻求帮助的人。这是一件很好的事情,也是聪明人的做法。教别人始终是学习一切东西的***方法之一。记住,你所学到的一切都是你从别人或别处学到的;因此请尝试一下,每天尽量花一点时间试着回答网站上的问题,其他网站的也可以。就算读读其他人的回答,你也可以学到很多东西。
5.多编码才是王道
研究表明,要成为一名“专家”,这至少需要花费10年的时间,或者10000到20000小时的刻意练习的时间,做几年程序员是不够的。
想在30岁左右成为一名高级软件开发工程师?要么尽早接受教育/培训,要么你得愿意在闲暇时间进行大量的工作、阅读和练习。我从高中开始编程,还牺牲了许多休息时间去跟踪行业发展、学习新技能等等。结果,我获得中级和高级程序员的时间就比我的大部分同事都要早得多,随着时间的推移,这些就转化成为宝贵的经验。
6.看看高级程序员的代码
在工作中看看高级程序员写的代码,然后问一问他们为什么以某种特别的方式来完成这个项目,也可以学习他好的编程习惯,从中得到反思。但值得注意的是不要生搬硬套别人的东西;你要能领会到哪些是能行的通的,哪些是有道理的,然后再模仿人家,并不断摸索适合自己的语言。
7.态度是关键
如果你不喜欢自己的工作,且目前的水平还是初级,那么如何成为中级的水平或者让情况有所好转,不妨换工作或改职业吧。反过来说,如果你喜爱所从事的工作,那就好!少一些浮躁,沉下心来体会技术的真正精髓,踏踏实实的做,最终会有一个好的归宿。只要你坚持下去,我保证你能成为一名更好的程序员。
每个人都有自己成长的方式,以上建议仅作参考,祝你能够早日找到一条属于自己的光明大道!
原文链接:http://ericdykstra.me/blog/improving-as-an-intermediate-programmer
原文标题:How Does One Improve as an Intermediate Programmer?
原文作者:Eric Dykstra
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】