不要自稱爲程序員

作者: 阮一峯

日期: 2011年10月31日


每年都有無數年輕程序員,加入軟件行業。

他們在學校裏學過編程,但是對這個行業的現實一無所知。

Patrick McKenzie是美國一家小軟件公司的老闆,他寫了一篇長文,介紹這個行業的一些實際情況。我看了以後很感慨,有些地方很受啓發。我選擇了一部分,翻譯如下。

==================================

一、90%的編程工作來自內部軟件

(90% of programming jobs are in creating Line of Business software)

計算機專業的學生,可能有一種印象,覺得大部分程序員,都在編寫公開出售的軟件或者通用軟件。

這種看法是不對的。大部分程序員,實際上編寫的是不公開的企業內部軟件,比如追蹤費用的軟件、優化裝運成本的軟件、幫助記賬的軟件、設計新部件的軟件、計算保單價格的軟件、識別惡意訂單的軟件等等。

各種各樣的商業公司,開發內部軟件,解決它們自己的問題。市場上對程序員的大部分需求來源於此,只有極少數程序員直接編寫面向外部顧客的軟件。

內部軟件的開發,通常非常乏味,令人厭倦。因爲它們的技術複雜性低、技術決策非常保守、預算很少、缺乏長遠考慮。但是,世界上大部分編程工作都是這種。

二、別人僱你的目的,是讓你創造利潤,不是讓你編程

(Engineers are hired to create business value, not to program things)

商業公司最關心的(或者說唯一在乎的)事情,就是增加收入、降低成本。因此,它們實際上需要的不是程序員,而是能夠幫助它們增加收入、降低成本的人。

開發優美的軟件,解決技術難題,編寫沒有bug的代碼,這些都不是商業公司的目的。它們僱傭你,是爲了讓你幫它們完成某個可以增加收入、降低成本的項目,而不是因爲你是geek。

你個人對於公司的唯一價值,就在於你能多大程度上爲它們增加收入、降低成本。

三、不要自稱爲程序員

