在一与TechRepublic?x)员交流的邮件当中,他提C面向E序员的博客、文章及杂志分成两类Q面向初学者类Q?#8220;hello world”q种cd的教E)以及面向专家c(MSDN杂志Q。这个观点很好,有关E序员如何从初跃升CU的信息极少。以下是Z实现q种转变需要你d?0件事?/p>
1.学习(fn)另一门语a
其实你学的是哪一门语aq没有关p,但是学习(fn)另一门语aQ不你已经了解多少U语aQ将把你打造ؓ(f)更好的程序员。能学会(x)一门与你日怋用的语言风格q异的语a则更佟뀂打个比方,如果你是C#E序员,学习(fn)VB.NET或者Java对你的帮助就没有学习(fn)Ruby或者Groovy大?/p>
我说“学另一门语a”的意思是要真正学?x)它。学?fn)一门语a包括三个领域的知识:(x)语法、内|操作符和库Q以?#8220;如何使用”。前面两个简单;我认Z名有l验的程序员Q根据语a的不同,能在半小时到几小时内掌握以l护代码的语法知识。操作符和库只不q是知识逐步U篏的过E,你什么时候想清楚要了解什么了Q再L阅参考材料也不迟。只有第三项Q?#8220;如何使用?#8221;-要花上你几个月的旉去跟q门语言打交道,真正的奇q就在此发生。我用这门语a的风格去做一个适合该语a的项目?/p>
真正学会(x)了另一门语a之后Q我敢保证你的程序员水^一定会(x)H飞猛进?/p>
2.学习(fn)先进的搜索技术、手D和及策?/strong>
作ؓ(f)一名好的程序员Q不仅仅是技能的问题了,而是你寻找信息的技巧,q个势来明显。对大部分h而言Q仅仅输?#8220;C语言及开发框?#8221;Q这都是泛泛之谈Q记不住多少的。因此,你完成工作的能力通常取决于你的检索能力。不q的是,了解到如何找到准而高质量的信息可不仅仅是跑到TechRepublic来找{案Q或者在你选好的搜索引擎上敲几个字那么单?/p>
“技术(TechniquesQ?#8221;?#8220;手段QtacticsQ?#8221;?#8220;{略QstrategiesQ?#8221;看v来是一回事Q实际上q如此。你需要学?x)的技术是掌握你喜q搜烦引擎的高U搜索系l;你需要了解诸如布?yu)(dng)操作符Q如何过滤结果(?#8220;?#8221;关键字,域限制等{)Q关键字的词序扮演什么角Ԍ{等。一句话QRTFMQRead The Fucking ManualQ读那些他妈的手册)吧?/p>
你应该学?x)这些手D,诸如如何接近特定的搜索,以及了解自己实际上想查些什么。查错误很容易—只需查出错代码即可—但是许多搜索的关键字选择要困隑־多?/p>
至于{略Q你需要学?x)的东西Q包括像应该使用哪种搜烦引擎Q提C:(x)普通的搜烦引擎不一定就是最佳选择Q,使用普通搜索引擎前应该讉K哪个|站Q甚x应该到哪个论坛去L帮助Q等{?/p>
3.帮助别h
教别人始l是学习(fn)一切东西的最好方法之一。相对而言Q由于你在开发领域还是个新手Q认己没什么可教给人家的,q可以理解。但q毫无意义。记住,你所学到的一切都是你从别人或别处学到的;因此请尝试一下,成ؓ(f)另外一个h要请教的“别h”。每天尽量花一Ҏ(gu)间试着回答TechRepublic上的问题Q其他网站的亦可。读d他会(x)员的回答Q你也可以学到很多东ѝ?/p>
4.有耐心Q常l习(fn)
研究表明Q要成ؓ(f)一?#8220;专家”Q需要花?0q_(d)或?0000?0000时的刻意练?fn)时间。真的很久。还有,成ؓ(f)专家不尽然就是执?0q同L(fng)dQ通常q意味着要在特定领域内执行广泛的d。需要花费大量的旉和精力才能成?#8220;专家”Q做几年E序员是不够的。想?0岁左xZ名高UY件开发工E师Q要么尽早接受教?培训Q要么你得愿意在闲暇旉q行大量的工作、阅dl习(fn)。我从高中开始编E,q牺牲了许多休息旉去跟t行业发展、学?fn)新技能等{。结果,我获得中U和高E序员的旉比我的大部分同事都要早得多Q随着旉的推U,q些p{化成为很多的金钱?/p>
5.Ҏ(gu)条拒之门?/strong>
是时候开诚布公了Q也许初U程序员了解的东西还不以说出做某g事情有一U最好的方式。尊重朋友或者权威的观点是好的,但直C更有l验之前Q不要把他们的观点说成是你自q。很单,如果你所了解的不以让你独立地找些东西来Q你又怎么?x)认Z知道哪一?#8220;专家”是对的呢Q话是难听了点,不过L(fng)信我Q由于受某些愚蠢的蛊惑,或者追随某些根本不知道自己在说些什么的所谓专Ӟ白白把自q职业生耽搁了几q_(d)q样毛头伙E序员,我见q多了。这一Ҏ(gu)一个很好的例子Q就是面向对象结构的滥用。比如说Q许多初U者读了一些有关面向对象的信息后,H然_(d)他们那简单的应用E序的类囄h像埃菲?dng)铁塔一样了?/p>
6.深入学习(fn)一点先q理?/strong>
成ؓ(f)一名中U程序员Q很大一部分是要在代码里面体现出一些所擅长的概c就我而言Q是多线E?q行性,是正则表辑ּQ以及如何对动态语aq行变化Q后两个在我Perl渐行渐远后开始退化)。这是如何发生的Q多U程和ƈ行处理是因ؓ(f)我读了相x章,觉得它看h很有,然后再自己把它弄清楚了;然后我就一直用这些技术来写应用。我做过一件工作,是用Perl写的Q里面运用了大量的正则表辑ּ。我也用一个过E引擎模板和内置数据库系l写q我自己的电(sh)子商务引擎;那时我几乎花?q时间在q上面?/p>
扑ֈ真正令你着qL(fng)东西。也许是囑փ处理Q也许是数据库设计,{等。即便你是一个入门的程序员Q也要尝试一下成为某一自己所x领域的专家。这?x)让你相当快速地q入CU水qI一旦你C那个水^Q你的专家之路也走到一半了?/p>
7.学习(fn)你的领域里面的基本理?/strong>
写出“Hello World”Q跟理解那些字是如何昄到屏q上的是两码事。通过学习(fn)支撑你所从事的工作的“基础/底层工作QgroundworkQ?#8221;Q你?x)变得更加在行。ؓ(f)什么?因ؓ(f)你会(x)理解事物Z?x)以q种方式q作Q当东西坏了p知道是哪里的问题Q等{。通过掌握工作的底层机Ӟ你变?x)得更出艌Ӏ?/p>
如果你是WebE序员,读读HTTP RFC和HTML规范。如果你使用代码生成器,好好看看它生成的代码Q如果你使用数据库工P看看它生成的底层SQL语句Q不一而?/p>
8.看看高E序员的代码
在工作中看看高E序员写的代码,然后问一问事情是如何以某U特别的方式完成的,Z么?可能的话看看开源的目。甚臛_使其他程序员没有最好的~程?fn)惯Q你也会(x)学到许多~程l验。当Ӟ要小心别学到坏习(fn)惯。我的意思是说不要生搬硬套h家的东西Q你要能领会(x)到哪些是能行的通的Q哪些是有道理的Q然后再模仿人家?/p>
9.学习(fn)好的?fn)?/strong>
愚蠢的变量名Q糟p的~进?fn)惯以及其他一些凌qq象是一个没有经验的E序员的最好标记。一个程序员在学?x)如何编E时Q却l常没有被传授到那些不那么有的l节Q像代码格式~排。甚臛_学?fn)这些东西ƈ不?x)令你的代码更好,也不?x)o(h)你成为更好的E序员,它也?x)确保你不被同事视?f)入门U的E序员。甚臛_使某人是高E序员,如果他的变量是以他那97只猫的名字来命名Q或者其函数叫做“doSomethingQ)”的,他们看v来也不像是知道自己在q什么的人。而且?x)o(h)其代码在q程中更难以l护?/p>
10.要玩的开?/strong>
惌痴迷于单调乏味的工作Q痛恨工作吧。要惛_Uؓ(f)中E序员可不仅仅是Z拿到不断增长的工资不辄的誓不Ş休,而是要真正n受工作。如果你不喜Ƣ自q工作Q且q是初E序员,你怎么?x)认为成ZU或高E序员情况就?x)有所好{呢?换工作或改职业吧。反q来_(d)如果你喜爱所从事的工作,那就好!只要你坚持下去,我保证你能成Z名更好的E序员?br />