如何培養架構性思考(談軟體架構師必經之路)

23
如何培養架構性思考 (談軟體架構師必經之路) http://www.dotblogs.com.tw/gelis/

Transcript of 如何培養架構性思考(談軟體架構師必經之路)

Page 1: 如何培養架構性思考(談軟體架構師必經之路)

如何培養架構性思考(談軟體架構師必經之路)

http://www.dotblogs.com.tw/gelis/

Page 2: 如何培養架構性思考(談軟體架構師必經之路)
Page 3: 如何培養架構性思考(談軟體架構師必經之路)
Page 4: 如何培養架構性思考(談軟體架構師必經之路)
Page 5: 如何培養架構性思考(談軟體架構師必經之路)

你對軟體架構師的印象?

嘴砲王?

懂很多東西?什麼都會?打雜工?水電工?

但是只會說,不會做?

Page 6: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構師在做些什麼?

需求訪談?拉賽?系統分析(SA)?

說很多?但是都不是他做?

開 Table? 系統設計(SD)?

畫流程圖?撰寫需求規格?開立程式規格?

Coding?建立 Coding Standard?建立規範?

導入流程?遊說公司使用新技術?

丟棄舊系統,換新系統?

系統設計?RD研究發展?叫人寫程式?

帶人做專案?產品經理?

Page 7: 如何培養架構性思考(談軟體架構師必經之路)
Page 8: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構設計 vs Design Pattern

究竟軟體架構設計與 Design Pattern 究竟有什麼不一樣呢?

所謂的 Design Pattern 中文譯為設計模式,他是種程式碼設計思維,通常用以解決一些程式碼設計時常見的一些像是易懂、易維護、易修改、耦合度低等等議題

PS:其實架構設計是一種思考模式

Page 9: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構設計 vs Design Pattern

所謂的架構設計則談得更廣,不像 Design Pattern 只關注某一塊程式碼的設計,架構設計則比較需要全面性的思考,不光是程式碼架構、分層,開發架構的分層、跨機器的分層,舉凡效能議題、Ap Server所使用的通訊協定、Ap Server架構規劃、網路規劃、資料庫系統規劃,甚至作業系統、檔案系統,都可以說在軟體架構設計範疇內。

Page 10: 如何培養架構性思考(談軟體架構師必經之路)
Page 11: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構師須具備的技能(1)

能屈能伸

(架構師最好各種角色都經歷過PM/SA/SD/PG/RD)你才會知道專案每個階段該注意什麼?

做牛做馬 (會變身) 超級賽亞人無誤

(搞得我好亂XD)

Page 12: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構師須具備的技能(2)

背爛系統經驗多

重構

懂得多、懂得廣

一定要會寫程式 (很重要)

從無到有、規劃、獨自 Hot Code 撰寫、開發、系統相關經驗

Page 13: 如何培養架構性思考(談軟體架構師必經之路)

軟體架構師須具備的技能(3)

維持對軟體的熱情

對市場需求、解決那些問題 (自己有那些問題) 有足夠的洞察力

有用的技術

軟體架構師必須對於技術、工具有(評估/選擇)的能力

接受改變、擁抱改變、切忌一成不變、相信事情永遠有更好的解決方法

Page 14: 如何培養架構性思考(談軟體架構師必經之路)
Page 15: 如何培養架構性思考(談軟體架構師必經之路)

什麼是必經之路?

一切從可 Troubleshooting 開始

你可以問,但是,通常你如果可以問對問題,其實答案都不遠了..

自己解決問題、那都是經驗值的加分

一切都是經驗:為了讓軟體更容易維護、開發、一致化的開發方式

了解「運作原理」勝於一切

除了實務經驗外,不足的還是要多讀書…

不要害怕新的挑戰

Page 16: 如何培養架構性思考(談軟體架構師必經之路)
Page 17: 如何培養架構性思考(談軟體架構師必經之路)

做專案的軟體架構師 VS 做產品的軟體架構師

關注點會有些不同

顧客需求勝於一切,顧客就是老闆,軟體不能出錯

專案的軟體架構師需先掌握 Known-How

產品掌握的是市場的需求

軟體客製化、延展性、擴充性,賣錢勝於一切,產品不能出錯 (產品更重視品質)

產品品質 = 公司招牌

Page 18: 如何培養架構性思考(談軟體架構師必經之路)
Page 19: 如何培養架構性思考(談軟體架構師必經之路)

如何培養養架構性思考?(1)

實際 Coding 時,該在腦中進行的小迴圈

即便是 Coding,也要以架構師的角度來看程式碼

程式來自於需求 需求完成程式

專案的 Domain Known-How 重要性 (優先性) 絕對高出技術許多,難道說技術不重要嗎?當然不是,而是精準掌握住客戶的需求,那麼剩下的,就只是技術的問題而已。如此一來,你會知道那些 Business 是高可重用性的

Page 20: 如何培養架構性思考(談軟體架構師必經之路)

如何培養養架構性思考?(2)

Page 21: 如何培養架構性思考(談軟體架構師必經之路)

https://www.slideshare.net/GelisWu/gelis

Page 22: 如何培養架構性思考(談軟體架構師必經之路)

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/

Page 23: 如何培養架構性思考(談軟體架構師必經之路)