程序员从初级到中级10个秘诀,徐汇区网站设计

Justin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate developer》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将中文译文转载于此,供大家借鉴。

在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的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.对教条拒之门外

是时候开诚布公了:也许初级程序员了解的东西还不足以说出做某件事情有一种最好的方式。尊重朋友或者权威的观点是好的,但直到你更有经验之前,不要把他们的观点说成是你自己的。很简单,如果你所了解的不足以让你独立地找出这些东西来,你又怎么会认为你知道哪一位“专家”是对的呢?话是难听了点,不过请相信我;由于受某些愚蠢建议的蛊惑,或者追随某些根本不知道自己在说些什么的所谓专家,白白把自己的职业生涯耽搁了几年,这样毛头小伙程序员,我见过多了。这一点有一个很好的例子,就是面向对象结构的滥用。比如说,许多初级者读了一些有关面向对象的信息后,突然间,他们那简单的应用程序的类图看起来就像埃菲尔铁塔一样了。

6.深入学习一点先进理念

成为一名中级程序员,很大一部分是要在代码里面体现出一些所擅长的概念。就我而言,是多线程/并行性,是正则表达式,以及如何对动态语言进行变化(后两个在我离Perl渐行渐远后开始退化)。这是如何发生的?多线程和并行处理是因为我读了相关文章,觉得它看起来很有趣,然后再自己把它弄清楚了;然后我就一直使用这些技术来写应用。我做过一件工作,是用Perl写的,里面运用了大量的正则表达式。我也用一个过程引擎模板和内置数据库系统写过我自己的电子商务引擎;那时我几乎花了2年时间在这上面。

找到真正令你着迷的东西。也许是图像处理,也许是数据库设计,等等。即便你是一个入门级的程序员,也要尝试一下成为某一自己所关注领域的专家。这会让你相当快速地进入到中级水平,一旦你到了那个水平,你的专家之路也走到一半了。

7.学习你的领域里面的基本理论

写出“Hello World”,跟理解那些字是如何显示到屏幕上的是两码事。通过学习支撑你所从事的工作的“基础/底层工作(groundwork)”,你会变得更加在行。为什么?因为你会理解事物为何会以这种方式运作,当东西坏了就能知道是哪里的问题,等等。通过掌握工作的底层机制,你变会得更出色。

如果你是Web程序员,读读HTTP RFC和HTML规范。如果你使用代码生成器,好好看看它生成的代码;如果你使用数据库工具,看看它生成的底层SQL语句,不一而足。

8.看看高级程序员的代码

在工作中看看高级程序员写的代码,然后问一问事情是如何以某种特别的方式完成的,为什么?可能的话看看开源的项目。甚至即使其他程序员没有最好的编程习惯,你也会学到许多编程经验。当然,要小心别学到坏习惯。我的意思是说不要生搬硬套人家的东西;你要能领会到哪些是能行的通的,哪些是有道理的,然后再模仿人家。

9.学习好的习惯

愚蠢的变量名,糟糕的缩进习惯以及其他一些凌乱的迹象就是一个没有经验的程序员的最好标记。一个程序员在学会如何编程时,却经常没有被传授到那些不那么有趣的细节,像代码格式编排。甚至尽管学习这些东西并不会令你的代码更好,也不会令你成为更好的程序员,它也会确保你不被同事视为入门级的程序员。甚至即使某人是高级程序员,如果他的变量是以他那97只猫的名字来命名,或者其函数叫做“doSomething()”的,他们看起来也不像是知道自己在干什么的人。而且会令其代码在过程中更难以维护。

10.要玩的开心

想要痴迷于单调乏味的工作?痛恨工作吧。要想升级为中级程序员可不仅仅是为了拿到不断增长的工资不达目的誓不罢休,而是要真正享受工作。如果你不喜欢自己的工作,且还是初级程序员,你怎么会认为成为中级或高级程序员情况就会有所好转呢?换工作或改职业吧。反过来说,如果你喜爱所从事的工作,那就好!只要你坚持下去,我保证你能成为一名更好的程序员。(Justin James)

【人物小传】

Justin James

Justin James

Justin James就职于Levit & James, Inc,并在公司中承担着混合编程、网络管理员、系统管理员多项职务。自2005年就在TechRepublic开博,博客地址:http://blogs.techrepublic.com.com/10things/

原文链接:http://blogs.techrepublic.com.com/10things/?p=732

译文链接:http://kb.cnblogs.com/page/71136/

时间: 2024-07-31 13:06:47

程序员从初级到中级10个秘诀,徐汇区网站设计的相关文章

程序员:90%做维护 10%做开发 这正常吗?

这篇译文来自Stack Exchange上的一个提问,在许多开发者中都产生了共鸣.很多时候,作为程序员的我们,在日常工作中并没有很多时间用在编写代码上,而是不断的在维护某个年代久远的系统,不断修正Bug,维护的项目会越来越多.如果我们希望能改进已有的代码,对系统做下重构,有时候并不能得到公司的支持. 提问者声称自己的报酬非常低,但却在做整个开发团队级别的工作,这到底正常吗?难道所有的开发者都是这样的?以下两个回复获得了大多数开发者的认同,想学习下如何同公司高层沟通的技巧吗? TiredProgr

《程序员之禅》一一10.4 无我

