夢斷程式碼讀書筆記(一)

ZzHhyao發表於2024-06-12

《夢斷程式碼》一書記錄的是作者羅森伯格對OSAF主持的Chandler專案進行田野調查,透過Chandler開發過程來揭示軟體開發過程中一些根本性的大問題。對本書才剛剛閱讀了三分之一,就已經忍不住對作者描述的開發過程所感嘆,雖然剛進入軟體領域不久,但是仍舊有感於這本書中的現實,對自己也很有啟發。

初讀本書,最讓我耳目一新的就是它的章節排布,出現了第0章。印象最深的一句話是作者在寫到關於“hello world”時提到的一句話,“既然能叫它說話,就能讓它做任何事”。遙想自己剛入門程式設計的時候,對helloworld還懵懵懂懂,但是仍舊不減對軟體世界的憧憬,無論是手機上還是電腦上,五花八門的軟體甚至讓我有過把手機上的軟體全部換成自己開發的軟體的幻想(雖然不切實際,但確實是高中時就對軟體工程專業的憧憬)。而作者將首個章節標記為第0章的意義,就是程式設計師從0開始計數的寓意。從0開始憧憬,從0開始進步,計算機也是從0開始計數的,從0開始,我第一次讓計算機說出了helloworld,同時也激發了我對軟體的興趣與期望。

在當今社會,軟體已經成為人類生活中不可或缺的一部分,“人類文明執行於軟體之上”的說法雖然有點自賣自誇,但它很是明確的反應了軟體在人類社會中的地位。它存在於廚具裡、汽車裡、玩具裡、建築中,商業、科研、醫療、基礎公共設施哪裡都有它的影子,人類生存之所需都繫於計算機程式碼這根易斷的細線上。軟體事業發展至今,也不乏面臨過、面臨著許多困難。而從事與軟體事業的程式設計師們,最優秀的品質莫過於面臨困境還不忘幽上一默的樂觀態度,也正是這樣的樂觀態度,才使得軟體能夠不斷地被修復、被更新,以至於發展到今天這個軟體縱橫的社會。

還記得大一下學期有一段時間對遊戲開發產生了興趣,當時的熱情激勵我學習了C#,學習了unity,甚至學習了一部分3d建模(當然時間問題並不精通)。在自認“學有小成”之後,我決定從0開始開發一個自己的遊戲,雖然都說“若能取之於現有,程式設計師絕不肯創之於本無”,但是心中的熱情還是促使我創造自己的程式碼與模型。經過一個月的建模工作,終於搭建好了一個比較滿意的地圖,但是當地圖搭建完成之後,我突然不知道遊戲的主題應該往哪個方向發展了,做射擊類?但是地圖又不能很好的支援劇情。做冒險類?又沒有太多的素材。最後終於在進行一段胡亂編碼後不了了之。

這件事之後,我也是充分認識到了架構的重要性。如果在動手開發之前沒有合理的設計方案,沒有列出可能的錯誤,沒有給定開發的方向以及注意事項,最終的結果就是白費力氣,要知道,軟體不等同於程式。一個簡單的程式可以不用明文的設計,一股腦的敲程式碼或許就能實現,但是軟體不一樣,如果一開始不確定軟體的功能模組、體系架構,到後期就會出現無數種不確定性。在後來的web開發中,我充分吸取了以前的教訓,無論多麼簡單的web專案,都首先確定其架構,列出功能項和子功能分佈,資料庫的資料表結構設計,以及開發過程中需要注意的事項,這些開發前的準備往往會大大減少編碼時間,讓編碼時的思路更加清晰。

在《夢斷程式碼》中,Chandler的開發過程中就有我碰到的問題的放大版,雖然Chandler開發過程中制定了很多的開發計劃,但是每一個決定中都包含了不確定性。構建軟體最難的部分是決定說什麼,而不是怎麼說。如果沒有一個好的決策,就像在沒有凝固的地面上建樓,怎麼能站得穩呢?

書中提到一句話,“唯有萬丈雄心能助你艱難前行”,這其實是對軟體開發過程中某種現狀的諷刺,即僅僅抱著自己的工作能改變人們生活的期望投入開發,沒有合理的、完整的、優秀的設計與決策,僅靠“萬丈雄心”,是很難做出成果的。

綜上,清晰的思路、合理的設計是開發軟體必須的第一步。

相關文章