(Don't call yourself a programmer)

很多公司的經理不懂計算機,在他們心目中,"程序員"就是一羣高成本的勞動力,只會在一臺複雜的機器上幹一些難懂的事情。

如果你自稱爲"程序員",當公司需要壓縮成本的時候,某些經理首先就會想到解僱你。有一家公司叫Salesforce,口號是"沒有軟件",意思就是如果經理們購買了他們的服務,就不再需要別的軟件管理銷售業務了,也就是說,不再需要自己僱傭程序員了。

正確的做法是,你應該把自己描述成與增加收入、降低成本有關係的人,比如"xx產品的開發者"或"改進者"。有一個Google Adsense程序員的自我介紹,是這樣寫的:"Google公司97%的收入,與我的代碼有關。"

四、不要限定自己

(You are not defined by your chosen software stack)

年輕學生經常會問,應該選擇哪種語言或平臺?學會Java,是不是比學會.NET容易找工作?

過分強調某一種語言或平臺,都是不必要的。如果你把自己限定爲Java程序員或.NET程序員,你就已經輸了,因爲首先你不應該自稱爲程序員(理由見上一點),其次這種限定使得你自動被排除在世界上大多數編程工作之外。

現實生活中,學會一種新語言,只需要幾個星期,然後再過半年到一年,你就會變成老手。那時,根本沒人在乎你以前用什麼語言。

天才程序員是很少的,可是需要天才程序員的工作機會卻很多很多,大多數場合都是需求遠遠大於供給。這意味着,即使你不是天才程序員,只要你是一個優秀工程師,那些招聘公司也會立刻錄用你,因爲它們知道招聘到天才程序員的機會微乎其微。(重複一遍,所謂"優秀工程師",就是你的履歷上有一連串增加收入、降低成本的記錄。)

某些公司的人事部門,會根據某個關鍵詞(比如Java或.NET)過濾簡歷。雖然這樣的公司根本不值得去,但是如果你真的想過這一關,也很容易:投入幾個晚上和週末,在你當前的項目中設法用到這個關鍵詞,然後再把它寫進簡歷就行了。

五、如何提高求職時的談判能力?

(How do I become better at negotiation?)

(1)記住你不是在求職,不是在展示編程技巧,而是在推銷某種商業需求(增加收入或降低成本)的解決方案。

(2)面試時,要有自信,要平等的對話。你要的是一個互利的錄用合同,不要每次對方提出要求,你都說Yes。

(3)僱主可能會問"你的上一份工資是多少",他們其實在說"給我一個理由,壓低你的報酬"。你要想好如何適當地回答這個問題。

(4)要還價。這裏不僅僅指錢,還指其它你關心的方面。如果你無法要求更高的薪水,那就試着要求更多的假期。

(5)在對方決定錄用你以後,纔開始討論薪水。因爲那時,他們已經在你身上,投入了大量的時間和金錢,產生了一定的成本,此時他們可能覺得一些小問題已經不值得再糾纏了,比如每年的工資增加幾千元。

六、創業公司是否適合應屆畢業生?

(Are startups great for your career as a fresh graduate?)

如果你一畢業就加入創業公司,最可能的結果是,接下來幾年你都工作得非常辛苦,然後公司悲慘地失敗了,你失業了,不得不又去另一家創業公司工作。

如果你真的想去創業公司,應該首先找一家大公司幹上兩年,攢一點錢,積累一些經驗,然後精心挑選後再去創業公司。

在創業公司工作,一般情況下,你遇到的都是創業者。他們大多數人沒有能力在兩年後僱傭你;而在大公司工作,你遇到的都是其他大公司的人,他們中很多人將來有能力僱用你或者幫你介紹工作。

七、在創業公司工作是否值得推薦?

(So would you recommend working at a startup? )

選擇創業公司,就是選擇一條職業道路,而不是選擇一種生活方式。可惜很多人把這兩者顛倒了,他們推薦創業公司,實際上是在推薦一種你感興趣的生活方式。

如果你確實喜歡這種生活方式,老實說,你在大公司裏也可以得到它們。在許許多多大公司裏,你都有機會鑽研最新的技術,而且還能5點半準時回家照顧孩子。

八、溝通技能是最重要的職業技能

(Your most important professional skill is communication)

前面說過,工程師被僱傭,不是因爲會編程,而是因爲能夠創造商業價值。所以,你讓人們相信你能創造價值,這是幫助你找到工作的最重要的能力。這種能力與你真的能創造多少價值,實際上聯繫不是很緊密。

我認識的一些最優秀的程序員,往往拙於表達。因此,別人不是不想與他們一起工作,就是低估了他們的價值。相反地,如果你看上去很會編程,並且很善於表達,別人就會真的這樣看待你。

(完)

功能鏈接

留言(47條)

阮先生,這篇文章優化了我和老闆的關係模型。
那麼,您將因此提高一點點收入(笑~)

讓我們重新思考我們在公司中的位置

很討厭這種文章,把本來夠浮躁的年輕人引導地更浮躁。

年輕人都按這個思路去中國人什麼時候纔有自己的John McCarthy或者松本行弘?

誠然有些人只是想要麪包,不想別的,這無可指責。但終究有些人是真正熱愛編程且適合靜下來研究怎樣設計更好的代碼而不是去想怎樣讓自己更適合老闆的口味。

世界頂級程序員不是如此煉成的

我畢業後第一家公司是創業公司,有很多的不愉快,但是從老闆的角度來想,他們那麼做也有他們的理由。

自認爲是一個程序員,可以保持職業的樂趣,儘管現實問題也不能忽視。

一個人如果做一個目標單一,努力就能實現的工作,那麼他可以只需要金錢和物質的激勵;但是如果他要做有創造性的工作,那麼就不能僅僅侷限在商業價值之下。

這一類文章很需要技巧,一不慎就容易輸出糟糕的價值觀。

引用zicjin的發言:

很討厭這種文章,把本來夠浮躁的年輕人引導地更浮躁。

年輕人都按這個思路去中國人什麼時候纔有自己的John McCarthy或者松本行弘?

誠然有些人只是想要麪包,不想別的,這無可指責。但終究有些人是真正熱愛編程且適合靜下來研究怎樣設計更好的代碼而不是去想怎樣讓自己更適合老闆的口味。


其實也沒必要討厭,個人建議:
1.學會有成就感的心態做事情;
2.學會爲自己而工作的心態;
3.學會靜心投入自己敢興趣且可能可以突破的方向,若是能跟公司業務發展有幫助就更加;

國內主要是大多數公司,尤其銷售型人員,覺得沒我們,你們程序員寫的東西就是垃圾思想嚴重,尤其老闆就這麼覺得,不過國內沒有多少人會覺得沒自己的coding,公司就會死掉,主要大家都明白自己是廉價且可替代的人,而國外不一樣,人家程序員可是高新,排名第一,第二的.....所以需要糾正點心態....

與阮推薦的paul的這篇文章,你不必非要給自己找個老闆

http://www.aqee.net/you-werenot-meant-to-have-a-boss/

放一起閱讀很有意思。

好吧,文章標題的“程序員”更好的中文翻譯應該是“代碼民工”。
前幾天剛在 CSDN 一貼中迸擊了這樣的想法。
但您不可否認,有天才的程序員,他們熱愛自己的職業(而不僅是目前這份工作),有行業理想,並以此爲榮。

說實話無法苟同本文這些說法,依照咱現在在公司的位置,咱也素給公司內部的設備做軟件開發,並且用來證明這些設備是有用的並且能夠對鐵路運作起到安全保證的。那麼,在一個平均年齡不到30的開發隊伍裏面,咱負責各種新技術的引入和消化使用(不限於軟件、編碼)——那按照本文說法咱和一堆算法人員算公司最耗資本又沒有價值的人員(嗚……隨便搞一個設備幾萬十幾萬啊喵……)怎麼沒有見到老總想要第一個裁員裁我呢喵?

PS:只是一個小公司而已,200人+級別……

感覺 好現實啊

對,不要把自己先到一個圈子裏面不出來
應該從各種人員角度考慮問題
若只是考慮從工程角度那麼很有可能有些時候並不是很好的決策

從美國一家小軟件公司的老闆Patrick McKenzie的角度看,編程只是掙錢的手段。不過,不要排除了那些在編程上創造的樂趣,有的人不只是爲了掙錢生成而編程的!
總的來說,這個老闆是以商人的角度看問題。很明顯的:一切以錢爲中心,都只是爲了公司或者自己獲取最大的利潤。
問題是:任何問題都不是單一的問題。

引用非魚的發言:

從美國一家小軟件公司的老闆Patrick McKenzie的角度看,編程只是掙錢的手段。不過,不要排除了那些在編程上創造的樂趣,有的人不只是爲了掙錢生成而編程的!
總的來說,這個老闆是以商人的角度看問題。很明顯的:一切以錢爲中心,都只是爲了公司或者自己獲取最大的利潤。
問題是:任何問題都不是單一的問題。

你是不是爲掙錢而編程並不重要,重要的是你老闆是。這就是這篇所說的。

最重要的是,別去做內部軟件開發,那樣你會廢掉的。

阮先生此文令我茅廁頓開啊,爲了表示感謝,我決定付費~~~

這是在告訴我們,如何協調我們和公司的目標達到一致.天才可能並不看重這點,但是天才畢竟很少啊.

引用zicjin的發言:

很討厭這種文章,把本來夠浮躁的年輕人引導地更浮躁。

贊同

也不是很贊同作者這篇文章,倒不是因爲對裏面的觀點不認同。
主要是覺得,作者是在統一人們的價值觀,難道老老實實一心只想做個程序員有錯嗎?可能以後這樣的人不會擁有多少財富,但是,並不是所有人都需要很多錢活着。

雖然說得是軟件行業,但是對其他行業也有指導作用。
雖然說得現實了點,但是能讓人少走一些彎路。

我先後在10萬人、1萬人、3千人的公司待過,深知委身大公司的缺點。在大公司,每個人只負責產品的某一部分,公司最希望是讓員工在自己負責的一塊區域做得很深,這樣個人效率最高,由於很少涉及其它部分的工作,離開自己的專業就跟新手差不多,這樣個人就更依賴於公司所提供的平臺了。如果自己想出來創業,一片茫然。

大哥,你爲什麼不用新浪微博呢?我想把你的一些好的文章一鍵分享到我的微博給朋友們看

既然程序員像他說的那樣,從事這麼沒勁的活兒,何必賺這麼一份工資呢?程序員都是聰明人,世界之大,何必做這麼無聊的事。商業上壓低成本,擡高利潤誰不懂,爲這種無趣的老闆和事情打工,no ,no ,no .

如果是5年前,我會對這篇文章的觀點表達我的疑惑,因爲那時候我是一名在小公司工作了好幾年的程序員,能自由的去做自己想做的事,並以自己的工作爲豪;今天我看到這篇文章時,對作者的觀點表示贊同,因爲現在的我已經踩着現實的土壤踏實的前行。
觀點本沒絕對的對錯,無妨讓我們去衡量下,是否可以理解對方的觀點是從哪裏出發的。
站在公司老闆的角度,確實如此,無論程序員的能力有多強,寫出來的應用無法滿足市場的需求,公司的利益就不能保證,公司就無法持續發展,就會有更多的人餓肚子,更多的人失業,更多的人沒法實現每天坐在格子間裏寫代碼的理想。
從程序員的角度出發,有自己的理想,目標和職業訴求,希望能純粹的做一個與機器打交道的人,從某種程度來說,寫程序也是一種信仰,但每天卻被人灌輸着除了寫代碼還需要溝通,交流,甚至是更多程序員認爲是與己無關的與用戶妥協,與銷售妥協的事。所以一看到從違背自己信仰,從現實出發的觀點就覺得比較抵觸。
如果我們從2邊出發,會發現還是有可能使得矛盾化解的,比如早期,網上到處都有google的辦公環境如何適合程序員的言論,還有很多讓人覺得舒適的照片爲證,可後來呢?一樣有人說這是爲了讓人多加班,多以公司爲家多創造價值而已的言論。但至少說明,有那麼一段時間,老闆和程序員是互相理解過。有時,老闆給程序員更多的自由,程序員多從現實的角度考慮下,反倒是能調解這些矛盾。如果真的只是願意和機器打交道,可以去研究所,大學進行研究工作,當然這個就是比較理想了,因爲當你進了學校之後,你還是會發現,想單純的做編碼還很會很難。
呵呵,所以最終,從多方面來看問題,會發現跟人溝通真的很重要,而互相理解更重要。
看到大家的討論,一堆廢話,願共同分享自己的感受:)