10.4 无我 程序员之禅一些程序员存在的大问题是:过于自我.但其实,我们没有时间过于自我,没有时间成为一个摇滚明星. 谁能决定你的编程水平呢?你自己?不是.别人?可能吧.你可以拿苹果跟香蕉比吗?不能.你是个个体.你无法将整个自己与他人去比较,只能说某些方面的比较. 有个技能有啥可自豪的?你擅长Java?酷,别人是不如你,但他擅长打保龄球,你行吗?Java比保龄球更重要吗?恐怕要视具体情况而定.你可能因为Java赚得多一些,但别人可能从生活中获得了更多的乐趣,因为他有一群保龄球友. 你真的对自己

《程序员之禅》一一10.2 心无杂念

10.2 心无杂念 程序员之禅在动手编程之前,你需要清空头脑,摒弃一切杂念.如果你有什么麻烦事,不要让它影响你.在大多数情况下,烦恼会自行消失.如果杂念太多,无法驱除,就暂且不要工作.一定努力清除它们.而你一旦开始工作,请暂且忘记身外的世界. 邮件列表中有令人兴奋的内容?别管它,你可以晚些时候再兴奋.关掉所有会占据你头脑的垃圾程序:推特.脸书和电邮.你甚至应该将手机设为静音并放进口袋里.或许你会说这条规则类似于第1条"专注",然而这条中还应有一个限制:在工作前或午餐时不要使用这些工具.

《程序员之禅》一一10.1 专注

10.1 专注 程序员之禅禅修程序员一旦开始工作,就应该全力以赴,做到最好.请不要同时展开多项工作.一次仅做一事就好.一心多用不会让效率更高,只会使你应接不暇.超负荷工作会让人疲惫不堪.容易出错,而且在不同的工作之间频繁切换也会浪费时间.这是条通用的建议,不仅仅适用于编程工作. 泽木兴道禅师教诲:若需睡觉,尽管睡.当决定休息的时候,不要再去想软件的事,尽管睡觉.要是打算编程,就尽管去编,不要再做白日梦,专注它.一旦你疲倦不堪而无法编程,你就需要睡觉了.即使是以一心多用出名的Stephan Uhr

《程序员之禅》一一10.9 玩物养志

10.9 玩物养志 程序员之禅程序员不止是一个程序员.你应该尝试一些跟计算机无关的事情.在你的闲余时间,可以扬帆出海,去钓鱼或潜水,或者静坐冥想,练练武术,吹吹尺八.不管你做什么,都要尽情尽意,就像在工作时间那般投入.认真去做.爱好不仅仅是爱好,它也展示了你究竟是怎样的一个人.不要被任何说爱好不重要的人蒙骗.现在我们有能力拥有爱好.我已经录制多张CD,还写了几本科幻小说(后者尚未出版,我还得多加练习).这些事情塑造了今天的我,并最终导致我参禅,写成本书.近来我时常练习禅宗尺八,它在我日常生活中占

《程序员之禅》一一10.5 不要设置职业目标

10.5 不要设置职业目标 程序员之禅如果你总是想得到些什么以至于忽略了当下的生活,你已经输了.对于工作,全力以赴即可,别去管将来很长一段时间后才可能达成的目标. 难道拼命工作20年,就是为了成为公司股东?为什么不能因为乐趣而勤奋工作呢?如果真心喜欢,即使辛苦也会乐在其中."一日不作,一日不食",禅宗如是说. 没有必要等到20年后再去寻找快乐.即使不是公司股东,即使没有保时捷跑车,现在的你也能拥有快乐.天有不测风云,你可能突然大病一场,可能被解雇,也可能会面临油尽灯枯(如果你遵循了所有

《程序员之禅》一一10.6 敏事慎言

10.6 敏事慎言 程序员之禅如果没有什么要说的,就不要去浪费同事的时间.这样做并不会让你看上去懦弱无能.在每天的工作中,尽量不要去无端惹人心烦.试想一下,要是每个人都努力做到,那将是一个多么好的工作环境啊?虽然有时这是不可能的,但请努力做到,你会喜欢的. 如果你不过于自我,就很容易做到谨言,只关注当讲之事.不要把你的"个人经验"变成了"自负".永远记住:你是一位初学者.如果他人有好主意,请保持随喜心.

《程序员之禅》一一10.8 做自己的老板

10.8 做自己的老板 程序员之禅是的,某人付你薪水,告诉你需要做什么.而且他还可以解雇你.但这都不是你放弃自己的生活,成为工作狂的理由.总之,老板对你没有控制权.你甚至也可以怀疑你对自己有无控制权--打住,不要走火入魔. 回到谈老板.如果你一味纵容的话,老板可以让你的生活变得老糟糕.但是有一个解决办法.如果他要你做一些恶心或有违个人道德底线的事情,你大可说"不".这会有什么后果?最坏的结果无非是被他开除.那又如何?如果你生在发达国家,如果你是一个程序员(要是你正在阅读这些文字,你大概

《程序员之禅》一一10.7 正念、观照、觉察

10.7 正念.观照.觉察 程序员之禅是的,你正在工作.但与此同时,你也在呼吸,在生活.即使工作再忙再累,也要倾听身体发出的信号.你要知道哪些东西对你是有好处的,所有的,包括像食物等生活必需品.要关心自己及周围环境中一切,毕竟,你所喝之水就来自于周边这条河流.记住,你是为自己而生的--一个人生来,也将一个人死去.即使没有你,地球依旧转动. 请避免在你不喜欢的那种环境下工作.如果某类无偿工作已经让你毫无乐趣可言,而且又剥夺了你的睡眠时间,那就拒绝它.放下所有那些让你不快乐的事情.你以为无偿工作只停