您的位置:知识库 » 程序人生

如何成为一个专家级的开发者

来源: 51cto  发布时间: 2010-08-27 09:56  阅读: 2035 次  推荐: 0   原文链接   [收藏]  
摘要:作为一个开发者,你很可能正在使用一个特定的平台,为一个特定的行业开发软件。如果不是这样,如果你经常要选择工具和行业,那么你很可能从来都没有成为一个真正的专家,如何成为一个专家级的开发者呢?

  当你浏览这篇文章的时候请记住:成为一个真正的专家和被当成是一个专家之间是有区别的。许多人都被晋升为专家,但是他们真的不是。但是,如果有人相信他们是,他们就会一直赚很多钱,虽然他们很平庸。另外,有许多专家,没有人知道他们是专家。如果你真的是一个专家,你的下一步行动就是要被大家当成是一个专家。如何做到这一点已经超过了这篇文章的讨论范围。这是一个的不同主题——关于个人品牌等。

  什么是“专家”,要花多长时间才能成为一个专家?

  在开始讨论如何成为一个专家之前,我们先来花30秒的时间来说明专家是什么,和要花多长时间才能成为一个专家。

  在你使用一项技能3个月以后,你不是一个专家,使用3年以后也不是一个专家。根据Malcom Gladwell的图书《局外人》所说,要成为一个真正的专家需要平均花费10000个小时。如果你喜欢自命不凡。10000个小时!如果一天花费10个小时,然后每天都努力,需要3年。或者,更加自命不凡一些,一天花费5个小时,一年只有200天在努力,需要10年。整整10年!

  根据这个断言,我发现在我有3年经验的时候我曾认为我自己是一个专家或一个资深开发者。现在,在2010年的时候我已经有10年的经验了,我已经学习了很多需要了解的知识,但是我一直不知道还有多少知识需要学习,现在我不再感觉自己是一个专家了。

  另外,在最近这10年里,行业(Java企业级开发)已经发生了很大的改变,所以我过去掌握的技能,都不那么“酷”了。即使你是一个专家,你也会发现你自己变得过时了,必须要重新开始学习。

  还有一件事:你不可能是各个领域的专家,这意味着在某种技能上你也许比某人更优秀,但是在另外一种技能上比某人可能就比你更优秀了。你在每一种技能上都比别人优秀或比别人更差,这是不可能的。你总是能从其他人身上学到一些东西的。我过去曾经遇到过几个开发者,他们总是表现的好像他们在所有方面都很优秀似的,即使在事实并非如此的情况下,他们也还是这样做。

  实际上,这通常是鉴别新手的一种方法:相信他们自己知道所有的事情,在线或离线的情况下一直不停的争论。他们的争论带有绝对倾向,比如“这个总是比那个更好”,或“这是做这件事的唯一方法”等等。专家从来不这样。他们知道,一切都取决于具体情况,你的开发者掌握的技能,你的公司选择的工具,公司策略,个人喜好等等。缺乏经验的开发者(和一般人)都倾向于相信世界是非黑即白的。而专家知道,世界充满了灰色地带,甚至还有许多额外的颜色和色调。

  如何成为一个专家

  对于你需要学习的大多数技能,有四个步骤可以帮助你成为一个专家。大多数情况下你可以按顺序进行这些步骤,也可以按从上到下的方式迭代这些步骤。这些步骤是:

  1,学习它

  2,实践它

  3,讨论它

  4,传授它

  学习它

  在你掌握一项技能以前,你必须首先学习它的理论。你可以通过图书,手册,培训来学习理论知识,或综合运用这些途径来学习理论知识。

  实践它

  一旦你已经学会了这项技能的理论知识,你需要实践这项技能,通过实践你的技能,你可以认识到你学到理论知识哪些是正确的,哪些是错误的。是的,往往大学教给你的理论在现实中并不起作用,或者并不能在你现在的情况下使用。

  讨论它

  一旦你已经使用这项技能很长时间了,并且你发现你能够解决很多需要这项技能的问题,那么该是和其他有经验的人讨论这项技能的时候了。可以讨论一下应用这项技能的最佳方式是什么,理论的限制在哪里,可以补充些什么等等。简而言之,就是讨论如何进一步推动这项技能(比如一个API,如何使它更好/与众不同等)。

  传授它

  把你的技能教给其他人,真的是一个弥补你的技术上的不足的好方法。可能许多事情只是做做而已,但是并没有思考为什么要这样做。如果必须要解释你的方式和方法,可以强迫你思考这样做的原因。

  另外,可能有一些你技术上的空白点,你从来都不需要掌握它们(比如说,Web服务的规范)。如果必须要传授你的技能,将可以强迫你掌握这些空白点,让你有更大的进步。

  如何成为一个专家级的开发者

  现在,我已经谈了如何成为一个普遍意义上的专家,下面我来谈一谈如何成为一个专家级的开发者。作为一个开发者,你很可能正在使用一个特定的平台,为一个特定的行业开发软件。如果不是这样,如果你经常要选择工具和行业,就像一些Web开发者那样,那么你很可能从来都没有成为一个真正的专家。你只会成为一个杂而不精的人。你需要集中你的精力。

  我从1998年开始了我作为Web应用程序开发者的职业生涯,然后我发现我自己经常要更换工具,这意味着我无法真正的熟练使用其中任何一个工具。我只是一直在努力学习新的工具的使用方法。然后我决定把注意力集中一门面向对象的语言和一个平台上,于是我选择了Java。那时.NET还没有出现。自从1999年,我一直只使用Java。

  在你的专家之路上,你必须选择一个平台,可能还要选择一个行业。行业并不是特别重要,但是业务领域的知识可以增强你的简历。

  当你学习一个平台的时候,你可以从一门语言来入手。例如:Java语言。在你学习了那门语言以后,你需要学习这个平台(包括所有的API和工具)。在Java中,平台被划分成了两个:标准版和企业版。

  一旦你开始掌握你的平台,你应该开始学习一些独立于平台的技能,像设计模式,分布式系统设计,架构,可用性等等。当你取得进步的时候,你会花更多的时间来学习这些技能。这是一件好事情。这些技能可以更容易的迁移到一个新的技术平台上。

  最后,你可能会完全脱离软件开发工作,进入到像项目管理,架构师那样的完全不同的业务领域。请记住,一旦你停止使用你的开发技能,那么你也就在专家之路上驻足不前了。

这是一张图表,表示你的“专家级开发者之路”。你从底下开始,一直向上面一层前进。蓝色的层是独立于平台的层。其他颜色的层是特定于平台的层。即使你的平台不在这里面,你也可以自己把它添加上。

如何成为一个专家级开发者 
从语言上升到平台,再到平台独立的技能,用这种方式来成为一个专家级的开发者

  你不得不针对你的行业,你的公司和你的平台添加具体的工具。我无法一次性的为每一个人做这件事情。

  找出你应该学习什么的一个好方法是看招聘广告。看看他们通常需要什么工具和技术?读一下在线的软件杂志。看看他们谈论的最多的是什么技术?浏览一下论坛,看看人们问的最多的问题是什么?还有,人们讨论的最多的是什么技术?换句话说,什么会成为将来的热点?

  关于作者

  作者Jakob Jenkov是一名资深的独立软件开发者,同时也是部分学科的科学家、哲学家以及企业家。

  原文作者:Jakob Jenkov        周雪峰译

  原文地址:http://tutorials.jenkov.com/software-as-career/how-to-become-an-expert-developer.html

0
0
标签:程序员

程序人生热门文章

    程序人生最新文章

      最新新闻

        热门新闻