我是如何寫作一本軟件+哲學式的書籍的(下)

我是如何寫作一本軟件+哲學式的書籍的(上)


做好這個決定後,就面臨一個很棘手的問題:怎麼不把這樣一本書寫成散文,這類書很容易想到那寫到那,針對各種東西,發一堆感觸,而後被命名爲經驗分享。看到的一些書就是這個狀況,這未必沒意義,但這違背初衷,我是想寫本講本質,把事兒講透的書。而上面的寫法很像有把錘子就把什麼都當釘子。做播放器的有益經驗給做驅動很可能就是毒藥。就好比說,單純從現象來看,世界各個角落發生的事都不一樣,但從牛頓定律的角度看,很多事情是一致的。好容易寫個東西,怎麼也得奔牛頓定律去---當時真是這想法。關鍵是,怎麼寫?

 

最後想了個有點詭異的方法,這個方法受劉慈欣的三體啓發。我預設幾個必然成立的前提,所有其他關鍵內容都從這幾個前提用邏輯鏈進行推導。此外想辦法建立一個純量的公式來大致度量各個領域上的得失。

 

預設了四個基本前提:

  • 軟件是一種固化的思維
  • 意識指導行動
  • 項目所能耗費的資源是有限的
  • 重複做同樣的工作會降低效率

這裏面第一點超級關鍵,用它可以解決總結出的規律不能普適的問題:如果你的規律是基於思維而不是基於具體的軟件的,那麼它就是普適的。

公式則是:

假設一個人的工程素養爲E,一個人的工作意願爲W,組織所能提供的力量爲O,內耗係數爲M,那麼對於一個擁有n個人的團隊,從純量的視角看,其在單位時間內最終可能貢獻值可以表示爲:

[(E1*W1  + O) + (E2*W2 + O) + ... ... + (EnWn  +O)] * M

 

基於這種前提,可以用一種演繹的方式對軟件相關各個領域進行一種解構。具體幹這事兒的時候,碰到兩個麻煩事:一個是商業因素一考慮近來,很多事情就說不清楚。你軟件可以做的很好,但你賣不出去,那也不值錢,算不得成功。但一旦開始考慮能不能賣出去,問題的領域就又雜的一塌糊塗,軟件怎麼能賣出去和軟件能不能做好基本上非常不同的領域,根本沒法在有限篇幅裏得出結論。這個時候,正翻凱恩斯的《就業、利息和貨幣通論》,驚訝的發現經濟學中會抽象掉一些維度後來研究問題,觸類旁通下產生了這樣一個想法:技術因素、商業因素、(公司)政治因素都是影響項目的關鍵要素,但去除了商業因素和政治因素後考察到的東西就更像一種完美的東西,商業因素和政治因素可以使其表現形式發生變化,但不能改變其運作原理。這想法直接導致了最後書籍的名字《完美軟件開發:方法與邏輯》,也導致了寫的時候基本抽去了商業和政治因素。

 

到這裏可以總結出一條很詭異的經驗:有思考深度的其他領域的書對寫這類軟工書籍是很有幫助的。除了上面提到的,對我思考軟工問題影響巨大的兩本非IT書籍是:何新先生的《我的哲學思考:方法與邏輯》與黑格爾的《小邏輯》。其中“上帝是萬物之尺度”與“在尺度自身中已經蘊含了本質”兩句宛如雷電,極大的刺激了我的思維。

 

這樣一來就寫的順暢一些了,但推導出來的結論雖然邏輯上沒問題,有時候實在是離經叛道。比如,一條邏輯鏈是:軟件是一種固化的思維 →思維的本質是概念和邏輯 → 概念和邏輯無法直接度量和精確度量 → 度量過程中需要很多的主觀判斷 → 以目標爲導向的,以個人爲中心的量化管理(相關的激勵和懲罰)將崩潰 → 參照無歧義數據(函數複雜度等)的判斷將成爲程序員評價中的輔助手段 

 

這讓主推量化管理的人情何以堪。這時候我就理解爲啥哲學家容易自殺,當你老感覺自己看到別人看不到的東西時,你要麼覺的自己錯了,要麼就會狂妄覺得別人都是思維上的侏儒。後者再進一步就會發狂。我大致還好,屬於怕自己錯了,但又想堅持己見。所以就繼續求證和寫作。

 

此外,還有一個後遺症,因爲這是一種比較特別的思維方式和視角(視野所見,似乎沒人這麼寫過軟件的書),最終導致某些地方很抽象---雖然我相信它是深刻的,也有價值的,看下面這段:

 

軟件是一種固化的思維,這一點決定了許多的事情。從特質上來看,既然軟件是固化的思維,那就必然同時具備思維以及思維所承載之物之特質。

 

  • 思維的特質是指:思維的澄清通常是漸進的,思維自身是不可度量的,思維的主體一定是人,思維通常由概念和邏輯組成,思維的無邊界化(靈活易變)這樣的特質。這部分特質是共通部分,同時屬於所有軟件。

 

  • 思維承載之物之特質是指:當思維的對象是數學的時候,思維本身也就具備了數學的特質;當思維的對象是商業邏輯的時候,思維自身也就具備了商業邏輯的特質。

 

既然思維自身的特質是複合的,那麼作爲固化思維的軟件,其特質必然也是複合的:

 

既有屬於所有軟件的共同特質,也有特屬於某類軟件,甚至同其他類軟件完全相反的獨有特質。

 

 

這段文字的現實意義是基於它可以直接判定CMMI,敏捷這樣的方法論是不完善的。基於某些實踐,總結方法論,並試圖推廣這樣的思路如果不明確自己這種方法的限度,那是有害的---這等於說之前甚至很有名的的軟工書籍有問題。所謂的實踐分享也並不像想的那麼有意義。這很讓人飄飄然,感覺比CMMI、敏捷這類東西看的還遠,但個人骨子裏還是有點不自信的。儘管如此,最終我選擇相信邏輯,把這些離經叛道的分析和觀點都放在書裏面---只要它有清晰的邏輯支撐。

 

 

就這樣,從管理寫到編碼,主要乾的事情是讓書裏邏輯通暢。這又有點不知天高地厚---你想想,整這麼本想論文一樣的書出來,深刻可能是深刻了,可誰看啊!接下來等到要出版的時候,又回過頭來考慮,怎麼讓它容易懂一點。但就像一個人的性格一定,八頭牛也拉不回來一樣,書的調子一定,除非推導重來,否則也挺難改的,作爲結果,可讀性略有改善,但總的來看還是抽象。

 

這裏的經驗是易讀性這事最好在最初定書籍結構的時候就考慮進來。

 

大致是這麼個過程。

 

至於怎麼出版什麼的回頭在下篇裏主力介紹下。

 

最後想說的是,雖然寫來寫去,自己是滿意了,也感覺基本達成了自己的目的:獨立視角,邏輯嚴謹。但很多地方真是有點抽象,不是很容易看懂,有想捧場的兄弟,如果畢業不到3年,還是慎重考慮下,免得買了看不懂,罵我一頓。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

理想流 + 軟件 = 《完美軟件開發:方法與邏輯》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和邏輯推演本質,追求真理。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章