Linux 開發模式帶給我們的思考(上)

jopen 9年前發布 | 25K 次閱讀 Linux

十五年前,我第一次在工作中使用 Linux 的時候,并不知道這個操作系統會對我的生活和職業產生多么大的影響。十五年后,我在「Linus,一生只為尋找歡笑」一文中寫到:

當大家使用 Google 搜索時,使用 Kindle 閱讀時,使用淘寶購物時,使用 QQ 聊天時,很多人并不知道,支撐這些軟件和服務的,是后臺成千上萬臺 Linux 服務器,它們時時刻刻都在進行著忙碌的運算和數據處理,確保數據信息在人、軟件和硬件之間安全的流淌。

Linux 不僅僅從技術層面影響人們的生活,其本身就產生了很多有意思的話題和文化,我讀了不少 Unix/Linux 相關的書籍,很多技術內容已經忘得一干二盡,但那些話題、模式和文化,卻像醇香的好酒、美麗的傳說,歷久彌新,不斷的為我帶來思考和啟發……

1、最初的想法,并不是決定性的

Linux 并不是憑空創造出來的,當年林納斯(Linus)只是覺得迷你版 Unix 操作系統 Minix 的終端太難用了,既不能登錄學校里的 Unix Server,也沒法上網。這種功能缺陷對林納斯這樣的極客來說是無法接受的,于是他決定從硬件層面開始,重新為 Minix 設計一個終端仿真器。

當時是三月,也可能是四月,就算彼得蓋坦街上的白雪已經化成了雪泥我也不知道,當然我也并不關心。大部分時間我都穿著睡衣趴在相貌平平的計算機前面噼噼啪啪的敲打鍵盤,窗戶上的窗簾遮得嚴嚴實實,把陽光和外部世界與我隔離開來。

經過不眠不休的編程之后,終端仿真器做出來了,但那個時候林納斯已經意識到自己的雄心壯志遠不止于此,神山上的另一座圣杯「操作系統」已經向他發出了召喚,于是始有 Linux。

另一個偉大的操作系統 Macintosh,同樣起步于一個微小的項目,期間歷經換帥、更名、爭吵、妥協,最終與 NextStep 經過長達四年的整合才形成現代的經典操作系統 OS X(參見《MacTalk·人生元編程》)。

幾乎所有成功的產品都是邊走邊看做出來的。偉大的夢想,常常始于微不足道。

所以,很多人問我如何找到一份長期穩定的工作時,如何開啟一個能夠帶來巨大成功的項目時,我只能說,最初的想法,并不是一切,開始去做就好了。

2、好的軟件產品,常常源于開發者自身的需求

林納斯為給自己開發終端仿真器最終做出了讓其名垂青史的 Linux 操作系統,沃茲因為熱愛計算機設計出了 Apple I,喬布斯想把1000首歌裝進口袋推出了 iPod。

如果有什么工作能讓你保持長久的熱情,那一定是做自己需要的產品。當年我們在給程序員開發工具平臺的時候,我要求每個工具研發人員都使用我們自己開發出來的工具,而不是僅僅把工具推給測試人員和項目組的程序員。過了一段時間,我發現那個 IDE 突然增加了很多「善解人意」并「出人意料」的功能。

如果有一天放下現在的工作,我一定會找一件足以讓我窮盡半生去探索和追求的事情,用「術」解決問題,用「道」創造解決問題的方法,順便改變生活。

3、優秀的程序員知道如何編程,卓越的程序員知道合理復用

林納斯并沒有嘗試從零開始編寫 Linux,而是以重用 Minix 的代碼和理念作為開始,雖然在 Linux 最終的版本中幾乎所有 Minix 代碼都被移除或重寫了,但它在 Linux 成長初期確實起到了類似腳手架的作用。

卓越的程序員通常都很懶,我們把這種懶叫做「建設性懶惰」,因為他們知道,很多時候我們要的都是最終的結果,而不是勤奮的過程。如果有可以復用的基礎,顯然比從零開始更具有建設性。

在開源社區澎湃發展的今天,我們有了更多的技術選擇。所以,當你拿到一個輪子的需求時,去社區里找找問問,如果有可以復用的東西,就不要再費勁去造一個新輪子,況且你無法保證自己造的輪子比舊輪子好用。

我從來不是卓越的程序員,我只是模仿他們。

4、如果你有正確的態度,有趣的事情自然會找到你

林納斯從寫下第一行 Linux 代碼的開始,就保持了一個開放的態度,可以說,Linux 一誕生就被打上了開源的烙印,這一點對其后續的發展起到了至關重要的作用。因為開放和開源,Linux 吸引了全球的開源愛好者和頂級黑客,無數卓越的程序員為 Linux 貢獻了源代碼,同時,林納斯在開源協作方面也展現出了編程之外的天賦,他井井有條的運作著龐大的開源社區,回復郵件,發起討論,閱讀代碼,合并分支,Linux 操作系統在開源社區的推動和林納斯的調教下以驚人的速度發展。

從來沒有一款如此復雜的軟件系統是以這種松散的方式構建的。幾千名散落在世界各地的開發者,憑借著脆弱的互聯網建立關系,他們利用業余時間,構建出了一個鬼斧神工般的操作系統,隨即這個系統又成為互聯網的基石,其間滄海桑田,讓人嘆為觀止。

一切都源于開放的態度。我對這一點深有體會,從寫下第一條 MacTalk 推送開始,我只想向世界傳遞我的訊息,結果各種有趣的人和事紛至沓來。但行好事,莫問前程。

為什么要登山?因為山在遠方。為什么要閱讀?因為歷史在書里。為什么要寫作?因為思想流淌在心頭和指尖。就是如此。

5、如果你對一件事情不感興趣了,最好的做法是找到一個有能力的接棒者

每個人的興趣都會轉移,林納斯也不例外。在 Linux 進入穩定發展的階段,他把更多的精力放到了開源社區上,但是這并沒有降低 Linux 操作系統的代碼質量,因為他找到了更多的頂級源代碼貢獻者。

在軟件開發的項目中我們同樣會遇到類似的問題。某個功能的開發者突然對該功能失去了興趣,這時候我們就有責任為這個功能找到一個可以勝任的接棒者,而不是強迫原來的開發者在原地踏步。

很多時候,我們厭倦了一件事情,并不是能力缺失,而是因為已經洞悉了這件事的所有秘密,于是轉身離去,開辟新的征程……


待續……

推薦書籍:
《Just for fun》林納斯自傳
《大教堂與集市》
《Linix/Unix設計思想》
《Unix編程藝術》

如果你們都仔細讀了,我就不用寫下了。

來自:http://mp.weixin.qq.com/s?__biz=MjM5ODQ2MDIyMA==&mid=202820072&idx=1&sn=f07df42ae7952eadaf1527cb5556b06b

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!