《軟體方法》讀後感

IntoTw發表於2023-04-07

前言

近日,苦於不知道該怎麼提升自己了,在原來老大的建議下,決定去學習一些關於建模和軟體設計領域的書籍,來解決解決自己“感覺不對,但是說不清楚為什麼不對”以及“感覺這麼搞就對了,但是不知道為什麼這麼去規劃,這麼去劃分就對”

第一本看的是潘加宇老師的《軟體方法(上)業務建模和需求》,本篇讀後感不再對文裡的概念和內容一一贅述,只說說個人提煉到的收穫

業務系統是人腦系統的對映

這是一個很關鍵的概念,也是讓我們認清業務系統的本質,所以我們討論很多問題是,也就有了依據。

我們平時所看到的軟體系統,都以業務系統為主,他們要麼是人腦系統的替代,要麼是現實流程的表示,明白了這一點本質以後,我們對系統的邊界和其中邏輯的合理性,就可以有了一個標尺。而不是“我覺得這裡這麼做不對,這個邏輯不對,但是具體又說不出來哪裡不對,反正會出問題,這裡不合理”。

我們如何用這個標尺來評價問題呢?舉一個筆者瞭解到的例子,一套志願填報輔助系統,其中有個“一鍵填報”的功能,智慧推薦一些志願,但是其推薦的邏輯竟然是選擇一批志願後,經過各種一系列花裡胡哨的隨機操作來“看似”隨機得到一些資料,推薦給使用者。

我們透過這個觀念去思考這個問題,難道一個志願填報報考專家,在幫助一名學生選擇要填報的院校時,會一直“隨機”挑選一些院校,而不是根據某些“標準”嗎?

用潘加宇老師的話來說,這樣的需求既不符合系統的“願景”,也不符合涉眾的“需求”,系統的願景絕對不是隨機給使用者返回一些資料,系統涉眾(系統的買家)的需求也絕對不是你給他隨機返回一些資料。

作為一個志願填報系統,系統的願景一定是幫助使用者填報志願,指標可以是“更快的填報,更好的填報,更準的填報”,涉眾的需求,也一定就是你的願景。

阿布思考法

在軟體開發團隊中,當有人提出新的想法時,經常會被馬上否定“這太難了,這做不了”,最終得到一個平庸的、毫無競爭力的系統。學會像阿布一樣思考,有助於克服普通人因資源受限而不敢展開想象的思維障礙。阿布思考法分兩步:

(1)假設有充足的資源去解決問題,得到一個完美的方案;

(2)用手上現有的資源去山寨這個完美方案。

如果有一個方案,花費完美方案1%的資源,能達到完美方案20%的效果。這個方案已經是目前最好的方案了,因為它是在突破思維限制以後一步步往後退得來的。

在我們平時討論需求或者功能時,總是疏於討論或者思考,也許這是國內軟體公司發展時間較短帶來統一的弊端。我們總是因為排期,或者上來就帶入思路考慮實現的複雜度,來導致最後的方案不盡人意,其實這種思考方式只是從業者經驗的濃縮,每個人的想法和理由都帶著自己“私貨”,產品經理一般沒有能力和時間考慮的過於完整,專案經理在意專案的時間,研發經理在意實現的複雜度帶來的系統問題,也在意專案的時間。

但是這種考慮問題的角度,不利於公司的發展和軟體價值的實現,這裡就涉及到了“大部分企業中層領導的利益價值和企業整體的利益價值是矛盾的”這個比較大的問題。我們就不深入討論了。但是站在軟體系統本身的價值來看,我們應該使用阿布思考法來考慮問題,即:儘可能先得到一個完美的方案,再考慮其中無法實現的地方去山寨。

我們舉一個具體例子來看待這兩種思考方式的區別,假設我們現在要研發一套自動駕駛技術的全套方案,按照阿布思考法,我們會從“如何才是完美的自動駕駛”這個點來考慮問題,考慮出需要的如31套各個細節子方案後,再依次對子方案找到目前最好的替代方案,最後得到了一套“目前時代下最好的自動駕駛系統”。

如果使用通常的思考路徑去考慮,會發現在一開始就寸步難行,我們不知道一套自動駕駛技術方案要包括哪些方案,就算去思考,得到的也是支離破碎的一些方案,甚至落地的時候才會發現:“哦,這裡原來少了個這個東西,需要再考慮下這裡怎麼實現”。要麼就乾脆先照抄友商,然後在UI、互動等方面做點“微創新”。但是如果沒有友商呢?如果你是二次創業呢?這種思考方式無法幫你領會到新的東西,也無法幫你找到終極的方向。