程序员的八种境界

今天对于广大程序员来说是个特殊的日子,网上有关于程序员节的来源,感兴趣的可以看看;

本来昨天在stream上买的Fall Guys: Ultimate Knockout当做节日礼物,没想到今天账号就被冻结了,第一反应就是 fuck take me money, 但愿可以申诉回来吧。

程序员的八种境界

言归正传,今天写篇关于程序员这一行也分三六九等境界文章,看看我们属于哪一档的,只有定位好自己的位置才能更好的前进。

软件开发不只写代码那么简单——程序员的8种境界

原文:

Have you ever gotten that classic job interview question, "where do you see yourself in five years?" When asked, I'm always mentally transported back to a certain Twisted Sister video from 1984

程序员的八种境界

You want to rock, naturally! Or at least be a rockstar programmer. It's not a question that typically gets a serious answer – sort of like that other old groan-inducing interview chestnut, "what's your greatest weakness?" It's that you sometimes rock too hard, right? Innocent bystanders could get hurt.

But I think this is a different and more serious class of question, one that deserves real consideration. Not for the interviewer's benefit, but for your own benefit.

The "where do you see yourself in five years" question is sort of glib, and most people have a pat answer they give to interviewers. But it does raise some deeper concerns: what is the potential career path for a software developer? Sure, we do this stuff because we love it, and we're very fortunate in that regard. But will you be sitting in front of your computer programming when you're 50? When you're 60? What is the best possible career outcome for a programmer who aspires to be.. well, a programmer?

What if I told you, with tongue firmly planted in cheek, that there were Eight Levels of Programmers?

  1. Dead Programmer

    This is the highest level. Your code has survived and transcended your death. You are a part of the permanent historical record of computing. Other programmers study your work and writing. You may have won a Turing Award, or written influential papers, or invented one or more pieces of fundamental technology that have affected the course of programming as we know it. You don't just have a wikipedia entry – there are entire websites dedicated to studying your life and work.

    Very few programmers ever achieve this level in their own lifetimes.

    Examples: DijkstraKnuthKay

  2. Successful Programmer

    Programmers who are both well known and have created entire businesses – perhaps even whole industries – around their code. These programmers have given themselves the real freedom zero: the freedom to decide for themselves what they want to work on. And to share that freedom with their fellow programmers.

    This is the level to which most programmers should aspire. Getting to this level often depends more on business skills than programming.

    Examples: GatesCarmackDHH

  3. Famous Programmer

    This is also a good place to be, but not unless you also have a day job.

    You're famous in programming circles. But being famous doesn't necessarily mean you can turn a profit and support yourself. Famous is good, but successful is better. You probably work for a large, well known technology company, an influential small company, or you're a part of a modest startup team. Either way, other programmers have heard of you, and you're having a positive impact on the field.

  4. Working Programmer

    You have a successful career as a software developer. Your skills are always in demand and you never have to look very long or hard to find a great job. Your peers respect you. Every company you work with is improved and enriched in some way by your presence.

    But where do you go from there?

  5. Average Programmer

    At this level you are a good enough programmer to realize that you're not a great programmer. And you might never be.

    Talent often has little do do with success. You can be very successful if you have business and people skills. If you are an average programmer but manage to make a living at it then you are talented, just not necessarily at coding.

    Don't knock the value of self-awareness. It's more rare than you realize. There's nothing wrong with lacking talent. Be bold. Figure out what you're good at, and pursue it. Aggressively.

  6. Amateur Programmer

    An amateur programmer loves to code, and it shows: they might be a promising student or intern, or perhaps they're contributing to open source projects, or building interesting "just for fun" applications or websites in their spare time. Their code and ideas show promise and enthusiasm.

    Being an amateur is a good thing; from this level one can rapidly rise to become a working programmer.

  7. Unknown Programmer

    The proverbial typical programmer. Joe Coder. Competent (usually) but unremarkable. Probably works for a large, anonymous MegaCorp. It's just a job, not their entire life. Nothing wrong with that, either.

  8. Bad Programmer

    People who somehow fell into the programmer role without an iota of skill or ability. Everything they touch turns into pain and suffering for their fellow programmers – with the possible exception of other Bad Programmers, who lack even the rudimentary skill required to tell that they're working with another Bad Programmer.

    Which is, perhaps, the hallmark of all Bad Programmers. These people have no business writing code of any kind – but they do, anyway.

