程序員的八重境界

from:  http://blog.csdn.net/dc_726/article/details/77728729

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

下面就簡單翻譯一下,說是翻譯,沒有逐字逐句。並且加了一些本身想說的話,主要是傳達一下做者的主要想法。另外倒排了一下八個Level的順序,這樣讀起來可能更有意思。但願你們閱讀愉快。web


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?api

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

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


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

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

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


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?

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

相關文章
相關標籤/搜索