【IT168 评论】在一封与TechRepublic会员交流的邮件当中,提到了面向程序员的博客、文章及杂志分成两类:面向初学者类以及面向专家类。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。
1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的 语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验 的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再 去查阅参考材料也不迟。只有第三项,“如何使用它”-要花上你几个月的时间去跟这门语言打交道,真正的奇迹就在此发生。我建议用这门语言的风格去做一个适 合该语言的项目。 真正学会了另一门语言之后,我敢保证你的程序员水平一定会突飞猛进。
2.学习先进的搜索技术、手段和及策略 作为一名好的程序员,不仅仅是技能的问题了,而是你寻找信息的技巧,这个趋势越来越明显。对大部分人而言,仅仅输入“现代语言及开发框架”,这都是泛泛之 谈,记不住多少的。因此,你完成工作的能力通常取决于你的检索能力。不幸的是,了解到如何找到准确而高质量的信息可不仅仅是跑到TechRepublic 来找答案,或者在你选好的搜索引擎上敲几个字那么简单。 “技术(Techniques)”、“手段(tactics)”和“策略(strategies)”看起来是一回事,实际上并非如此。你需要学会的技术是 掌握你喜爱的搜索引擎的高级搜索系统;你需要了解诸如布尔操作符,如何过滤结果(像“非”关键字,域限制等等),关键字的词序扮演什么角色,等等。一句 话,RTFM(Read The Fucking Manual,读那些他妈的手册)吧。 你应该学会这些手段,诸如如何接近特定的搜索,以及了解自己实际上想查些什么。查错误很容易—只需查出错代码即可—但是许多搜索的关键字选择要困难得多。 至于策略,你需要学会的东西,包括像应该使用哪种搜索引擎(提示:普通的搜索引擎不一定就是非常好的选择),使用普通搜索引擎前应该访问哪个网站,甚至是应该 到哪个论坛去寻求帮助,等等。
3.帮助别人 教别人始终是学习一切东西的最好方法之一。相对而言,由于你在开发领域还是个新手,认为自己没什么可教给人家的,这可以理解。但这毫无意义。记住,你所学 到的一切都是你从别人或别处学到的;因此请尝试一下,成为另外一个人要请教的“别人”。每天尽量花一点时间试着回答TechRepublic上的问题,其 他网站的亦可。读读其他会员的回答,你也可以学到很多东西。
4.有耐心,常练习 研究表明,要成为一名“专家”,需要花费10年,或者10000到20000小时的刻意练习时间。真的很久。还有,成为专家不尽然就是执行10年同样的任 务;通常这意味着要在特定领域内执行广泛的任务。需要花费大量的时间和精力才能成为“专家”;做几年程序员是不够的。想在30岁左右成为一名高级软件开发 工程师?要么尽早接受教育/培训,要么你得愿意在闲暇时间进行大量的工作、阅读和练习。我从高中开始编程,还牺牲了许多休息时间去跟踪行业发展、学习新技 能等等。结果,我获得中级和高级程序员的时间就比我的大部分同事都要早得多,随着时间的推移,这些就转化成为很多的金钱。
5.对教条拒之门外 是时候开诚布公了:也许初级程序员了解的东西还不足以说出做某件事情有一种最好的方式。尊重朋友或者权威的观点是好的,但直到你更有经验之前,不要把他们 的观点说成是你自己的。很简单,如果你所了解的不足以让你独立地找出这些东西来,你又怎么会认为你知道哪一位“专家”是对的呢?话是难听了点,不过请相信 我;由于受某些愚蠢建议的蛊惑,或者追随某些根本不知道自己在说些什么的所谓专家,白白把自己的职业生涯耽搁了几年,这样毛头小伙程序员,我见过多了。这 一点有一个很好的例子,就是面向对象结构的滥用。比如说,许多初级者读了一些有关面向对象的信息后,突然间,他们那简单的应用程序的类图看起来就像埃菲尔 铁塔一样了。