軟體設計的沉靜|ONES 技術人

萬事ONES發表於2022-03-04

image.png

蔡明金自稱他是吉他「十年初學者」。在讀大學期間,他跟夥伴組過樂隊。如今,投身技術工作,他對協作、程式設計和軟體設計都有「沉靜式」理解。

以下是蔡明金與 ONES 故事——部分來自其自述,部分來自他某次技術分享會的內容。

image.png

冷靜解決問題

我以前的脾氣比較暴躁,如果發現產品設計上的不一致,就會懟回去,毫不留情面。

現在我有了很大的轉變。我覺得,能夠心平氣和地與別人在一件事情上達成一致,朝著共同的目標去完成任務,也是很好的體驗。

學會冷靜地解決問題、處理人際關係,是我進入 ONES 工作兩年多以來看得到的成長。雖然可能跟我的年紀漸長有關係,但更重要的是受到的 ONES 工作氛圍薰陶。

在有些公司,部門之間邊界明晰、涇渭分明。而 ONES 是一家認真做產品的公司,部門之間的聯絡和合作很多,所以平時瞭解彼此的習慣和處境,耐心地溝通,這樣下來從結果來看效率也並不會降低。

最近,我梳理了《軟體設計的哲學》這本著作的內容,和同事們做了一次交流。

戰略性程式設計

哲學是一種冷靜的處理方式。我之所以做這個分享,主要是想告訴大家,哲學其實是工作過程中的點滴,目標是讓大家更有意識性地編碼。總的來講,是**希望大家要進行戰略性程式設計,而不是戰術性程式設計。
**
軟體設計是工程、數學、藝術、文化的融合創造。軟體設計裡面有「門道」。

軟體設計整體目標是減少複雜度。而所謂的複雜度反映的是:軟體系統的結構的理解、修改的難易程度。

如果你嘗試了一個方法但是沒有減少複雜度,你很可能沒必要保留它。

具體來看,複雜的特徵包括:

1.當新增特性時,需要修改大量的程式碼;
2.當需要開發一個功能時,開發人員需要了解許多知識;
3.當新增/修改功能時,不能明顯地知道要修改哪些程式碼。

可以概括為:系統是不是難以理解,系統是不是難以修改——如果是,那麼這就是複雜的。

複雜度並不是由單一的巨大錯誤產生的,它是由很多小錯誤累積而成的。一個簡單的依賴和晦澀的名稱定義,並不足以影響整個系統。但是積少成多,數量足夠多時會導致複雜度。最後,任何小的改動都會影響整個系統。

介面是一種別人需要記住的資訊,那麼過於多的介面,或者過於複雜的介面都會加重別人的認知及理解負擔。這就是一種複雜性的引入。

「異常」一詞是指代任何會改變程式中正常控制流程的不常見條件。充分考慮容錯的情況下,異常處理可以佔系統中所有程式碼的很大一部分,但錯誤處理並不是越多越好,這會導致一種過分防禦的風格,其中任何看起來甚至有點可疑的東西都會丟擲異常,這就變成了異常的泛濫,從而增加了系統的複雜性。

為了快速完成一個任務,也許你有一個截止期限,此時長期的效益並不是首要考慮的事情。你沒有花更多的時間尋找好的設計,你只是想快速解決問題,你想的是寫一堆程式碼去實現功能,越快越好——這只是戰術性程式設計,不可取。

戰略性程式設計是從小事做起,是不斷地在當下做“小投資”,不斷地尋求更好的設計,以換取長期的複利回報。

相關文章