重點摘要#
- 架構師習慣性地立刻進入解題模式,但有時最好的解法是不解題
- 很多軟體問題只是看起來像問題,實際上只是症狀
- 在解決問題之前,先問自己:「如果這個問題不存在,架構會長什麼樣?」
- 質疑問題本身,而非被動接受需求
詳細內容#
架構師過去多半是開發者,開發者因解決程式問題而獲得獎勵。這些通常是小型的、精巧的演算法問題。這種對解題的迷戀會讓我們養成壞習慣——隨著時間推移,我們開始不加思索地接受問題,不問這個問題是否有意義、是否有用、是否符合道德。
有時候最佳解法是不解題#
很多軟體問題其實不需要被解決。它們只是看起來像問題,因為我們只看到了症狀。
- 考慮託管記憶體的例子:託管平台上的開發者並沒有「解決」記憶體問題——他們的解決方案讓這個問題根本不存在
- 考慮複雜的建置流程:與其解決建置問題,不如退一步思考——這其實是自動化和可攜性的問題,可能有工具可以完全消除它
我們不應該成為需求的被動接收器,像 Pez 糖果機一樣開心地分發我們最聰明的解決方案。
改變問題而非解決問題#
- 像使用長焦鏡頭一樣,放大和縮小來確保問題被正確框架
- 不要僅僅接受被給予的問題,要質疑我們接收到的東西
- 問自己:「如果我根本沒有這個問題,架構會長什麼樣?」
- 看看是否能改變問題本身,這往往能帶來更優雅、更可持續的解決方案
我們必須打破對「問題」的沉迷。在考慮答案之前,先想想如果這個問題不存在,世界會是什麼樣子。
— By Eben Hewitt