沒有發布過產品的程序員不知道什么是真正的軟件
英文原文:Become an exceptional programmer by learning to ship
看起來好的程序員似乎總是短缺;這是為什么編程是如今薪水最高的職業之一。但事實上,程序員從來不短缺的。是公司們總希望市場上有更多的資源可 用,當遇到不同的業務時,他們有更多的余地來找到合適的人。但今天我不是來說這些普通程序員的。我感興趣的程序員是那些熱愛他們的技藝,渴望創造出有意義 的東西的人。
這樣的程序員,在開啟他的職業生涯時,在嘗試進入他中意的公司時,他需要嶄露頭角。有些公司在招聘是會寫一些諸如“我們招聘時考察他們所做的開 源項目”等的話。在我們 Rendered Text 公司的招聘廣告里,我們總是會提到這樣一個要求:應聘者需要至少有一次發布產品的經驗——以開源或其它的形式。這樣的話沒有上下文通常會讓人困惑,所以我 打算把我的意思更詳細的說明一下。
這里的“發布產品”指的是什么?
年輕的程序員,由于缺少經驗,常常不知道這樣的事實:寫代碼只占一個軟件出品過程中很小的一部分。借用 Frederick Brooks 著名的《人月神話》一書里專業的描述:它只是一個軟件程序誕生的開始。編碼這部分活動很獨立,這個過程中沒有用戶,不跟其它各種軟件系統交互。這是最容易完成的一部分工作,因為基本上自己閉門工作,我們可以隨時聲明代碼“完成了”。
而真正要開發出一個軟件產品則復雜的多。作為產品,你需要把它打包裝箱發布給公眾。桌面應用需要方便安裝。如果是一個代碼 庫,你需要完善里面提供的 API,重構代碼提供更好的服務,附帶測試程序,還有寫文檔,編寫和發布出版說明。當所有這一切完成后,你進入了一個維護階段:你需要和用戶交流,或和一 些開源捐贈者交流。你將重新進入這種開發和發布新版本的過程。
舉個例子,在 GitHub 上發布一個音頻壓縮算法的源代碼,這不叫發布產品。而一個程序包,提供了多個版本,被成百上千的開發者下載、使用,這則是一個產品發布行為的明顯特征。
大多數的軟件都需要跟其它系統進行交互,以此來發揮功能和提供服務。你必須保證你的程序高效穩定。例如,一個 web 應用需要用到數據庫和系統內存。起初,從遠程 API 提取數據不會有什么問題;而經過一個較長的時間、系統用戶增加,如何能容易的升級擴展則是另外一個問題。
好的軟件是指在生產環境、在用戶手中好用的軟件,而發布產品動作就意味著你要開發出好用的軟件。所有的軟件公司都希望招聘到一個發布過產品的程 序員。但很多程序員,有些有著高超的編程技能,但卻只知道閉門編碼。當然,公司招聘一個程序員要看很多方面,但如果你曾經有過參與一個軟件產品出品全過程 的經驗,你絕對是任何一個好軟件公司的優選選擇。
<span id="shareA4" class="fl"> </span>
</div>