These levels aren't entirely serious. Not every programmer aspires to the same things in their career. But it's illuminating to consider what a programmer could accomplish in ten years, twenty years, or thirty years – perhaps even a lifetime. Which notable programmers do you admire the most? What did they accomplish to earn your admiration?

In short, what do you wanna do with your life?

译文:

8境界

在求职的时候,你也许会被问到这样的问题:你对自己未来5年的职业是怎样规划的?
对于这样问题的回答不只是为了应付面试官,而是为了你自己。在心中你究竟想过怎样的生活?作为一个程序员,最完美的职业生涯规划应该是怎样的?

在此,我通过书籍整理了大致8种境界:
1.不朽的程序员
这个是最高的境界!总结一句话就是:人不在江湖,但江湖仍然有他的传说。你可能没有见过这些人,但是在书籍中你可能读到过他的名字,你可能正在读他发表的论文,或者你正在使用一些基础的技术,而这些技术正是通过他的论文实现的或者就是由他实现的。
他们在生前可能获得过图灵奖,成为计算机博物馆中的一个永久收藏,其他众多的程序员都在学习他的作品。
抱歉,虽然很残忍,但是我想说几乎大部分程序员在一生中都无法达到这个境界。

2.成功的程序员
总结一句话就是:自己有很强的编程能力,并且具有很强的商业头脑,将代码商业模式化。所以他们运营着一个不错的公司,甚至控制了整个产业链。他们拥有绝对的*,可以做任何自己想做的事情。
这一境界的程序员,相比于编程能力,更多的是需要商业上的才能。

3.知名程序员
达到这一境界的程序员也不错。他们可能在一家非常知名的大型技术公司工作,也可能在一家很有影响力的小公司或者是在一个很有希望的创业团队工作。
不管怎么样,其他的程序员都或多或少听说过他们,并且他们在自己所在的领域有着积极的影响。

4.胜任的程序员
首先,你的能力是你在工作中游刃有余,你从来不会为得到一份满意的工作而发愁。你的同事也非常尊敬你。每一家你曾经工作过的公司都因为你的加盟而在某些方面得到了提升。

5.普通的程序员
这个境界了,你基本上能够应付一般的编程工作。由于天资所限,他们很难成为杰出的程序员。
很残忍,大部分进入这个领域的人也就到此止步了。
但是,天赋跟成功的关系并不大。如果你有敏锐的商业嗅觉和不错的人际交往能力,你依然可以变得很成功。如果你考这一行当过上了不错的生活,这已经说明你很才了。
人贵有自知之名。普通你的能力都会比你自认为的要低。缺乏天赋并不是什么大不了的事情。要勇敢一点,发掘自己的特长,并且充分加以发挥。

6.业余程序员
这个群体一般是一些很有前途的学生或实习生,也可能正在参与某些开源项目,或者利用个人闲暇时间开发一些好玩的应用程序。他们是一群很有想法,充满激情的人。
这个境界的程序员可以通过自我提升,迅速地胜任程序员这个职业。

7.低调的程序员
还有一些坊间流传的比较有个性的程序员。他们很有能力但是没什么令世人瞩目的成就。他们可能服务于某家大型公司。写代码仅仅是份工作而已,并非他们生活的全部。

8.烂程序员
总结一句话:没有金刚钻,却偏偏拦了瓷器活。这个级别的程序员技能极其匮乏,他们通常是阴差阳错地干上这一行的。他们所做的任何事情都会给他们的同事带来痛苦和灾难。
如果你是这样的,你是否有采取行动改善自己,或者远离这个行业。

举例

不朽的程序员:
Dijkstra
这样表示,你一定不知道。
如果你学过数据结构,是否记得其中的最短路径算法就是以他命名的?
如果你学过操作系统,是否记得有一个调度算法——银行家算法?

Ken Thompson
Dennis Ritchie

这两位就不用介绍了。大学时代你的第一门语言就是他们发明的。很多语言都是以此为基础在上面进行的扩展。
unix系统的发明者,当年火星计划的后继者。

knuth
如果你学过算法,你可能知道他。你是否读到过《具体数学》,《研究之美》这些书籍。

参考文章:

https://blog.codinghorror.com/the-eight-levels-of-programmers/

https://blog.csdn.net/happydeer/category_288658.html

https://yunchangwang.github.io/