阅读更多

26顶
3踩

编程语言

原创新闻 如何成为一名专家级的开发人员

2010-11-22 12:31 by 见习编辑 jobbole 评论(11) 有14755人浏览

        编者按:原文作者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

  Via:Jenkov 编译:伯乐在线 敏捷翻译组 @关关

  如需转载,但请注明文章来源和超链接等版权信息,谢谢合作!

  • 大小: 31.2 KB
  • 大小: 20.9 KB
来自: www.jobbole.com
26
3
评论 共 11 条 请登录后发表评论
11 楼 daveforever 2010-11-29 14:04
水不在深,有龙则灵。
10 楼 moonlitsky 2010-11-25 14:14
其实文章开头的图片已经明确的告诉了我们:用苹果,变专家。
9 楼 anry513 2010-11-25 12:35
人云亦云的人是不可能称为专家的
8 楼 Liweihua 2010-11-25 11:20
都是浮云~
7 楼 hypercube1024 2010-11-25 09:20
zwm 写道
突然想到了一位小伙说他精通JAVA和ORACLE,何为精通?

别人怎么说是别人的自由,要大家认为精通就是精通

6 楼 徐风子 2010-11-25 09:09
同样是讲练习一万小时,感觉这篇文章要好得多:
http://www.geekonomics10000.com/519
5 楼 wenty09 2010-11-24 22:35
你从最低端开始,逐层上升。蓝色层表示独立于平台的技能。其他颜色层表示特定的平台。即便下图中并没有你的平台,你也可以自行添加。
zwm 写道
突然想到了一位小伙说他精通JAVA和ORACLE,何为精通?

嗯,我也遇见过。最后还让他打败了~~
4 楼 tiger.hu 2010-11-24 21:06
还需努力
3 楼 hantsy 2010-11-24 19:47
以前的公司的总架构师都不知道什么 Glassfish。。。
2 楼 tieshow 2010-11-24 18:32
java三年了,我才发现什么是真

深入理解计算机系统
算法导论
TCP/IP详解
1 楼 zwm 2010-11-24 16:48
突然想到了一位小伙说他精通JAVA和ORACLE,何为精通?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

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

    常有读者咨询他,“怎么才能成为一位专家级的开发人员?”(这个“专 家”不是头衔,应是指硬实力,“成为专家”和“被视为专家”是两码事)。所以他在下文中给出了相关建议。另外,他也提醒到,这些建议因人而异、...

  • 如何成为一名专家级的开发人员(转)

    如何成为一名专家级的开发人员编者按:原文作者Jenkov是一位丹麦资深开发人员,从事软件开发已有十多年。常有读者咨询他,“怎么才能成为一位专家级的开发人员?”(这个 “专家”不是头衔,应是指硬实力,“成为...

  • 如何成为一名专家级的开发人员(2)

    如何成为一名专家级的开发人员(2)2010-11-22 12:06:41 来源:jobBole.com 【大 中 小】 评论:0 条 我要投稿 收藏本文 分享至微博站长交易(http://jy.chinaz.com)友情链接交换 虚拟主机评测+IDC导航=IDC123.COM ...

  • 如何成为一名专家级的开发人员(转载)

    如何成为一名专家级的开发人员编者按:原文作者Jenkov是一位丹麦资深开发人员,从事软件开发已有十多年。常有读者咨询他,“怎么才能成为一位专家级的开发人员?”(这个“专家”不是头衔,应是指硬实力,“成为专家...

  • 如何成为一名专家级的开发人员——读后总结

    今天在CSDN首页上看了一篇文章:如何成为一名专家级的开发人员 文章相当不错,感触很深,总结一下: 1、专注。要选择一个平台,一个行业,然后在这个领域内专注一段时间(最少要6年)。我现在应该是linux 上C/...

  • 如何成为一名专家级的程序员

    如何成为一名专家级别的程序员,在很大程度上取决于你开发的软件和你所处的行业,以及你所在公司使用的工具等等。对于本文讲的一些方法,你可以选择适合自己的情况。本文仅为个人观点,如果各位有任何补充或建议,...

  • 成为一名更好前端开发人员的9个技巧

    译者注:本文作者给读者支了9个技巧帮助读者成为一名更好的前端工程师,如果你想对自己的职业生涯有一个好的规划,或者看看自己还有哪些不足,不妨看一下这篇文章吧。以下为译文。我应该使用这个插件还是那个库? 这...

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

    有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马。不同的路都能走向成功。...如果对某一种或几种技术非常感兴趣,并且能够持续钻研,经过一定时期的积累,你可以逐渐成长为专家级程

  • 初级、中级和高级开发人员之间的差异

    朋友们,我是床长!...你可能会很疑惑,初级、中级和高级开发人员之间的差异究竟在哪里? 照片由 Clem Onojeghuo 发表在 Unsplash 上 你是初级、中级或高级开发人员,不仅仅取决于你的编程经验有多少年...

  • 高级开发人员可以向初学者学习的内容

    在过去的几年里,我拥有与相当多的初学者一起工作和指导的奢侈。虽然我显然见证了我相当一部分编程不, 但事情并不像看起来那么黑白分明。在初学者中,我一直看到一些模式和行为。而有些...

  • 程序员 如何成为一名专家

     编者按:原文作者Jenkov是一位丹麦资深开发人员,从事软件开发已有十多年。常有读者咨询他,“怎么... <br /> 在我开始讨论如何成为一名专家之前,我们一起来花上30秒时间,看看专家的定义,还有成为专

  • 开发人员应具备的13种技术技能

    在本文中,我们将讨论您作为开发人员或打算成为一名优秀的开发人员应具备的一些重要技术技能。 1、数据结构和算法 该技能是大多数公司检查问题解决和编码技能的头等要务。如果您知道如何组织数据以及如何将其用于...

  • Python项目-自动办公-56 Word_docx_格式套用.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 《松鼠》生态性课堂体验教案.docx

    《松鼠》生态性课堂体验教案

  • Java系统源码+智慧图书管理系统

    Java系统源码+智慧图书管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

  • 基于ssm+jsp实现的超市管理系统高级版v2-lw.zip

    项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

  • 《松鼠》教学方案.docx

    《松鼠》教学方案

  • 基于ssm的计算机课程实验管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    学生角色 学生用户在系统的前台界面可以浏览站内新闻、系统公告等公共的信息,在进行了注册和登录等操作后可以进入个人后台管理界面,对自己的个人信息进行管理,还可以进行实验成绩查看和实验交流等操作。 教师角色 教师用户也可以正常使用本系统的前台功能,但最主要的功能还是在个人后台界面中。在教师的个人后台界面中,首先教师可以管理自己的个人信息,还可以对学生进行实验任务书下达,对学生的实验成果和实验成绩管理等操作。 管理员角色 系统管理员可以管理整个系统的数据,比如可以管理教师和学生的个人资料,对违反了网站及学校实验室规定的同学可以进行删除。除了管理教师和学生的信息外,管理员用户还可以对公告信息及新闻信息等进行管理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

Global site tag (gtag.js) - Google Analytics