大致就是說:A、B、C三個差不多優秀的程序員,善於表達的B,更能獲得機會。

人是社會關係的總和,溝通的重要無處不在,不單IT行業。

----------------------

10000個程序員,大數法則,1000個具備知道怎樣做纔是最好的、最符合市場和老闆的口味,類似這樣的人到哪裏都是人才。但是一個行業註定剩下的9000個只能是程序員,無論你怎麼講,撲朔迷離的市場和聰明睿智的老闆都不會信。

或者:知道自己是誰,踏踏實實做回自己,比本文原旨更重要。

文章說的是事實.大公司的技能要求也不是很過分,的確能帶來很多收入.
小公司,又辛苦,又沒錢......
而且做產品的企業,一個產品線會涉及很多技術,涉及很多部門,要和很多人打交道.
並不是很時髦的技術...
簡單的說:"技術沒有價值",只有技術能夠帶來利潤,才有價值.
跟馬克思說的:商品的價值需要在市場上實現...一樣的道理.
寫軟件,,其實也就是一份工作而已.
而且天才程序員沒有任何意義,你叫比爾蓋茨到支付寶去做UI?有意義嗎?
找到合適的人,用最低成本的完成需要的軟件.

我覺得,程序員人生應該考慮兩部分道路, 第一部分無疑是培養自己, 提高自己, 不能以商業爲動機,做到真正的自我修養, 當自己能獨當一面了, 能挑起大梁了, 這時候就要考慮這篇文章中所謂的商業信息了, 能爲公司帶來多少利益, 就好比目前好的大公司招人, 我也是新人, 我覺得, 新人最重要的事情是努力提高自己, 在技術上把自己武裝起來, 等可以爲公司做事了, 再考慮這些東西。 當然, 每個優秀的程序員都應該以geek爲目標, 秉承技術第一的原則, 這纔是做技術的人的真正的貞操!

