How to Become an Expert Developer

By Jakob Jenkov

I've been asked several times about how to become an expert developer, so I decided to finally answer this question to the best of my ability. Of course there is no single path to expertize that works or is right for everyone. It depends a lot on what industry you are developing software for, and what tools your company uses etc. Anyways, in this text I'll present a general "path" to expertize which you can adapt to your own situation.

This text contains my view of how to become an expert developer. If you have anything to add, correct, clarify, suggest etc. I'd be happy to hear from you. Go to the About page and find an email address, and send me your feedback.

Keep in mind as you go through this text, that there is a difference between being an expert, and being perceived as an expert. Lots of people are being promoted as experts, who really aren't. But, if people believe they are, they still make lots of money, being only mediocre. Additionally, there are many experts that nobody knows are experts. If you truly are an expert, your next move would be to also be perceived as an expert. How to become that is out of the scope of this text though. That's a different story about personal branding etc.

What is an "Expert", and How Long Time Does it Take to Become One?

Before I start discussing how to become an expert, let me spend 30 seconds on what an expert is, and how long time it takes to become one.

No, you are not an expert after 3 months of using a skill, nor after 3 years. According to the book "Outliers" by Malcom Gladwell, it takes 10.000 hours on average to become a true expert. A virtous if you like. 10.000 hours! That's 10 hours a day, every day, for 3 years. Or, more likely, 5 hours a day, 200 days a year, for 10 years. 10 years!

Along this claim, I've noticed that I believed I was an expert or sernior developer already after about 3 years of experience. Now, in 2010 with about 10 years of experience, I've learned how much there is to know, and how much I still don't know, and now I don't feel like such an expert anymore.

Additionally, the industry (Java enterprise development) has changed a lot over the last 10 years, so the skill I used to master, are not all that "cool" anymore. So even if you are an expert, you may find yourself becoming obsolete, and having to start over.

One more thing: You are seldomly an expert in everything, meaning you may be better than person B in one skill, and person B may be better than you in another skill. It's not like you are either better in every skill than someone else, or worse. You can almost always learn something from everyone. Several developers I have met act as if they know everything best, even when the clearly don't.

In fact, this is often a way to spot a noob. The believe they know it all, and will argue to death either online or offline. They will argue in absolutes, like "This is ALWAYS better than that", or "This is THE way to things" etc. Experts rarely do that. They know, that it all depends on situation, skills your developers have, tools chosen by your company, company policies, personal preferences etc. Inexperienced developers (and people in general) tend to believe the world is black and white. Experts know, it's full of gray scales, and even lots of additional colors and shades.

How to Become an Expert

For most skills you need to learn, there are four steps that will help you become an expert. Most often you will go through these steps in sequence, yet with iterations up and down the steps on the way too. Here they are:

Learn it

Do it

Discuss it

Teach it

Learn it

Before you can master a skill you must learn it in theory. You can do this via books, tutorials, via education, or by messing around with it.

Do it

Once you have learned the skill in theory, you need to apply the skill in reality. By applying your skill in reality, you learn where the theory you learned is right, and where it is wrong. Yes, often universities will teach you theory that doesn't work in reality, or that doesn't apply in your situation.

Discuss it

Once you have used your skill for a longer period, and find that you were able to solve pretty much any problem thrown at you, which required this skill, it is time to discuss the skill with other experienced people. Discuss what the best ways to apply the skill is, where the limits of the theory are, what could be added etc. In short, discuss how to push the skill even further (e.g. an API. How to make it better / different etc.).

Through discussion you will learn a lot from other people, even if you thought you new it all.

Teach it

Teaching your skill to others is a really great way to polish the last corners of your skill. There may be many things to just do, without thinking about why you do them like that. Having to explain your ways and methods forces you to think about why you do what you do.

Additionally, there may be corners of your skill that you have never needed to master (say, corners of the web service specification). Having to teach your skill will force you to also master these corners too, making you better than you were before.

How to Become an Expert Developer

Now that I've talked about becoming an expert in general, I'll talk a bit more about how to become an expert developer.

As a developer you will most likely be developing software for a specific industry (at least for a while), and using a specific platform. If not, if you are switching tools and industry constantly, like some web developers do, you will most likely never become a real expert. You will become a Jack-of-All-Trades, which is also useful in some situations. If you are not focused on platform and industry, and you want to become an expert, you need to focus.

I started my career in 1998 doing web applications, and I found myself constantly changing tools, meaning I didn't really become good a the tools. I was just fighting to learn new tools all the time. Then I decided to focus on an object oriented language, and a platform, and chose Java. .NET was not yet out then. Since 1999 I have worked with Java only.

On your path to expertize, you will have to chose a platform, and possibly an industry too. Industry is less important, but having business domain knowledge really strengthens your profile.

When learning a platform you will start out with the language. For instance, the Java language. After the language you need to learn the platform (all the API's and tools). In Java, the platform is divided in two: The standard edition and the enterprise edition.

Once you begin to master your platform, you should start learning platform independent skills, like design patterns, distributed system design, architecture, usability etc. As you get better, you will spend more and more time learning these skills. This is a good thing. These skills are more easily transferable to a new technology platform.

Finally, you may move away from software development all together, moving into different business areas like project management, an architect job etc. Just remember, that once you stop using your developer skills, you will slowly stop being an expert.

Here is a diagram of your "path to expert developer". You start at the bottom, and move up the layers. The blue layers are platform independent layers. The other colored layers are platform specific layers. Even if your platform isn't on here, you would probably be able to fill it in yourself.

图片发自简书App


The learning path from language, up through platform, to platform independent skills, on the way to becoming an expert developer.

You have to fill in the concrete tools, techniques etc. for your industry, your company, and your platform. This is not something I can do once and for all, for everyone.

A good way to find out what you should learn is to look at job ads. What tools and techniques are they requiring most often? Read software magazines online. What technologies are they talking most about? Read forums. What technologies are people asking most questions about? And, what technologies are people buzzing most about? In other words, what will become hot tomorrow?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,729评论 6 517
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,226评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 169,461评论 0 362
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,135评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,130评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,736评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,179评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,124评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,657评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,723评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,872评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,533评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,213评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,700评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,819评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,304评论 3 379
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,876评论 2 361

推荐阅读更多精彩内容