如何培養架構性思考(談軟體架構師必經之路)
Transcript of 如何培養架構性思考(談軟體架構師必經之路)
你對軟體架構師的印象?
嘴砲王?
懂很多東西?什麼都會?打雜工?水電工?
但是只會說,不會做?
軟體架構師在做些什麼?
需求訪談?拉賽?系統分析(SA)?
說很多?但是都不是他做?
開 Table? 系統設計(SD)?
畫流程圖?撰寫需求規格?開立程式規格?
Coding?建立 Coding Standard?建立規範?
導入流程?遊說公司使用新技術?
丟棄舊系統,換新系統?
系統設計?RD研究發展?叫人寫程式?
帶人做專案?產品經理?
軟體架構設計 vs Design Pattern
究竟軟體架構設計與 Design Pattern 究竟有什麼不一樣呢?
所謂的 Design Pattern 中文譯為設計模式,他是種程式碼設計思維,通常用以解決一些程式碼設計時常見的一些像是易懂、易維護、易修改、耦合度低等等議題
PS:其實架構設計是一種思考模式
軟體架構設計 vs Design Pattern
所謂的架構設計則談得更廣,不像 Design Pattern 只關注某一塊程式碼的設計,架構設計則比較需要全面性的思考,不光是程式碼架構、分層,開發架構的分層、跨機器的分層,舉凡效能議題、Ap Server所使用的通訊協定、Ap Server架構規劃、網路規劃、資料庫系統規劃,甚至作業系統、檔案系統,都可以說在軟體架構設計範疇內。
軟體架構師須具備的技能(1)
能屈能伸
(架構師最好各種角色都經歷過PM/SA/SD/PG/RD)你才會知道專案每個階段該注意什麼?
做牛做馬 (會變身) 超級賽亞人無誤
(搞得我好亂XD)
軟體架構師須具備的技能(2)
背爛系統經驗多
重構
懂得多、懂得廣
一定要會寫程式 (很重要)
從無到有、規劃、獨自 Hot Code 撰寫、開發、系統相關經驗
軟體架構師須具備的技能(3)
維持對軟體的熱情
對市場需求、解決那些問題 (自己有那些問題) 有足夠的洞察力
有用的技術
軟體架構師必須對於技術、工具有(評估/選擇)的能力
接受改變、擁抱改變、切忌一成不變、相信事情永遠有更好的解決方法
什麼是必經之路?
一切從可 Troubleshooting 開始
你可以問,但是,通常你如果可以問對問題,其實答案都不遠了..
自己解決問題、那都是經驗值的加分
一切都是經驗:為了讓軟體更容易維護、開發、一致化的開發方式
了解「運作原理」勝於一切
除了實務經驗外,不足的還是要多讀書…
不要害怕新的挑戰
做專案的軟體架構師 VS 做產品的軟體架構師
關注點會有些不同
顧客需求勝於一切,顧客就是老闆,軟體不能出錯
專案的軟體架構師需先掌握 Known-How
產品掌握的是市場的需求
軟體客製化、延展性、擴充性,賣錢勝於一切,產品不能出錯 (產品更重視品質)
產品品質 = 公司招牌
如何培養養架構性思考?(1)
實際 Coding 時,該在腦中進行的小迴圈
即便是 Coding,也要以架構師的角度來看程式碼
程式來自於需求 需求完成程式
專案的 Domain Known-How 重要性 (優先性) 絕對高出技術許多,難道說技術不重要嗎?當然不是,而是精準掌握住客戶的需求,那麼剩下的,就只是技術的問題而已。如此一來,你會知道那些 Business 是高可重用性的
如何培養養架構性思考?(2)
https://www.slideshare.net/GelisWu/gelis
http://www.microsoft.com/taiwan/techdays2012/
http://www.microsoft.com/learning/zh/tw/
http://social.technet.microsoft.com/Forums/zh-tw/categories/ http://social.msdn.microsoft.com/Forums/zh-tw/categories/
http://www.microsoft.com/taiwan/techdays2012/
http://www.microsoft.com/learning/zh/tw/
http://social.technet.microsoft.com/Forums/zh-tw/categories/ http://social.msdn.microsoft.com/Forums/zh-tw/categories/