在一封与TechRepublic会员交流的邮件当中,提到了面向程序员的博客、文章及杂志分成两类:面向初学者类以及面向专家类。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。
1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的 语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验 的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再 去查阅参考材料也不迟。只有第三项,“如何使用它”-要花上你几个月的时间去跟这门语言打交道,真正的奇迹就在此发生。我建议用这门语言的风格去做一个适 合该语言的项目。 真正学会了另一门语言之后,我敢保证你的程序员水平一定会突飞猛进。
2.学习先进的搜索技术、手段和及策略 作为一名好的程序员,不仅仅是技能的问题了,而是你寻找信息的技巧,这个趋势越来越明显。对大部分人而言,仅仅输入“现代语言及开发框架”,这都是泛泛之 谈,记不住多少的。因此,你完成工作的能力通常取决于你的检索能力。不幸的是,了解到如何找到准确而高质量的信息可不仅仅是跑到TechRepublic 来找答案,或者在你选好的搜索引擎上敲几个字那么简单。 “技术(Techniques)”、“手段(tactics)”和“策略(strategies)”看起来是一回事,实际上并非如此。你需要学会的技术是 掌握你喜爱的搜索引擎的高级搜索系统;你需要了解诸如布尔操作符,如何过滤结果(像“非”关键字,域限制等等),关键字的词序扮演什么角色,等等。 你应该学会这些手段,诸如如何接近特定的搜索,以及了解自己实际上想查些什么。查错误很容易—只需查出错代码即可—但是许多搜索的关键字选择要困难得多。 至于策略,你需要学会的东西,包括像应该使用哪种搜索引擎(提示:普通的搜索引擎不一定就是最佳选择),使用普通搜索引擎前应该访问哪个网站,甚至是应该 到哪个论坛去寻求帮助,等等。
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.要玩的开心 想要痴迷于单调乏味的工作?痛恨工作吧。要想升级为中级程序员可不仅仅是为了拿到不断增长的工资不达目的誓不罢休,而是要真正享受工作。如果你不喜欢自己 的工作,且还是初级程序员,你怎么会认为成为中级或高级程序员情况就会有所好转呢?换工作或改职业吧。反过来说,如果你喜爱所从事的工作,那就好!只要你 坚持下去,我保证你能成为一名更好的程序员。
转:http://www.iteye.com/topic/955553
分享到:
相关推荐
- **角色转变**:相较于初级程序员,中级程序员更有可能参与到项目的决策过程中,包括技术选型、编码规范制定以及开发流程优化等。此外,他们有时还需要承担起指导团队成员的责任。 - **重要性**:作为公司的中坚...
ASP.NET 2.0是微软推出的Web应用程序开发框架,它基于.NET Framework 2.0,为开发者提供了构建动态网站...在学习过程中,结合实际动手操作,理论与实践相结合,将能更好地提升技能水平,实现从新手到中级程序员的转变。
通过深入学习以上知识点,并结合提供的资源,初学者可以系统地掌握ASP.NET 2.0,逐步提升编程技能,实现从新手到中级程序员的转变。同时,随着.NET Framework的不断更新,理解ASP.NET 2.0的基础也有助于后续学习更...
以上五个秘诀涵盖了从技术提升到思维方式转变等多个方面,对于想要从初级阶段成长为中级甚至高级程序员的朋友来说,都是非常实用且宝贵的建议。通过不断地学习、实践和反思,相信每位程序员都能够在这条成长之路上越...
- **角色转变**:从技术层面向管理层转变,关注技术团队的整体运作和项目管理。 - **职业定位**:朝着技术总监、研发总监乃至CTO的目标努力。 #### 总结 程序员的职业发展是一个持续探索和自我提升的过程。无论...
《程序员的思维修炼(英文版)》这本书是针对软件开发人员的,它不仅提供了理论上的答案,而且给出了大量的实践技术与技巧,致力于...通过阅读本书,程序员能够获得一系列实用的技巧和策略,以实现从新手到专家的转变。
2. **中级Android开发者**:在掌握了基本技能后,可以承担更复杂项目的开发任务,并开始接触团队协作流程与版本控制工具(如Git)。 3. **高级Android开发者/架构师**:具备深厚的技术功底和丰富的实战经验,能够...
本书包含了包含PL / SQL所有高级功能的真实示例。 如果您是寻求更深入的了解并从中级程序员转变为专业数据库开发人员的PL / SQL开发人员,那么这是最适合您的指南。
程序员心底的小声音】这篇文章主要探讨了程序员在编程学习和成长过程中的不同阶段以及如何从中级水平晋升到高级水平的问题。作者将程序员分为新手、高手和中手三个层次,并指出,中手程序员通常在积累了大量实践...
《Android程序员向导》是一本面向初级到中级Android开发者的指南,旨在帮助读者掌握Android操作系统上的应用程序开发。本文将深入探讨Android系统的历史、开放手机联盟的重要性、Android平台的基本概念,以及如何...
本书不仅仅是一本技术手册,更是一本引导程序员转变思维方式的手册。它帮助程序员学会从用户的角度出发思考问题,并提供了一系列实用的方法和技巧来改进程序的界面设计。 ##### (2)实践应用 对于菜单栏这样的基本...
本书是专为从事Oracle开发的初级程序员和中级程序员编写的,通过本书的学习,可以使读者从Oracle的门外汉转变为精通Oracle9i的专业人士。同时本书对Oracle高级程序员也有很大的借鉴和帮助作用,本书亦可作为各初、...
《Apress Beginning Java 8 Fundamentals 2014》是面向Java初学者和中级程序员的一本学习资料,旨在通过全面的方法教授Java编程语言,特别是所有级别的Java开发中必不可少的面向对象基础。该书籍由Kishori Sharan...
本书的目的是帮助有一定...向大师级网络程序员的转变在很大程度上靠的是经验和特定知识 的积累,当然这些东西有时是很模糊的概念。除了时间和实践之外没有别的东西能够提供 经验,而本书可以在知识的积累方面帮助你。
本书的目的是帮助有一定...向大师级网络程序员的转变在很大程度上靠的是经验和特定知识 的积累,当然这些东西有时是很模糊的概念。除了时间和实践之外没有别的东西能够提供 经验,而本书可以在知识的积累方面帮助你。
例如,来自南非King Edward VIII Hospital的Gavin Pillay博士表示,本书使得他能够迅速从一个非C语言程序员转变为一个熟练掌握Java的开发者。 此外,书中还提供了大量实例,这些实例不仅有助于读者理解理论知识,也...