從來搞不明白這個世界上爲什麼有一心只想跟機器跟代碼打交道的人!

現實的社會,需要的只是真本事...... 沒有人會同情或憐憫你,這就是商業戰爭......

程序員只是一個過程

這大概便是就職於銀行等企業的數學專業程序員煩悶要死的原因……

這便是這個職業出現的緣由和之所以存在的本質。

前幾天在HN看的,您還真翻譯回來了...

知識是賣給資本的。

好吧,程序員也是社會的人,所以需要社會交往的技巧。把自己限定於只和機器打交道,本來就是自我隔絕於社會的生活方式。不過每個人的價值取向不同,自己選擇就是了。

翻譯有錯誤“Working in a startup is a career path but, more than that, it is a lifestyle choice. This is similar to working in investment banking or academia. Those are three very different lifestyles.”
這句話的意思你完全翻錯了………

學成文武藝,賣給帝王家,古今皆是如此啊

我認爲它所說的是,如何避免被壓榨。手段而已,不見得要改變自己的熱血目的或恬靜目的,兩者不見得必定相違逆。

不想在這說太多廢話

我想到了2個辦法

也就是所有的開源代碼可能被攔截了,因爲一些人以爲攔截了就可以自己獲有

但中國人的技術不可能達到這麼高的高度

