不要自稱為程序員

作者: 阮一峰

日期: 2011年10月31日

每年都有無數年輕程序員,加入軟件行業。他們在學校里學過編程,但是對這個行業的現實一無所知。

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

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

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

這種看法是不對的。大部分程序員,實際上編寫的是不公開的企業內部軟件,比如追蹤費用的軟件、優化裝運成本的軟件、幫助記賬的軟件、設計新部件的軟件、計算保單價格的軟件、識別惡意訂單的軟件等等。各種各樣的商業公司,開發內部軟件,解決它們自己的問題。市場上對程序員的大部分需求來源于此,只有極少數程序員直接編寫面向外部顧客的軟件。

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

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

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

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

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

三、不要自稱為程序員 #

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

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

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

四、不要限定自己 #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最后生成于 2018-7-9 07:42:00

体彩7位数