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

原创
开发 前端
作为一个开发者,你很可能正在使用一个特定的平台,为一个特定的行业开发软件。如果不是这样,如果你经常要选择工具和行业,那么你很可能从来都没有成为一个真正的专家,如何成为一个专家级的开发者呢?

【51CTO译文】如何成为一个专家级的开发者?怎样才能寻找到成为开发高手的密钥?这样的问题我们不止一次的提到过,当然,适合大家的专家之路并非只有一条。它取决于你为其开发软件的行业是什么,和你的公司使用的工具是什么等等。

这篇文章会提供一条一般性的,可以适合你自己情况的专家之路,其中包括文章作者的一些观点——关于如何成为一个专家级的开发者。

51CTO推荐阅读:充满荆棘的专家程序员之道

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

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

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

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

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

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

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

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

如何成为一个专家

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

1,学习它

2,实践它

3,讨论它

4,传授它

学习它

在你掌握一项技能以前,你必须首先学习它的理论。你可以通过图书,手册,培训来学习理论知识,或综合运用这些途径来学习理论知识,在51CTO之前报道过的《为什么5%的技术人员开发效率是其他95%的20倍?》的文章中,也曾提到过这一点。

实践它

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

讨论它

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

传授它

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

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

#p#

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

现在,我已经谈了如何成为一个普遍意义上的专家,下面我来谈一谈如何成为一个专家级的开发者。作为一个开发者,你很可能正在使用一个特定的平台,为一个特定的行业开发软件。如果不是这样,如果你经常要选择工具和行业,就像一些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

【本文是51CTO精选译文,转载请务必标明作者和出处!】

【编辑推荐】

  1. 程序员的十大技术烦恼
  2. 充满荆棘的专家程序员之道
  3. 为什么5%的技术人员开发效率是其他95%的20倍? 
责任编辑:王晓东 来源: 51CTO.com
相关推荐

2015-03-19 14:56:08

程序员专专家级的程序员

2009-09-11 08:44:36

2015-09-01 09:53:04

Java Web开发者

2013-02-20 15:10:56

2014-04-17 10:42:50

DevOps

2024-02-28 07:48:05

Rust项目框架

2020-03-31 09:47:04

Vue开发代码

2011-12-27 09:31:13

程序员

2012-08-27 09:31:35

创业程序员

2014-05-22 10:43:26

移动开发者优秀

2015-07-22 16:08:46

OpenStack开源贡献代码

2016-01-21 10:58:41

Node.js开发者

2013-07-25 17:28:02

2019-06-27 10:15:46

架构代码项目

2014-02-27 09:39:30

PHP技巧

2009-07-10 11:27:00

专家级程序员

2014-08-01 10:24:11

2015-06-05 09:15:37

移动开发者

2023-12-06 17:57:07

开发云服务

2011-10-10 14:56:24

Android开发者
点赞
收藏

51CTO技术栈公众号