所以老外會先獲勝,從外部攻破中國,我看這個日子很快就要來臨

內部的中國程序員因此被收編

間接得到解放。

技術領域被收編剩下的屁民,我看不出有什麼能力能突圍

程序員,跟其他的工作,有什麼區別呢?呵呵

這篇文章有很多觀念不贊同:

例如:
90%的編程工作來自內部軟件 , 如今web時代,90%這個數字是不是太高了。。。

爲什麼不敢自稱 程序員 , 興趣是第一要素

爲什麼建議去大公司, 創業公司未必不好 。



引用zicjin的發言:

很討厭這種文章,把本來夠浮躁的年輕人引導地更浮躁。

支持這個觀點

我的第一份前端開發的老闆就是這麼教導我的。我很理解他的說法,離開主要是因爲,我看不到做下去的前途。那時我看不到公司的前途,同時,和管理層關係又很緊張,令人備感莫名其妙,不讓解釋(據說因爲如果讓我解釋他們就是傻子),而且無法緩解的那種緊張。離職那天才瞭解到,這種緊張關係似乎直接來自於我的直接上司對我的評價。
那是廈門的一家創業公司,恐怕原因就是我經常被評價的那種,不懂禮儀和心理學、處事不周吧~後來就去了大公司,貪圖的東西和本文的觀點類似。

引用zicjin的發言:
很討厭這種文章,把本來夠浮躁的年輕人引導地更浮躁。

我也贊成這種觀點。
不過事實這文章也給了我很多的啓發
如何定位自己與他人的關係,可以讓自己過得更有價值,更充實,更快樂一些

引用大頭龍仔的發言:

我也贊成這種觀點。不過事實這文章也給了我很多的啓發如何定位自己與他人的關係,可以讓自己過得更有價值,更充實,更快樂一些

不支持,工作和愛好是可以分開的

"選擇創業公司,就是選擇一條職業道路,而不是選擇一種生活方式。"
原文是:
"Working in a startup is a career path but, more than that, it is a lifestyle choice."
翻譯反了吧?"更是選擇一種生活方式"纔對?

一、90%的編程工作來自內部軟件

千萬別相信這個 否則會廢掉的,國內幹內部工作是沒前途和錢途的(幹好是本分,沒幹好是失職)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章