`

如何成为一名专家级的开发人员

阅读更多

        编者按:原文作者Jenkov是一位丹麦资深开发人员,从事软件开发已有十多年。常有读者咨询他,“怎么才能成为一位专家级的开发人员?”(这个“专 家”不是头衔,应是指硬实力,“成为专家”和“被视为专家”是两码事)。所以他在下文中给出了相关建议。另外,他也提醒到,这些建议因人而异、因所用技术 而异,并非适合所有人。



  什么是“专家”?成为“专家”需要多长时间?

  在我开始讨论如何成为一名专家之前,我们一起来花上30秒时间,看看专家的定义,还有成为专家需要多长时间?

  在使用某一技能三个月后,你还不是专家,即便使用时间是三年,你还不是。马尔科姆·格莱德威尔在《异类》一书中指出,成为一名真正的专家,需要 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中,有两大平台:标准版(J2SE)和企业版(J2EE)。(编者注:还有微型版(J2ME))

  一旦你开始掌握选择的平台,你应当开始学习独立于平台的技能,比如模式设计、分布式系统设计、系统机构和可用性等等。在你取得进步时,你将要花更多的时间来学习这些技能。这是好事。因为这些技能不受平台限制,更容易转移新的技术平台。

  最后,你或许会脱离软件开发,转入到诸如项目管理或架构师的完全不同的业务领域。请谨记,一旦你停止使用你的开发技能,你的专家之路将更加长远了。

  下面有一张关于你的“专家之路”的图表。你从最低端开始,逐层上升。蓝色层表示独立于平台的技能。其他颜色层表示特定的平台。即便下图中并没有你的平台,你也可以自行添加。



 

 

 

(图:“专家之路”:语言 -> 平台 -> 独立于平台的技能)


  你必须根据你所处的行业、所在的公司和所使用的平台来填入具体的工具和技术等。这些事情,我无法一劳永逸地为各位一次性做好。

  怎么知道自己该学习什么,查看招聘广告不失为一个好办法。看看最常用的工具和技术?阅读一些在线软件杂志,看看行业人士讨论最多的技术是什么?泡相关论坛和博客,看看他们最常问的问题是什么?还有,人们谈论最多的技术是什么?总之一句话,什么技术是明天的热点?

 

转载:http://www.jobbole.com/entry.php/337

  • 大小: 20.9 KB
分享到:
评论

相关推荐

    _Microsoft .NET开发人员职业规划蓝图和学习路线图

    ### Microsoft .NET开发人员职业规划蓝图与学习路线图 #### 第一部分:Microsoft .NET平台介绍 ...通过遵循上述蓝图和路线图,不仅可以成为一名优秀的.NET开发人员,还能为未来的职业发展打下坚实的基础。

    Oracle专家高级编程-Expert_one-on-one

    《Oracle专家高级编程-Expert_one-on-one》是Oracle技术领域中一本备受推崇的书籍,它深入浅出地探讨了Oracle数据库...通过阅读和实践书中的内容,读者可以增强自己在Oracle领域的专业能力,成为一名真正的Oracle专家。

    2012-2013中国嵌入式开发从业人员调查报告(最终版)

    ### 2012-2013中国嵌入式开发从业人员调查报告分析 #### 调查背景 本报告是对2012年至2013年间中国嵌入式开发行业的全面调研,旨在深入了解该领域的现状和发展趋势。随着移动互联网、物联网、云计算等新兴技术的...

    JRules6面向架构师和开发人员.rar

    它具有直观的用户界面,使得业务专家可以独立于开发人员定义和修改业务规则,实现了业务逻辑和软件工程的解耦。 **2. 架构师视角** 对于架构师而言,JRules6提供了集成到现有系统的能力,如SOA(面向服务架构)或...

    Head First软件开发 中文版

    它不仅传授知识,更注重学习者如何更有效地学习,最终能够成为一个优秀的软件开发人员。读者在完成本书的学习之后,将能够掌握自动化构建、版本控制、测试驱动开发等关键技能,并能熟练运用设计模式,从而有能力开发...

    一个优秀的ASP.NET(及WinForm)开发人员需要知道

    ### 优秀 ASP.NET 及 WinForm 开发人员所需掌握的核心知识点 ...通过掌握以上知识点,一个 ASP.NET 或 WinForm 开发人员不仅能够熟练地拖放控件,还能够在复杂的项目中发挥更大的作用,成为一名真正的专家级开发者。

    敏捷游戏开发(Scrum)

    同时任命一名经验丰富的开发人员担任Scrum Master,他负责监督整个Scrum过程的执行情况,并协助解决团队遇到的问题;剩下的团队成员则构成了开发团队,共同负责游戏的开发工作。 - **Sprint规划**:接着,团队确定...

    Linux下的开发入门与难点攻克

    通过遵循以上步骤,初学者可以在实践中逐步积累经验,最终成为一名合格的Linux开发人员。学习过程中,遇到难题时查阅书籍、在线资源或求助社区,都是有效的学习策略。随着技能的提升,可以尝试阅读系统脚本,理解其...

    access开发平台示例

    通过“access开发平台示例”,你将有机会实践这些概念,并逐步成为一名精通Access开发的专家。这不仅能让你在工作中表现出色,也可能带来更多的职业发展机会。所以,充分利用这些免费资源,让自己的技术栈更加丰富吧...

    一个编程人员必须做到的10件事

    无论是初学者还是有经验的开发人员,都需要不断学习和提升自己来适应技术的变化。下面详细介绍为了从初级程序员跃升至中级乃至高级水平,需要做到的10件关键事情。 #### 1. 学习一门实用的编程语言 对于任何程序员...

    微软MSDNWebcast讲座《软件开发这点事儿》系列-01软件开发概述PPT

    通过本课程的学习,学员不仅能够掌握软件开发的基本技能和知识,还能了解到作为一名优秀的软件开发人员所需要具备的职业素质和发展方向。这对于初学者来说是非常宝贵的经验分享,有助于他们在软件开发领域取得成功。

    论文《火电厂实时故障诊断专家系统的开发》

    因此,开发一种能够整合计算机管理和控制一体化的实时故障诊断专家系统显得尤为重要。该系统不仅可以提高诊断效率,还能降低对专业技术人员的依赖程度。 #### CLIPS与VC++的混合编程 为了实现在VC++中调用CLIPS...

    JAVA EE WEB开发实例精解

    Java EE(Java Platform, Enterprise Edition)是Java平台的企业版,它是...同时,学习者需要结合市场趋势和企业需求,不断提升自己的技术能力,并积极参与社群交流,以便更快地成为一名合格的Java EE Web开发工程师。

    开发人员手册:关于如何成为专业的WebMobile App开发人员的自以为是的指南

    《开发人员手册:关于如何成为专业的WebMobile App开发人员的自以为是的指南》 在当前数字化时代,Web和移动应用开发已经成为一个充满活力且需求旺盛的领域。想要在这个行业中崭露头角,你需要掌握一系列关键技能和...

    Android平台开发之旅(第2版)].汪永松.扫描版[电子书

    综上所述,读者在阅读《Android平台开发之旅(第2版)》这本书时,可以系统地学习到成为一名Android开发者的必备知识和技能,对初学者而言,是一本非常好的入门书籍,对于有一定基础的开发者,也可以通过这本书来...

    管理信息系统开发过程中的沟通.doc

    开发人员需要深入了解客户的思维模式,确保需求表达的“清楚”和“完整”。利用文字、数字、图形、表格等多种沟通工具可以帮助客户更好地表达需求,并使系统设计更加清晰。 2. 派遣具备双方业务和技术理解能力的...

Global site tag (gtag.js) - Google Analytics