※ 引述《musashi023 (太陽魚)》之銘言:
: Senior:
: 1. 能設計軟體架構
: 2. 活用design pattern
先說
我不會寫C++
但是關於軟體架構和Design Pattern我可以補充一下
軟體架構實際上在台灣多數職場裡的狀況
大概可以用一句話來形容
理想很飽滿、現實很骨感
學習怎麼設計架構和Design Pattern當然是一件好事
這些工具放入你的工具箱裡
不只代表你會使用這些工具
而且你還具備了「知道這世界上存在這些工具」的概念
看起來好像是廢話
但其實這麼多年看下來
很多工程師甚至連有Design Pattern這些工具都不知道
或者只是稍微聽過但因為各種原因沒有深入理解
你看到這裡可能會覺得奇怪
你明明問的是學這些算不算senior
但我怎麼開始提「其它人」或「職場狀況」?
因為
其實重點就在「其它人」身上
我挑明了說
軟體架構和Design Pattern
絕大部份時間不是工程問題
是政治問題
除非你進的公司只有你一個工程師
或你是帶頭的底下只有一兩個工程師
而且他們唯你是從
不然你要討論架構
或是什麼地方該用哪一種DP
我的經驗是
到最後都會淪為某種形式的政治角力
如果組織大一點
一切都要看那些資深老屁股們願不願意聽你的話
你如果想把一個模組重構
最好是先說服其它人再開始幹
事實上
所有關於這類架構方面的東西
通通都是需要團隊先溝通過
大家都OK願意照著開會所訂出來的規範走
最後才可能會有比較好的結果
不然很可能會變成最常見的狀況
就是大家各自為政
想怎麼改就怎麼改
每個人都自成一派
架構就變得亂七八糟
而做review的人很可能也不具備判斷其它工程師設計的架構到底是好是壞的能力
所以就亂review一通
最後系統變得四不像
每個地方的寫法慣例都不一樣
然後主管看導入這些有的沒的根本沒有比較好
接著就放棄繼續使用DP或其它一些架構方面的工具了
這也才是架構與DP最困難也最精華的地方
不是學習怎麼使用
是學習什麼時候什麼場合該用
甚至是學習怎麼說服別人一起來使用
你要真正學好這些東西
你永遠都要把這個概念放在心底
架構永遠是人的問題
不會只是工具的問題
解決人的問題就解決八成了
剩下的就是執行面的細節而已
這真的簡單多了