《大教堂與集市》:軟件工程的另一種選擇

說起軟件工程這檔事,我總有種不知從何說起的感覺。作為計(jì)算機(jī)專業(yè)的學(xué)生,早年都學(xué)過一門叫做軟件工程的課,背下來一些流水線式的項(xiàng)目開發(fā)階段,首先是在項(xiàng)目定義階段要做可行性分析、需求分析這些事,再來進(jìn)入到開發(fā)階段要做概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、設(shè)計(jì)實(shí)現(xiàn)等步驟,最后是維護(hù)階段的運(yùn)行與維護(hù)。仿佛軟件開發(fā)就像《摩登時(shí)代》里的工廠流水線,分工明確。井然有序。目的是讓程序員成為流水線上的工人,使他們成為生產(chǎn)機(jī)器中的一個螺絲釘,無需創(chuàng)意,無需個性,只要夠熟練就行。很多大型企業(yè)的開發(fā)項(xiàng)目也確實(shí)是按照這個路數(shù)走的,很多程序員被戲稱【碼農(nóng)】也正是這個原因。

但是,等我工作了若干年之后再來看這套工程管理模型,感覺這基本上就是個【計(jì)劃經(jīng)濟(jì)】。首先,絕大部分軟件在開發(fā)初期根本不會有那么多人參與,通常是兩三個人要做所有的事情。分那么多階段,那么多工序是沒有意義的。再來,就算是有了一定規(guī)模的公司,他們會讓很多人參與一個項(xiàng)目,往往都是為了維護(hù)已有的軟件,程序員的主要任務(wù)是維護(hù)該軟件的版本,并在此基礎(chǔ)上開發(fā)新的版本,在這種情況下,他們其實(shí)已經(jīng)有了現(xiàn)成的開發(fā)框架,這些人只需要根據(jù)特定的需求將該框架填充成具體的專用軟件即可。對于原框架來說,這更像是增加了一個特性分支。例如說,jetbrain是一個通用的IDE框架,而android studio是專用于android開發(fā)的IDE,它就是基于jetbrain開發(fā)出來的。我們可以將它視為jetbrain的一個分支。這更像是某種意義上的維護(hù)工作,它的可行性,需求是一目了然的,也不需要概要設(shè)計(jì),只需要按照其原有的插件體系把功能實(shí)現(xiàn)即可。然后,bug修復(fù)是這個項(xiàng)目的主要工作。所以,如何讓那么多人一塊有效地,有序地發(fā)現(xiàn)bug,報(bào)告bug,解決bug成為了主要問題。

上世紀(jì)的七十年代和八十年代爆發(fā)了兩次所謂的軟件危機(jī)。那時(shí)候的許多軟件項(xiàng)目都出現(xiàn)了預(yù)算超支、發(fā)布時(shí)間嚴(yán)重拖延、質(zhì)量管理缺失等問題。大量的項(xiàng)目因此而失敗,問題很嚴(yán)重,以致于北約這樣的組織都要開會來討論這個問題。但這些高高在上的人物討論出來的東西就是我們上面所說的軟件工程理論。按照《人月神話》作者布魯克斯的說法,這需要大量的銀彈,人員來支撐。這只有大型企業(yè),科研機(jī)構(gòu)才能做到。當(dāng)然對于這些機(jī)構(gòu)來說,這套理論確實(shí)能解決一些問題。尤其在互聯(lián)網(wǎng)時(shí)代來臨之前,這似乎也是我們唯一的選擇。

但大型機(jī)構(gòu)都存在官僚主義的問題,效率低下,隨著時(shí)間的推移它們往往都會離人們的實(shí)際需求越來越遠(yuǎn),就像是基督教的大教堂,高高在上,定期發(fā)布信息,內(nèi)容龐雜而臃腫。對于以創(chuàng)意為主導(dǎo)的中小軟件開發(fā)是毫無幫助。于是Linux之父林納斯在獨(dú)自開發(fā)Linux內(nèi)核的過程中走出了一條新的道路:開源社區(qū)。簡單來說,就是由軟件項(xiàng)目的創(chuàng)始人開發(fā)出一個不成熟的初始版本,然后將其丟到一個開發(fā)者社區(qū)中,讓其在開發(fā)者自發(fā)性的修改和分享中自然生長。最后,項(xiàng)目創(chuàng)始人會根據(jù)其生長情況將自己認(rèn)可的部分納入到項(xiàng)目的主分支中。這種亂中有序的組織形式讓Linux項(xiàng)目獲得了巨大的成功。給軟件開發(fā)的工程實(shí)踐提供了另一種選擇。

上世紀(jì)九十年代末期,網(wǎng)景公司在與微軟公司的瀏覽器大戰(zhàn)中敗下陣來,面臨著公司的生存危機(jī)。他們決定試試開源的方式?!洞蠼烫门c集市》這本書就是在這樣的時(shí)空環(huán)境下寫就的。它的作者埃里克雷蒙就是網(wǎng)景公司踐行開源運(yùn)動時(shí)所聘請的顧問。這本書為開源運(yùn)動奠定了理論基礎(chǔ)。他系統(tǒng)闡述了互聯(lián)網(wǎng)條件下的協(xié)作模式,同行審評的優(yōu)勢,回答了《人月神話》中提出的銀彈問題,人員管理成本問題。如今,微軟、蘋果這些曾經(jīng)的大教堂都紛紛進(jìn)入了開源領(lǐng)域。開源軟件作為軟件工程的另一種組織形式已經(jīng)毋庸置疑。

最后需要提醒的是,開源運(yùn)動和理查德斯托曼領(lǐng)導(dǎo)的自由軟件運(yùn)動不是一回事。開源運(yùn)動更多的是一種軟件的開發(fā)方式,雖然也強(qiáng)調(diào)開放源碼、免費(fèi)分享的黑客精神。但并不排斥世俗、商業(yè)。而自由軟件運(yùn)動則更像是一種意識形態(tài)的運(yùn)動,非常的理想主義。非常激烈地反對商業(yè)化,有點(diǎn)烏托邦化。這客觀上其實(shí)給源代碼的分享帶來了不少的阻力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容