`
caobihole
  • 浏览: 941521 次
文章分类
社区版块
存档分类
最新评论

从初学者提升为中级开发者的10个密诀

 
阅读更多

10 tips to go from a beginner to intermediate developer
从初学者迈向中级开发者的10个密诀

作者:Justin James

翻译:Purple Endurer,2009-05-21 第1

分类:升职,开发者

标签:开发者,语言,Justin James

英文来源:http://blogs.techrepublic.com.com/programming-and-development/?p=1139

Having trouble finding tips for beginner developers who want to take their career to the next level? Justin James aims to fill this information gap with his suggestions about how to make that leap.

为想让职业生涯更上一层楼的初级开发人员寻找密诀有困难吗?Justin James就此提出了如何进行这一飞跃,来填补这一信息缺口。

During an e-mail exchange with a TechRepublic member, he mentioned that blogs, articles, and magazines aimed at developers seem to fall into two categories: items for beginners (”Hello World” type tutorials) and items for experts (MSDN Magazine). It’s a really good point; there’s very little information out there to help a developer make the leap from beginner to intermediate. Here are 10 things you need to do to make that transition.

在一封与TechRepublic成员交流的电子邮件当中,Justin James提到针对开发人员的博客、文章和杂志似乎分成两类:初学者项目(“Hello World”类教程)和专家项目(MSDN 杂志)。这个观点很好;此外能帮助开发人员从初级跃升到中级的资料非常少。这里有你在转变时需要做的10件事情。

#1: Learn another language
学习其它语言

It doesn’t matter which language you learn, but learning another language (regardless of how many you already know) will make you a better developer. Even better is to learn one that is significantly different from what you already use on a regular basis. In other words, if you are a C# developer, learning VB.NET or Java will not help you as much as learning Ruby or Groovy.


你学哪种语言都没关系,但学习其它语言(无论你已经知道多少种语言)将使你成为更好的开发人员。更好的是学习与你已经定期使用的有显著差别的语言。换句话说,如果你是一个C#开发人员,学VB.NET 或 Java 不如学 Ruby 或 Groovy 帮助大。

《endurer注:1、regardless of:不管;不顾
2、on a regular basis:定期地》

And when I say “learn another language,” I mean really learn it. Learning a language consists of three realms of knowledge: the syntax, the built-in operators and libraries, and “how to use it.” The first two are easy; I think that an experienced developer can pick up enough of a language’s syntax to maintain code in 30 minutes to a few hours depending upon the language. The operators and libraries are just a matter of slowly accumulating knowledge and being willing to check reference materials until you memorize what you need to know. But it’s the third item — “how to use it” — that can only be learned over months of working with a language and that’s where the real magic happens. I suggest doing a project that is well suited for that language and doing it in that language’s style.

并且我说“学习其它语言”的意思是真正地学会它。学习一门语言包括三个领域的知识:语法、内置运算符和库、以及“如何使用它”。第一、二项容易;我认为一个有经验的开发人员,根据语言的不同,可以在30分钟到几个小时内学会能够维护代码的语法。运算符和库只不过是慢慢积聚知识,并乐意检查参考材料,直到你记住所要知道的内容。但第三项——“如何使用它”——需要花几个月的时间来跟这门语言打交道,真正的奇迹也就由此发生。我建议做一个适合该语言的项目,并且按这门语言的风格去做。

《endurer注:1、reference material:参考材料》

Truly learn another language, and I promise that your abilities as a developer will start to blossom.

真正学会了另一门语言后,我保证你的开发能力一定会突飞猛进。

《endurer注:1、He used to be painfully shy, but now he's started to blossom (out).他以前极腼腆, 现在活泼起来了.》

#2: Learn advanced search techniques, tactics, and strategies

学会高级搜索技术、手段和及策略

More and more, being a good developer is not just about your skill, but your skill at finding information. Simply put, modern languages and development frameworks are too large for most people to remember much of them. As a result, your ability to get work done is often dependent upon your ability to perform research. Unfortunately, knowing how to find accurate, high-quality information is more than just heading to TechRepublic for the answer or typing a few words into your search engine of choice.

作为一名好的开发人员,不仅要看编程技能,而且也取决于寻找信息的技巧,这一趋势越来越明显。简言之,“现代语言及开发框架”对大部分人而言太大,记不住多少。因此,你完成工作的能力通常取决于你的检索能力。不幸的是,要知道如何找到精确高质的信息,可不仅仅是直奔TechRepublic找答案,或者在选好的搜索引擎上敲几个字那么简单。

《endurer注:1、very simply put:简言之
2、heading to:朝向...走》

“Techniques,” “tactics,” and “strategies” may sound like synonyms, but they are not. The techniques you need to learn are the advanced search systems of your favorite search engine; you need to learn things such as the Boolean operators, how to filter results (negative keywords, domain restrictions, etc.), what role word order plays, and more. So essentially, RTFM.


“技术”、“战术”及“策略”听起来像是一回事,实际上并非如此。你需要学会的技术是掌握你喜爱的搜索引擎的高级搜索系统;你需要了解诸如布尔操作符,如何过滤结果(像“非”关键字,域名限制等等),关键字的词序扮演什么角色,等等。说到底,请阅读该死的使用手册。

《endurer注:1、RTFM:Read The Foolish Manual,请阅读该死的使用手册》

You should learn tactics such as knowing how to approach any particular search and knowing what you should you actually look for. Errors are easy — just look for the error code — but keyword selection on many searches is much more difficult.

你应该学会诸如如何接近特定搜索,以及了解自己实际上想查找什么之类的战术。查找错误很容易 — 只需查找错代码可 — 但是在许多搜索中关键字的选择更为困难。

With regard to strategies, you need to learn things such as what search engines to use (hint: general purpose search engines are not always the right answer), which sites to visit before going to a general purpose search engine, and even which message boards to post to for help.

至于策略,你需要学会这些东西,比如使用哪种搜索引擎(提示:通用搜索引擎并不总是正确选择), 使用通用搜索引擎前应该访问哪个网站,甚至是应该到哪个论坛去发贴求助,等等。

《endurer注:1、With regard to:关于,至于》


#3: Help others

帮助别人

Teaching others is invariably one of the best ways to learn anything. It is understandable to think that you don’t have much to offer because you are relatively new to the development field. That’s nonsense. Remember, everything you know you learned from someone or somewhere; so try being the someone that another person learns from. Spend a few minutes a day trying to answer the questions on TechRepublic or another site as best you can. You can also learn a lot by reading other members’ answers.

教导别人始终是学习事物的最佳途径之一。你自认为在开发领域还是新手,没什么可以传授的,这可以理解,但毫无意义。记住,你所知道的一切都是从别人或别处学到的;因此请尝试一下,成为另外一个人要请教的“别人”。每天可能花一点时间试着回答TechRepublic或其他网站上的问题。阅读读其他会员的回答,你也可以学会很多东西。

《endurer注:1、as best one can:尽可能(尽量)》

#4: Be patient and keep practicing

习之以恒

Research shows that it takes “about ten years, or ten to twenty thousand hours of deliberate practice” to become an “expert.” That’s a lot of time. Furthermore, becoming an expert does not always mean doing the same task for 10 years; it often means doing a wide variety of tasks within a particular domain for 10 years. It will take a lot of time and energy to become an “expert”; working as a developer for a few years is not enough. Want to become a senior developer in your early 30s? Either start your education/training sooner or be willing to do a lot of work, reading, and practicing in your spare time. I started programming in high school, and I devoted a lot of off-hours to keeping up with the industry, learning new skills, and so on. As a result, I hit the intermediate and senior level developer positions significantly earlier in my career than most of my peers, which translates to an awful lot of money over time.

研究表明,要成为一名“专家”,需要花费10年,或者10000到20000小时的深入练习时间。真的很久。还有,成为专家并不一定代表10年内执行同样的任务;通常这意味着要在特定领域内执行广泛的任务10年。要成为“专家”需要花费大量的时间和精力;做几年开发人员是不够的。想在30岁左右成为一名高级软件开发工程师?要么尽早开始接受教育/培训,要么你得愿意用业余时间进行大量的工作、阅读和练习。我从高中开始编程,还牺牲了许多休息时间去跟踪行业发展、学习新技能等等。结果,我获得中级和高级开发人员职位的时间就比我的大部分同事都要早得多,随着时间的推移,这些就转化成为非常多的收入。

《endurer注:1、spare time:业余时间》

#5: Leave your dogmas at the door
拒绝教条

Time for some brutal honesty: Beginner developers probably don’t know enough to state that there is One Best Way of doing something. It’s fine to respect the opinion of a friend or an authority figure, but until you are more experienced, don’t claim their opinions as your own. The simple fact is, if you don’t know enough to figure these things out on your own, what makes you think that you know which “expert” is right? I know this sounds really harsh, but please believe me; I have met far too many budding developers who had their careers or their growth set back years because they got hung up on some foolish piece of advice or followed some “expert” who really didn’t know what they were talking about. A great example of this is the abuse of object-oriented architecture. For example, many beginners read some information about OO, and suddenly the class diagrams to their simple applications look like the Eiffel Tower.

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

《endurer注:1、authority figure:权威人物
2、the simple facts: 事实本身
3、figure out:算出(想出,理解,断定,解决)》

#6: Learn a few advanced ideas in-depth
深入学习一些先进理念

Much of what goes into being an intermediate developer is having a few concepts that you are really good at working with in code. For me, it is multithreading/parallelism, regular expressions, and how to leverage dynamic languages (and the last two are fading as I get farther away from my Perl history). How did this happen? Multithreading and parallel processing came about because I read articles on it, thought it sounded interesting, and figured it out on my own; I keep writing apps that use those techniques. I had a job that used a ton of regular expressions in Perl. Also, I ended up writing my own e-commerce engine with a template processing engine and built-in database system; then I spent nearly two years working on it.

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

《endurer注:1、came about:发生(转身,改变方向)
2、end up:结束,告终》

Find something that has you really hooked. It might be image manipulation or maybe database design or whatever. Even if you’re an entry-level developer over all, try to become an expert in at least one area of focus. This will get you into that intermediate level quite quickly, and once there, you will be halfway to expert.

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

#7: Learn the basic theories underlying your field

扎实学习你的领域中的基本理论

It’s one thing to write “Hello World,” but it’s another to understand how the words appear on the screen. By learning the “groundwork” that supports the work you do, you will become much better at it. Why? Because you will understand why things work the way they do, what might be wrong when things are broken, and so on. You will become better by learning what happens at a lower level than your work.

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

If you are a Web developer, read the HTTP RFC and the HTML spec. If you use a code generator, really look at the code it generates; if you use database tools, take a look at the underlying SQL it generates; and so on.

如果你是Web开发人员,读读HTTP RFC和HTML规范。如果你使用代码生成器,好好看看它生成的代码;如果你使用数据库工具,看看它生成的底层SQL语句,依此类推。

#8: Look at senior developers’ code

看高级开发人员的代码

At your job, take a look at the code the senior developers are writing and ask how and why things were done a particular way. If you can, check out open source projects as well. Even if other developers don’t have the best coding habits, you’ll learn a lot about how code is written. Be careful not to pick up bad habits along the way. The idea here isn’t to just blindly imitate what other developers are doing; it’s to get an idea of what works and what makes sense and try to imitate it.

在工作中看一看高级开发人员写的代码,然后问一问事情是如何以某种特别的方式完成,为何如此?可能的话也可以看开源项目。甚至看其他的没有最佳编程习惯的开发人员的代码,你也会学到许多编程经验。当然,要小心别染上坏习惯。我的意思是说不要盲目模仿别人的东西;你要能领会到哪些行得通,哪些讲得通,然后再模仿。

《endurer注:1、make sense:讲得通,有意义,言之有理》

#9: Learn good habits

学习好的习惯

Nothing marks an inexperienced coder like stupid variable names, poor indentation habits, and other signs of being sloppy. All too often, a developer learned how to program without being taught the less interesting details such as code formatting — and it shows. Even though learning these things will not always make your code better or you a better developer, it will ensure that you are not viewed as an entry-level developer by your peers. Even if someone is a senior developer, when variables are named after their 97 cats or their functions are called “doSomething(),” they look like they do not know what they are doing, and it makes their code harder to maintain in the process.

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

《endurer注:1、be sloppy:湿滑的
2、All too often:时常》


#10: Have fun

要做得开心

Want to be stuck on the career treadmill? Hate your job. What it takes to move up in this business is not merely dogged determination to bring home an ever growing paycheck but an actual enjoyment of your work. If you do not like your work and you are a junior developer, what makes you think that being an intermediate or senior developer will be any better? Change jobs or change careers. On the other hand, if you love the work you are doing, great! I guarantee that you can become a better developer if you keep at it.

想爱上单调乏味的职业?讨厌工作吧。在这一行业中,所要采取的推进措施不仅仅是要给家庭带回越来越多的工资的决心,而且还要实实在在享受工作。如果你不喜欢自己的工作,且还是初级开发人员,你怎么会认为成为中级或高级开发人员后情况就会好转呢?换工作或转职业吧。反过来说,如果你喜爱所从事的工作,那就好!只要你坚持下去,我保证你能成为一名更好的开发人员。

《endurer注:1、Have fun:玩得开心
2、be stuck on:迷恋于(爱上)
3、dogged determination:顽强的决心》

分享到:
评论

相关推荐

    Proteus权威教程(适合初学者学习 也适合开发者强化)

    很好的Proteus教程 适合不同层次的开发者学习

    go初学者开发者工具搭建

    go初学者开发者工具搭建

    java初学者或开发者查询手册.pdf

    java初学者或开发者查询手册.pdf 无积分的童鞋可以到我博客http://913.iteye.com

    XMLWriter V2.7 Build 210_绿色汉化版_开发者及初学者XML编辑工具

    XMLWriter V2.7 Build 210_绿色汉化版_开发者及初学者XML编辑工具

    C#.net web开发者指南

    C#.net web开发者指南,C#初学者必备,入门精选

    joomla 1.7 初学者 教程 开发人员手册

    joomla 初学者的教程,开发者的手册

    Android初学者项目.zip

    这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的学习平台。 一、文件手册 资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学...

    wxWidgets初学者导引

    针对初学者起步学习困难的实际,提供了一个学习方案,帮助C++初者提升学习能力,用CodeBlocks、wxWidgets、wxSmith开发出C++ GUI(图形用户界面)的应用程序。该资源网络版在...

    微信web开发者工具.zip

    挺好用的一个微信web开发者工具,适合初学者掌握,对于新手很友好

    PDA开发者教程教程

    对于初学者来说,这是一本很好的入门教程,对于有经验的程序员来说,这是专业的参考书,对于PDA爱好者来说,这又是一本方便的手册。通过本书的学习,不仅可以快速学会开发基本的Palm OS应用程序,还可以学到调试程序...

    TWaver Java开发手册

    TWaver Java开发手册 有关于twaver使用介绍,适合初学者,及中级开发者

    firefox os 开发者文档

    firefox os 开发者文档对初学开发者是个不错的开发指导中文文档,对你学习firefox os 开发有一定的帮助!

    Linux从初学到精通

     《Linux从初学到精通》从初学者的角度详细的讲解每一个操作步骤,力求让读者可以更加清楚、准确了解整个操作过程。  《Linux从初学到精通》适合Linux初、中级用户参考学习,也可作为高等院校电子类、信息类、计算机...

    两套Vue实战项目代码,初学者可用

    本资源主要面向Vue初学者,包括前端开发新手和希望提升Vue技能的开发者。通过学习和实践这两套项目代码,学习者可以快速掌握Vue的基础知识和开发技巧,为未来的职业发展打下坚实基础。 三、使用场景及目标 这两套...

    21套项目代码 适合初学者

    这是本人在网上收集的21套javaWeb项目源代码,里面的有很多的项目案例,用到了很多的后台框架和知识点,适合初学者和开发者的下载使用! 1、jsp+hibernate+Struts2+spring+ajax+jQuery 2、用到了Java面向对象的特征 ...

    vi与vim基础_适用于初学者&开发者_常用命令

    自己看视频整理的vi与vim基础

    WebRTC零基础开发者教程(纯净版)

    本文中提供下载的《WebRTC 零基础开发者教程》将以一个初学者的角度,从0开始逐步引导你掌握WebRTC开发的方方面面(当然,教程中更多的是操作性的内容,具体到技术原理和实现,显然不是本教程的讨论范畴)。...

    10个步骤让你成为高效的Web开发者

    该资源讲述了10个要点,是对开发者的提高效率的很好的建议,我认为可以作为戒条去完善自己的开发过程!推荐!

    css初学者技巧

    下面的技巧会极大地在开发过程中帮助CSS初学者。 索引 本处的定义将帮助你和其他开发者了解网站和CSS CSS是用来定义网站的用户界面或将显示和内容区分开来的。 由于CSS被广泛地使用在几乎所有网站上,所以让我们花些...

    Qt初学者学习文档,讲述了基础用法和常用控件

    Qt初学者学习文档提供了基础用法和常用控件的详细介绍。文档涵盖了如何使用Qt开发应用程序的基础知识,包括创建窗口、布局管理、事件处理、信号与槽机制等核心概念。此外,文档还介绍了Qt中常用的控件,例如按钮、...

Global site tag (gtag.js) - Google Analytics