沒有釋出過產品的程式設計師不知道什麼是真正的軟體

vaikan發表於2014-02-19

  看起來好的程式設計師似乎總是短缺;這是為什麼程式設計是如今薪水最高的職業之一。但事實上,程式設計師從來不短缺的。是公司們總希望市場上有更多的資源可用,當遇到不同的業務時,他們有更多的餘地來找到合適的人。但今天我不是來說這些普通程式設計師的。我感興趣的程式設計師是那些熱愛他們的技藝,渴望創造出有意義的東西的人。

  這樣的程式設計師,在開啟他的職業生涯時,在嘗試進入他中意的公司時,他需要嶄露頭角。有些公司在招聘是會寫一些諸如“我們招聘時考察他們所做的開源專案”等的話。在我們 Rendered Text公司的招聘廣告裡,我們總是會提到這樣一個要求:應聘者需要至少有一次釋出產品的經驗——以開源或其它的形式。這樣的話沒有上下文通常會讓人困惑,所以我打算把我的意思更詳細的說明一下。

  這裡的“釋出產品”指的是什麼?

  年輕的程式設計師,由於缺少經驗,常常不知道這樣的事實:寫程式碼只佔一個軟體出品過程中很小的一部分。借用Frederick Brooks著名的《人月神話》一書裡專業的描述:它只是一個軟體程式誕生的開始。編碼這部分活動很獨立,這個過程中沒有使用者,不跟其它各種軟體系統互動。這是最容易完成的一部分工作,因為基本上自己閉門工作,我們可以隨時宣告程式碼“完成了”。

  而真正要開發出一個軟體產品則複雜的多。作為產品,你需要把它打包裝箱釋出給公眾。桌面應用需要方便安裝。如果是一個程式碼庫,你需要完善裡面提供的API,重構程式碼提供更好的服務,附帶測試程式,還有寫文件,編寫和釋出出版說明。當所有這一切完成後,你進入了一個維護階段:你需要和使用者交流,或和一些開源捐贈者交流。你將重新進入這種開發和釋出新版本的過程。

  舉個例子,在GitHub上釋出一個音訊壓縮演算法的原始碼,這不叫釋出產品。而一個程式包,提供了多個版本,被成百上千的開發者下載、使用,這則是一個產品釋出行為的明顯特徵。

  大多數的軟體都需要跟其它系統進行互動,以此來發揮功能和提供服務。你必須保證你的程式高效穩定。例如,一個web應用需要用到資料庫和系統記憶體。起初,從遠端API提取資料不會有什麼問題;而經過一個較長的時間、系統使用者增加,如何能容易的升級擴充套件則是另外一個問題。

  好的軟體是指在生產環境、在使用者手中好用的軟體,而釋出產品動作就意味著你要開發出好用的軟體。所有的軟體公司都希望招聘到一個釋出過產品的程式設計師。但很多程式設計師,有些有著高超的程式設計技能,但卻只知道閉門編碼。當然,公司招聘一個程式設計師要看很多方面,但如果你曾經有過參與一個軟體產品出品全過程的經驗,你絕對是任何一個好軟體公司的優選選擇。

  英文原文:Become an exceptional programmer by learning to ship

相關文章