程序員的八重境界

看到一篇有趣的文章The Eight Levels of Programmers。以前似乎看過不少這種程序員的多少個級別、境界,但這篇語言很風趣,而且分類比較細化,讓人覺得挺合情合理、無法反駁的。絕大部分人想成爲一名優秀程序員的人,通過努力可以避免1,因爲在編程上的追求避開了2,最終可能都停留在4或5。但努力追尋是沒有錯的,不然沒有夢想和鹹魚有什麼分別:)。注意一點,作者並沒有無腦地批判誰,並沒有說會編程、代碼寫得好就怎樣,其他都是不求上進、不務正業。他全文一直都在客觀強調一點:每個人的追求不同,想好自己想要活成什麼樣子,然後就去努力

下面就簡單翻譯一下,說是翻譯,沒有逐字逐句。而且加了一些自己想說的話,主要是傳達一下作者的主要想法。另外倒排了一下八個Level的順序,這樣讀起來可能更有意思。希望大家閱讀愉快。


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?

你遇到過這種典型的面試問題嗎:“你覺得你五年後會在哪?”每當被問到時,我總是Twisted Sister視頻裏的片段。當然,你想成爲大牛!至少成爲一個明星程序員。所以這種問題通常都得不到嚴肅的回答,就像另一個常見的問題,“你最大的弱點是什麼”。但我覺得有一類問題是值得嚴肅思考的,不是爲了面試,而是爲了你自己。像“你覺得你五年後會在哪?”這種問題,一般面試者都會準備好一些比較圓滑和恰到好處的答案。但一個程序員真正可能的職業發展路徑纔是真正應該擔憂的問題。當你50歲了你依然坐在電腦前編程?然後60歲?對於一個渴望成爲程序員的程序員,什麼纔是他最可能的職業終點呢?要是我現在告訴你程序員有八重境界你會怎麼樣?


1.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.

沒有足夠技巧和能力的人被分配程序員的角色,(於是悲劇就發生了)。每一件他們接手的事情都變成了對他們同事的痛苦和折磨。唯一的例外就是他們的同事也同樣地糟糕,糟糕到無法區分他們也在跟糟糕的程序員共事,這可能是所有糟糕程序員的標誌。這些人不應該寫代碼,但是他們卻的確寫了……


2.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.

典型的程序員,自大自滿但又不夠出色。可能在大公司上班,但卻僅僅把編程當作一份工作,而非生活的全部,甚至大部分。當然這也沒什麼錯,只是追求不同


3.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.

業餘程序員與前兩者不同,他們喜歡編碼,是自願做這一行的。他們可能是很有潛力的學生或實習生,或者業餘時間爲開源項目或自己的小網站做貢獻。他們有潛力也有熱情,這是好事,達到這一級後就能很快成爲一名不錯的程序員。


4.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 to 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.

你已經足夠好了,但不夠出色,你可能永遠也不會…… 天賦通常與成功沒有太大關係,你可以因爲商業頭腦和人際關係成功。如果你是一名普普通通的程序員,但是生活得還不錯,那說明你挺有天賦,只不過不是在編碼上。自省的價值遠大於你想象,所以勇敢面對,沒有編碼天賦並沒有任何錯。想清楚你擅長什麼,並一路追尋,大膽地,這就夠了


5.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?

作爲軟件工程師,你已經有了一個堪稱成功的職業生涯。你的經驗、技巧在市場中很搶手,你從來都不用爲找工作發愁。你的同行們羨慕你,每家你工作過的公司都因爲你的存在而有了改變。但是,你還能更進一步嗎?


6.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.

這已經是一個非常不錯的位置了,你在程序員圈子裏很有名氣,但並不意味着你很有錢。你可能也在爲某個著名的大公司或非常有影響力的小創業公司工作。不管哪種方式,其他程序員都聽說過你,你在這個領域有着足夠的影響力。


7.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: Gates, Carmack, DHH

這一級別的程序員在名氣和商業方面都很成功,甚至可能整個行業爲圍着你的代碼轉。他們有足夠的自由,決定自己想做什麼。大部分程序員都想成爲他們,但這需要商業頭腦多於編程技巧。這一級別的例子有:比爾蓋茨、卡馬克(Doom引擎、計算機圖形學)、DHH(RoR之父)。


8.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: Dijkstra, Knuth, Kay

現在就到了最高境界了。你的代碼已經超越了你的生命,在你死後依然被人學習。你是整個計算史的一部分,其他程序員都在研究你的代碼和文章。你可能得過圖靈獎,或寫過影響深遠的論文,或發明了多項改變編程方式的基礎技術。你甚至不只有維基百科的條目,還有專門的網站介紹你的生平和成就。非常非常少的人能在一生中達到這個境界。例子有:迪傑斯特拉(結構化編程、算法)、唐納德(TAOCP)、Kay。

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?

這些級別並不是絕對的,也不是所有程序員畢生都在追求同樣的東西。但作爲程序員,努力思考未來十年、二十年、三十年甚至一輩子是值得的、有啓發的事。想想你認識的程序員裏誰最牛?他們是如何得到別人的尊重和敬仰?一句話總結就是:你究竟想要活成什麼樣子?

發佈了348 篇原創文章 · 獲贊 1622 · 訪問量 407萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章