原文地址:
http://blogs.techrepublic.com.com/10things/?p=262
10 types of programmers you’ll encounter in the field
10種你會碰到的程序員
Programmers enjoy a reputation for being peculiar people. In fact, even
within the development community, there are certain programmer
archetypes that other programmers find strange. Here are 10 types of
programmers you are likely to run across. Can you think of any more?
程序員素來就被認為是一個奇特的人群。實際上,就算在程序開發(fā)者社群本身之中,也有一些特別的人群能讓其他程序員覺得很奇怪。在這我列出10種你可能遇到過的程序員,你能想出更多么?
#1: Gandalf
#1:甘道夫
This programmer type looks like a short-list candidate to play Gandalf
in The Lord of the Rings. He (or even she!) has a beard halfway to his
knees, a goofy looking hat, and may wear a cape or a cloak in the
winter. Luckily for the team, this person is just as adept at working
magic as Gandalf. Unluckily for the team, they will need to endure
hours of stories from Gandalf about how he or she to walk uphill both
ways in the snow to drop off the punch cards at the computer room. The
Gandalf type is your heaviest hitter, but you try to leave them in the
rear and call them up only in times of desperation.
這種程序員看起來,就像是在《指環(huán)王》里扮演甘道夫的最佳候選人。他(甚至是她)有著快要到膝蓋的胡子,一頂看起來傻傻的帽子,在冬天可能還會穿一件披風
或者是斗篷。對于團隊來說幸運的是,此人對自己工作的熟練程度就像甘道夫一樣。但不幸的是,他們要經(jīng)常忍受甘道夫長達數(shù)個小時的故事的折磨,而內(nèi)容主要是
關于他或者是她是如何不得不在雪地中上山下山,以把打好孔的紙帶送到計算機房。甘道夫類型的程序員是你的究極武器,但是你會總是希望能把他們排到后面,只
在快要絕望的時候才向他們尋求幫助。
#2: The Martyr
#2:烈士
In any other profession, The Martyr is simply a “workaholic.” But in
the development field, The Martyr goes beyond that and into another
dimension. Workaholics at least go home to shower and sleep. The Martyr
takes pride in sleeping at the desk amidst empty pizza boxes. The
problem is, no one ever asked The Martyr to work like this. And he or
she tries to guilt-trip the rest of the team with phrases like, “Yeah,
go home and enjoy dinner. I’ll finish up the next three week’s worth of
code tonight.”
對于任何其它職業(yè)來說,烈士其實就是一個工作狂而已。但是在開發(fā)者的領域,烈士完全進入了另外一個范疇。工作狂至少會回家洗澡睡覺,而烈士們卻會以睡在桌
子底下的空皮薩盒子堆之中為榮。而問題是,根本就沒人要求烈士們像這樣工作。而且他或者她總是想用這樣的措辭來使團隊中的其他人感到內(nèi)疚,“好的,你們回
家吃完飯吧。我會在今晚會完成相當于3個星期的工作量的。”
#3: Fanboy
#3:玩家
Watch out for Fanboy. If he or she corners you, you’re in for a
three-hour lecture about the superiority of Dragonball Z compared to
Gundam Wing, or why the Playstation 3 is better than the XB 360.
Fanboy’s workspace is filled with posters, action figures, and other
knick-knacks related to some obsession, most likely imported from
Japan. Not only are Fanboys obnoxious to deal with, they often put so
much time into the obsession (both in and out of the office) that they
have no clue when it comes to doing what they were hired to do.
小心玩家。如果他或者是她注意到了你,你很有可能就要接受3至4個小時關于龍珠z與高達誰更強、或者是playstation 3 與xbox
360哪個更好的演講。玩家的桌子上總是堆滿了明信片、動作人偶、以及其他各種各樣相關的裝飾品,大部分可能都是從日本進口的。玩家們不光是很難相處,他
們有的時候實在是太多時間在這些東西上(無論是在辦公室內(nèi)外),以至于他們根本就不明白他們什么時候該干老板雇他們做的工作。
#4: Vince Neil
#4:文斯 內(nèi)爾(一個比較有名的搖滾歌手)
This 40-something is a throwback to 1984 in all of the wrong ways.
Sporting big hair, ripped stonewashed jeans, and a bandana here or
there, Vince sits in the office humming Bon Jovi and Def Leppard tunes
throughout the workday. This would not be so bad if “Pour Some Sugar on
Me” was not so darned infectious.
這個40歲的家伙就像是顛三倒四的回到了1984.運動型爆炸頭,發(fā)皺泛白的牛仔褲,還有一條大圍巾。文斯還會在工作時間坐在辦公室哼著Bon
Jovi 和 Def Leppard的歌,這本來也不是很糟,如果《Pour Some Sugar on Me》不是如此的有感染力的話。
Vince is generally a fun person to work with, and actually has a ton of
experience, but just never grew up. But Vince becomes a hassle when he
or she tries living the rock ‘n roll lifestyle to go with the hair and
hi-tops. It’s fairly hard to work with someone who carries a hangover
to work every day.
總體來說,和文斯一起工作是很有趣的,實際上他有豐富的經(jīng)驗,只是永遠長不大而已。但是如果文斯決定用他或者是她的搖滾風格來處理自己的頭發(fā)和生活的時候,情況就會變得很棘手。因為和一個每天都帶著宿醉未醒的人一起工作,相當困難。
#5: The Ninja
#5:忍者
The Ninja is your team’s MVP, and no one knows it. Like the legendary
assassins, you do not know that The Ninja is even in the building or
working, but you discover the evidence in the morning. You fire up the
source control system and see that at 4 AM, The Ninja checked in code
that addresses the problem you planned to spend all week working on,
and you did not even know that The Ninja was aware of the project! See,
while you were in Yet Another Meeting, The Ninja was working.
忍者是你們團隊當中的重要人物,但是卻沒人能意識到這點。就好象傳奇刺客一樣,你不知道忍者是什么時候工作的,但是你總是在第二天早晨發(fā)現(xiàn)他們的成果。于
是你急忙打開源代碼控制系統(tǒng),然后發(fā)現(xiàn)在臨晨4點,忍者提交了一份代碼,解決了一個你已經(jīng)研究了一個星期的問題,而你之前甚至都不知道忍者大人知道你所作
的項目的存在。明白了吧,當你還在一次次的開會的時候,忍者一直在工作。
Ninjas are so stealthy, you might not even know their name, but you
know that every project they’re on seems to go much more smoothly.
Tread carefully, though. The Ninja is a lone warrior; don’t try to
force him or her to work with rank and file.
忍者是如此的隱蔽,你甚至都不知道他們的名字,但是你知道每一個他們參與的項目都進行的更順利。不過,注意點,忍者是孤膽戰(zhàn)士,不要試圖強迫他們在一個嚴格的等級和文檔制度下工作。
#6: The Theoretician
#6:理論家
The Theoretician knows everything there is to know about programming.
He or she can spend four hours lecturing about the history of an
obscure programming language or providing a proof of how the code you
wrote is less than perfectly optimal and may take an extra three
nanoseconds to run. The problem is, The Theoretician does not know a
thing about software development. When The Theoretician writes code, it
is so “elegant” that mere mortals cannot make sense of it. His or her
favorite technique is recursion, and every block of code is tweaked to
the max, at the expense of timelines and readability.
理論家知道一切編程需要知道的東西。他或者是她可以花4個小時去探討一個很冷僻的語言,或者去證明你寫的代碼是如何的不完美并且有可能會在運行的時候多花
3納秒。問題在于,理論家根本就不知道什么叫軟件開發(fā)。當理論家寫代碼的時候,他的代碼是如此的“優(yōu)美”,以至于我們這些凡人根本就看不懂。他或者她最喜
愛的技術就是遞歸,每一個代碼塊都被使用到了極致,而代價就是工程進度和可讀性。
The Theoretician is also easily distracted. A simple task that should
take an hour takes Theoreticians three months, since they decide that
the existing tools are not sufficient and they must build new tools to
build new libraries to build a whole new system that meets their high
standards. The Theoretician can be turned into one of your best
players, if you can get him or her to play within the boundaries of the
project itself and stop spending time working on The Ultimate Sorting
Algorithm.
理論家還很容易分心。一個花一個小時就能完成的工作,理論家們往往需要三個月。因為他們認為當前的開發(fā)工具不夠好,所以他們必須開發(fā)一些新的工具來構建新
的庫從而構建一個全新的系統(tǒng)來迎合他們的高標準。理論家可以成為你最好的團隊成員,前提是你能讓他專注于你們所做的工程本身,而不是把時間都花在究極排序
算法上。
#7: The Code Cowboy
#7:代碼牛仔
The Code Cowboy is a force of nature that cannot be stopped. He or she
is almost always a great programmer and can do work two or three times
faster than anyone else. The problem is, at least half of that speed
comes by cutting corners. The Code Cowboy feels that checking code into
source control takes too long, storing configuration data outside of
the code itself takes too long, communicating with anyone else takes
too long… you get the idea.
代碼牛仔是一種無法阻止的天性。他或者她幾乎總是一個厲害的編程者,并且總是能以別人2至3倍的速度完成工作。問題是,這些代碼至少有一半都靠偷工減料得
來的。代碼牛仔認為把代碼提交到源碼控制系統(tǒng)太麻煩,把配置信息存貯在代碼之外太麻煩,和其它人交流太麻煩……你懂我的意思吧。
The Code Cowboy’s code is a spaghetti code mess, because he or she was
working so quickly that the needed refactoring never happened. Chances
are, seven pages’ worth of core functionality looks like the “don’t do
this” example of a programming textbook, but it magically works. The
Code Cowboy definitely does not play well with others. And if you put
two Code Cowboys on the same project, it is guaranteed to fail, as they
trample on each other’s changes and shoot each other in the foot.
代碼牛仔的代碼就好像意大利面條一樣攪在一起,因為他或者她工作的事如此之快,以至于必要的重夠都沒有做到。很有可能的是,七頁長的核心功能代碼也許看起
來就像是教科書上關于“不要這么做”的示例,而這些代碼居然還神奇的可以運行。代碼牛仔絕對沒辦法和別人一起工作。而且,如果你讓兩個代碼牛仔進入同一個
工程,那這個工程一定會失敗,因為一個總是被另一個人對代碼做的修改而干擾,他們總是拼命的在開槍射擊自己搭檔的腳。
Put a Code Cowboy on a project where hitting the deadline is more
important than doing it right, and the code will be done just before
deadline every time. The Code Cowboy is really just a loud, boisterous
version of The Ninja. While The Ninja executes with surgical precision,
The Code Cowboy is a raging bull and will gore anything that gets in
the way.
當按時完成一個工程比把這個工程做好更重要的時候,把一個代碼牛仔加入進去吧,這個工程會在截至日期之前完成的。代碼牛仔其實就是一個吵鬧版的忍者。只是忍者像做外科手術一樣精準的編碼,而代碼牛仔像一只難以控制的公牛,會把所以擋在它面的東西頂翻。
#8: The Paratrooper
#8:傘兵
You know those movies where a sole commando is air-dropped deep behind
enemy lines and comes out with the secret battle plans? That person in
a software development shop is The Paratrooper. The Paratrooper is the
last resort programmer you send in to save a dying project.
Paratroopers lack the patience to work on a long-term assignment, but
their best asset is an uncanny ability to learn an unfamiliar codebase
and work within it. Other programmers might take weeks or months to
learn enough about a project to effectively work on it; The Paratrooper
takes hours or days. Paratroopers might not learn enough to work on the
core of the code, but the lack of ramp-up time means that they can
succeed where an entire team might fail.
你知道那些電影吧,就是指揮官帶著機密作戰(zhàn)計劃被空降到敵人戰(zhàn)線之后。在軟件開發(fā)中,這樣的人叫傘兵。傘兵是你對一個將要失敗的工程的最后援助。傘兵們?nèi)?
乏在一個長期任務上工作的耐心。他們最大的價值是擁有快速學習一堆完全陌生的代碼并且使用它們工作的驚人能力。其他程序員也許要花幾個星期或者其幾個月來
熟悉一個工程,以便可以有效的參與其中;傘兵們只需要幾個小時或者幾天。傘兵快速學會的東西也許不能讓他們編寫核心代碼,但是,沒有足夠的時間形成一個固
定的見解可能會幫助他在整個團隊失敗的地方取得成功。
#9: Mediocre Man
#9:庸才
“Good enough” is the best you will ever get from Mediocre Man. Don’t
let the name fool you; there are female varieties of Mediocre Man too.
And he or she always takes longer to produce worse code than anyone
else on the team. “Slow and steady barely finishes the race” could
describe Mediocre Man’s projects. But Mediocre Man is always just “good
enough” to remain employed.
“足夠好了”,這就是你從一個庸才那能聽到的最好的話。他或者是她總是花更多的時間寫出比團隊中其他任何人都更差的代碼。“緩慢,剛剛符合要求”就是對庸才所作的項目的描述。但庸才們總是能做的“足夠好”,以至于剛好不會被解雇。
When you interview this type, they can tell you a lot about the
projects they’ve been involved with but not much about their actual
involvement. Filtering out the Mediocre Man type is fairly easy: Ask
for actual details of the work they’ve done, and they suddenly get a
case of amnesia. Let them into your organization, though, and it might
take years to get rid of them.
當你面試這種人的時候,他可以告訴你很多他到參與過的項目,但卻很少提到他們到底在這些項目里做了什么。篩出這些庸才的方法很簡單:問一下他所做工作的細節(jié),他們會突然得了健忘癥。但是,一旦讓這種人進入你的組織,你可能要花好幾年才能再擺脫他們。
#10: The Evangelist
#10:傳教士
No matter what kind of environment you have, The Evangelist insists
that it can be improved by throwing away all of your tools and
processes and replacing them with something else. The Evangelist is
actually the opposite of The Theoretician. The Evangelist is outspoken,
knows an awful lot about software development, but performs very little
actual programming.
無論你在用哪種編程環(huán)境,傳教士總會堅持認為如果你把現(xiàn)有的工具和工序拋棄掉并換成其它的一些東西,會對你有很大的幫助。傳教士實際上就是理論家的反面。傳教士總是直來直去,對軟件開發(fā)很了解,但卻很少真正的去編碼。
The Evangelist is secretly a project manager or department manager at
heart but lacks the knowledge or experience to make the jump. So until
The Evangelist is able to get into a purely managerial role, everyone
else needs to put up with his or her attempts to revolutionize the
workplace.
傳教士有一顆項目經(jīng)理或者部門經(jīng)理的心,但卻缺乏足夠的知識或者經(jīng)驗來完成這個跳躍。所以在傳教士最終成為一個純管理者角色之前,其他人不得不一直忍受傳教士們對于徹底革新工作環(huán)境的嘗試。
國內(nèi)的分類
轉
第一級:神人,天資過人而又是技術狂熱者同時還擁有過人的商業(yè)頭腦,高瞻遠矚,技術過人,大器也。如丁磊,求伯君。
第二級:高人,有天賦,技術過人但沒有過人的商業(yè)頭腦,通常此類人不是頂尖黑客就是技術總監(jiān)之流。
第三級:牛人,技術精湛,熟悉行業(yè)知識,敢于創(chuàng)新,有自己的公司和軟件產(chǎn)品。
第四級:工頭,技術精湛,有領導團隊的能力,此類人大公司項目經(jīng)理居多。
第五級:技術工人,技術精湛,熟悉行業(yè)知識但領導能力欠加,此類人大多為系分人員或資深程序員,基本上桀驁不遜,自視清高,不愿于一般技術人員為伍,在論壇上基本以高手面目出現(xiàn)。
第六級:熟練工人,技術有廣度無深度,喜歡鉆研但淺嘗輒止。此類人大多為老程序員,其中一部分喜歡利用工具去查找網(wǎng)上有漏洞的服務器,干點壞事以獲取成績感。如果心情好,在論壇上他們會回答菜鳥的大部分問題。此級別為軟件業(yè)苦力的重要組成部分。
第七級:工人,某些技術較熟練但缺乏深度和廣度,此類人大多為程序員級別,經(jīng)常在論壇上提問偶爾也回答菜鳥的問題。為軟件產(chǎn)業(yè)苦力的主要組成部分。
第八級:菜鳥,入門時間不長,在論壇上會反復提問很初級的問題,有一種唐僧的精神。雖然招人煩但基本很可愛。只要認真鉆研,一兩年后就能升級到上一層。
第九級:大忽悠,利用中國教育的弊病,頂著一頂高學歷的帽子,在小公司里混個軟件部經(jīng)理,設計不行,代碼不行,只會胡亂支配下屬,拍領導馬屁,在領導面前胡吹海侃,把自己打扮成技術高手的模樣。把勾心斗角的辦公室文化引入技術部門,實在齷齪!
第十級:驢或傻X,會寫SELECT語句就說自己精通ORALCE,連寄存器有幾種都不知道就說自己懂匯編,建議全部送到日本當IT產(chǎn)業(yè)工人,掙了日本人的錢還嚴重打擊日本的軟件業(yè)!
其中又以前兩級和后兩級最為難得,其余級別只要努力,皆有可能達到。(完)
----------------------------------------------------------------------------------------------------------
看后無語。