[Chatter] 引用新技術的考量

摘要:[Chatter] 引用新技術的考量

新技術不是不能用,而是堆了新技術,接手的人就要學會這些。


這邊對於新技術的定義,是很廣泛的定義為系統中沒有使用過的技術。在系統一開始的時候,技術需求就是一片空白,後續設計的時候,每次加入的沒有用過的技術,都需要去考量是否有延續性、是否要定義為基礎技術...等等考量。大一點就像是要不要使用Design Patterns、DDD、TDD,或是MVVM要不要用、ASP.NET MVC不錯要不要推。小一點的就像是版本控管要用哪種、版本分支、合併的策略是甚麼。這些都是需要依照目前團隊、未來目標等等方面去考量。


每個系統都有隱藏的專案天賦表,天賦就是系統裡的技術,開發人員點滿天賦才能吃透系統。
--以開發人員的角度來說,自己天賦當然是越多越好,並且也比較有趣。
--但開發管理的角度來說,專案天賦表越多,就代表替補人力需要更高的等級。
這是設計上需要取捨的點,並且很難取到平衡......


而如果單純從系統設計的角度來看這個議題。我目前是試著採取,透過系統架構層級去切割不同等級的區塊,並且為每個區塊的關鍵技術建立可延伸的框架、樣版,這樣兩種方式來處理。


--例如說:將系統切割為N層,後三層需要多執行緒設計、前兩層只需要單執行緒設計、額外一層需要Web開發。透過這樣的方式,就可以概略的依照開發人員的技能等級來分配人力。


--例如說:先前寫過的 MVVM Plugin模式、Device Projection模式,就分別為展示層、通訊層定義了關鍵的樣板技術。透過這樣的方式,後續替補人力等級低的時候,就先照著樣板直接開發系統,透過使用、學習樣板慢慢提高技能等級,進而設計樣版、設計系統。


這是還在摸索中的做法,團隊也都是不超過10人的小團隊,一時還看不出大問題,等哪天爆炸了再看看怎麼調整吧。Orz


期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。