2. 兩種價值觀的故事

履行參與戰鬥的責任

Posted by willsbor Kang on 2018-09-05

兩種價值觀的故事

行為 / 架構

每個軟體系統都會為利益相關者提供兩種不同價值

  • 行為 (behavior)

    利用 功能規格 (functional specification)需求文件 (requirements document) 來達到這一點,然後實作程式碼,並且除錯。

    可悲的是:許多程式設計師認為這是們的全部工作。

  • 結構 (structure)

    軟體 (software -> soft + ware) 必須是軟的,他可以輕易地改變機器行為的一種方式。當利益相關者改變他的們想法時,應該要能簡單輕易做到。改變的難度應該與改變的範圍成正比,而不是與改變的形狀 (shape) 成正比。

    這裡用了非常規的描述「形狀(shape)」,開發人員常常覺得自己被迫將「方釘」塞入「圓孔」中。

    這是系統架構問題。架構越喜歡一個形狀,新的功能就越難以適應這種架構,因此架構對於形狀應該是不可知的,這樣才實用。

`這章節算是我第二次看,但我還是難以想像 shape 想要代表的是什麼?如果以 abstract interface 的概念去想,架構是一個介面,而 shape 是實作嗎?🤔

「架構越喜歡一個形狀」我想應該是指架構不要依賴某種實作吧…`

而開發人員有責任確保他們都保持在高價值,但…QQ

更高的價值

功能還是架構?哪個能提供更高的價值?兩個極端的狀況:

  • 如果您給我一個完美的程式,但不可能修改,那麼當需求改變時,他就不能工作了,而我也將無法其工作。所以這個程式將變得毫無用處。

  • 如果您給我的程式不能工作但亦於更改,那麼我可以使其工作,並隨著需求的變化而繼續工作。因此該程式將持續是有用的

實際上程式都可以改變,之所以「不可能改變」是因為改變成本超過了改變的利益。只是往往業務經理通常會覺得目前功能比起靈活度重要。

但之後的變更,往往只能把變動成本估計高得難以置信...然後業務經理就生氣了 QQ

Eisenhower 矩陣

我有兩類問題,緊急和重要。緊急的不重要,重要的不緊急。 (Dwight D. Eisenhower 總統 1954)

  • 行為 - 是迫切的,但是並不總是特別重要
  • 架構 - 是重要的,但從不特別迫切

最終可以安排順序:

  1. 迫切且重要
  2. 不迫切但重要
  3. 迫切但不重要
  4. 不迫切也不重要

程式碼的架構 (重要的東西) 位於前兩位,而行為只佔據了第一和第三

軟體開發人員的困境是業務經理沒有能力去評估架構的重要性。「而這就是軟體開發人員該去做的」

為架構而戰

履行這個責任意味著參與戰鬥。作為一名軟體開發人員,你就是一個利益相關者。有效率的團隊正為這個問題而奮鬥。他們毫不掩飾且平等地與所有其他利益相關者爭吵。

軟體架構師更側重於系統的結構而不是其特性和功能。架構師建立了一個架構,使得這些特性和功能易於開發、修改且輕鬆擴展。

這點也還在努力學習,回想自己的工作,往往太過於站在產品的角度去思考,反而沒去堅持該堅持的。大概能理解作者想說的事是,一個目標,需要有不同的角度去拉扯,但看過一些 MVP 或是精實創業的書,常常會說到,如果一開始產品方向就錯誤,其實「架構」再好也沒用。🤔這裡我也沒什麼定論,只覺得這個是勝者為王,敗者為寇的事情XD,不過身為想要成為架構師的我,或許該重新來堅持必要的東西。