小編:架構師是否需要寫代碼,這個話題已經記不起從何時開始,在攻城獅圈內成為一個經常拿來討論的話題,上周中生代深度交流群群友們對此問題做了有一個較為深入的交流,小編不是生產者,我只是搬運工。
概要:
1、架構師是神馬獅,代碼是什麼馬
2、架構師的成長之路
3、架構師是使用代碼作畫的大獅
4、本期「小獅子」獎
1
架構師是什麼獅,代碼是什麼馬
記得那天是這樣的,總導演(右導)一拋出話題,群內雄獅們可炸開了鍋:
獅子郭:架構師應該寫代碼,架構師需驗證自己架構上想法的可行性…
獅子肖:架構師必須得做到了解現狀,方案與實際相符,別和猿類離得太遠...
獅子 P:架構最早是源自建築,沒見過建築架構師碼過磚。
獅子木:仰望星空,腳踏大地。
大夥交流得很 high,本獅卻覺得心底空鬧鬧的,我們在討論架構師是否需要寫代碼的時候,我們先看看架構師的定義:
系統架構師:一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物 --- 某百科
既然是討論一下架構師是否需要寫代碼這事,那我們先從何謂架構師開始說說,從某百科拿過來的定義,大家可以看到,架構師既要掌控整體,又需洞悉局部,終極目標是給出解決方案。
本著 「以終為始」 的原則,架構師只要根據具體的業務場景給出解決方案即可,與是否 Coding 本沒有直接關係,所以,從定義(完全否定且糾結的 TX 可以選擇性觀看)上看,架構師不寫代碼,本獅是認為沒什麼問題
初步論斷:架構師搞定解決方案即可,和寫代碼本木有關係。
要是在群內下這個結論,火爆(火爆脾氣對架構師可不好)脾氣的獅子們可能早就開始扔臭雞蛋過來了,為了防止不必要的意外傷害,我們繼續:
什麼東西觸發出架構這個工作?即觸發架構原動力是什麼?
Kevin(王凱)老師在什麼是架構中聊到,觸發架構的原動力:人對某項工作有更高的要求,且獨立人的能力和時間相對有限。
個人粗淺理解:架構觸發的原動力是目標越來越大,獨立人的能力相對越來越弱,隨著社會的發展,分工也就必然產生,怎麼讓 1+1>2 甚至 N 呢?我們就趨向於推舉一個人,專注於更好的讓我們一群人更高效,愉悅的幹活,並且還有更好的回報。架構這個事就產生了,當然,此處不一定是軟體系統架構,也可能是組織架構,甚至其他行業領域的架構。
回到最初的問題,軟體架構師應該做什麼呢?同理,讓一群碼工能夠開心愉快而又高效幹活,最終還能達到更高的目標。這麼一分析,似乎還是和代碼木有什麼關係,只要讓我們開心的幹活,最終達到更高的目標即可。
閒話扯了一丟丟,都沒說到點上,到底要說撒呢?
正如獅子 P 所說,架構最初源自建築,建築的架構師們基本不碼磚,憑啥軟體架構師就需要 Coding?本獅在看到如此問題的時候,也呵呵了良久,在實在呵呵不下去的時候,不小心看到幾個描述:
軟體特性包括(不限於):
1、無形的,沒有物理形態,只能通過運行狀況來了解功能、特性、和質量
2、軟體滲透了大量的腦力勞動,人的邏輯思維、智能活動和技術水平是軟體產品的關鍵
看到上述描述,不知道看官是否也有所悟,為了嘗試解釋一下,本獅想起了曾經親身經歷的一個事,大家都知道四川有個非著名茶葉「竹葉青」,第一次去店裡準備買點的時候,發現分為「品味」,「靜心」,「論道」等幾個品種,怎麼記也記不清,最後服務員妹子終於忍不住直接說:品味是最便宜的,精心是第二便宜,論道是最貴的,一下頓覺整個世界都敞亮了。
2
架構師成長之路
圖片引自:西喬《架構師成長之路》
說了一堆獅子跟馬的事,回到正題,架構師到底要不要寫代碼呢?那我們再看看架構應該具備什麼能力和素養?部分(本著能搬的一定搬,不能搬的創造條件也要搬的原則):
2.1
以實踐檢驗為榮,以道聽途說為恥(琅琊榜首莊叔)
每個好架構師都是一個卓越的程序猿(媛),架構師每個方案或者技術的決策,必須經過實踐的檢驗,不能因為一篇技術文章,一個布道師的宣傳而隨意決策,讓攻城獅們到城下才發現沒帶梯子,這也是大夥首先提及:
獅子郭:架構師應該寫代碼,架構師需驗證自己架構上想法的可行性。
獅子肖:架構師必須得做到了解現狀,方案與實際相符,別和猿類離得太遠。
…..
2.2
過硬的技能和全局的視野
技能硬不硬,時間是檢驗真理的唯一標準,此處無須贅述。
「視野決定格局」,不記得在哪聽過了,曾經覺得挺裝 X 的,不知道是自己膨脹了還是真的成長了,現在感覺真實在理;個人理解視野源自豐富的經歷,且對經歷的深度吸收(結合理論)後,以更加深刻的方式去審視、歸納、抽象,做出更加「鞭辟入裡」的輸出分享。
獅子周:版本控制,持續構建,分布式緩存,分布式存儲,多線程,資料庫,linux,消息隊列。
獅子俊:技術技能上,運維體系,自動化工具,大數據等;
獅子郭:業務流成熟後,大家都是關注高並發,高可用,分布式。
獅子於:眼到,手到,心到。看見的是眼,練習實戰是手,鞭辟入裡,融會貫通是心到。
2.3
具備必要的管理技能
可能很多架構師會覺得作為架構師,技術是首要的,給出合理的解決方案是關鍵,至於管理,P 關係是沒有的(本獅曾經也這麼認為的)。
楊波老師,Kevin 老師在聊聊架構中都有聊到,架構是發現利益相關人(stakeholder),並且解決他們的關注點,管理技巧本獅三腳貓也算不上,YYbook 也沒通讀過,處理好利益相關方(客戶、領導、開發、上下級等)是項目成敗非常重要的因素還是有所耳聞,這不,群內有獅子就被此類問題嚴重困擾。
獅子俞:最最大問題就是沒有優先級,突然想起來的東西就加到前面來;管理問題引發了技術問題,導致技術的東西迫於時間可能不能很好的展現和使用。
獅子俞接著說:新團隊領導和產品經理都比較特殊,導致把控太難,需要長時間磨合;
獅子聰:需求流程化,定好優先級,開發進度透明化,讓領導清楚明白大家都很忙,別想插就插,真要插還是看得出代價的,能夠講明白,能夠儘量量化成本和產出的話,老闆還是懂得取捨;
獅子劉:我們產品也會臨時加需求,我們會根據優先級調整,如果卡時間點,就把優先級相對低的需求放到下一個版本。
廣告獅:管理問題,大衛張33博客http://davidzhang33.blog.51cto.com
2.4
以理解用戶為榮,以想當然爾為恥(以莊叔金句結尾)
「以客戶為中心」這句話在華為內部經常被各大領導頻繁提及,之前任老闆為華為內部一篇文章《華為宿敵思科,誕生愛情土壤中的技術之花》寫下按語:「我不如錢伯斯,我不僅傾聽客戶聲音不夠,此處省略數字。。。雖然我不斷號召以客戶為中心,但常常有主觀臆斷。儘管我與錢伯斯是好朋友,但又真正理解他的優點有多少呢?」(備註:錢伯斯作為 CEO 第一次參加董事會,錢伯斯遲到 20 分鐘,因為他在電話中為一個客戶排憂解難)
本獅再次理解一下架構師的客戶至少有誰:產品用戶,開發甚至測試人員。所以如果架構師們都足夠「以客戶為中心」,功能(或技術)堆砌而無視客戶價值的產品,PPT 架構師等奇葩相信會越來越少,架構師與攻城獅們一定會從此過上和諧幸福的生活。
3
架構師是使用代碼作畫的大獅
小編搬了很多,還是覺得心中沒底,於是繼續尋尋覓覓,我們的大獅們又是怎麼看這個問題的呢?
3.1
架構師應具備什麼技能果和素養?
David Cornish(英國倫敦摩根大通公司的技術架構師):
1. 跟技術團隊和商務團隊都有良好的溝通
2. 豐富的設計經驗和技術知識
3. 分析思維和整合思維
4. 衝突解決
Theo Gantos(美國密西根弗林特 TEKA 公司的諮詢師):
架構師是一位博學多才的人。
在各種方法學領域都要有諮詢、交際、組織、概念化、抽象思維、邏輯推理、數據建模的能力,自我檢討的能力,快速適應,演講和溝通技巧,編程知識,寫作技巧,銷售技巧,個人魅力,金融和投資回報率計算技能,對付難弄、安於現狀的人,有幽默感。
Venkatesh Krishnamurthy(印度班加羅爾市 Valtech 印度公司的技術架構師):
有創造力、藝術家、政治家、強有力的意志、優秀的溝通技巧、出色的演講技巧、有人緣、成熟、表達能力強、勇於決策,並能堅持、挑戰者、好的觀察者、協商者
3.2
架構師應該寫代碼嗎?
Fred George:
「不編程的架構師的職業生涯是短暫的」;
Donald E. Knuth:
好的設計者必須能夠捲起袖子,加入開發隊伍,毫不猶豫地參與實際編程。真正的架構師,如果不允許參與編碼的話,他們會提出強烈的抗議
Martin Fowler:
一個真正的架構師……應該指導開發團隊,提升他們的水平,以解決更為複雜的問題。
他接著說:"我認為架構師最重要的任務是:通過找到移除軟體設計不可逆性的方式,從而去除所謂架構的概念。"
TimYang:
那些對技術體系有深入了解及一線體驗的架構師,比那些只跟人員管理打交道的人,更有機會利用技術的力量促進變革
江南白衣:
國內的架構師到了三十歲以後很多就往理論上跑,而國外的架構師在往上發展的同時保持下面的編程體驗,所以國內多水王,而國外則多大師
再次以 Fred George 結束:
Fred George:
架構師是使用代碼作畫的大獅。
4
本期小獅子獎
小李子堅持陪跑22年,終獲小金人,小編本著「個人」愛好,頒出「小獅子」獎給突出貢獻大獅子:
最佳觀點:大獅子「木泉」老師:
最佳貢獻:大獅子「孔慶龍」老師
最後,多謝群內各大小獅子的經典言辭和獨特見解,由於小編能力有限,不能一一把大家的觀點全部表露出來,特別鳴謝(排名不分先後):
郭宇翔
木泉
一瓢
周正軍
俞斌
俊傑
聰-Birdle
劉小剛
周洋
孔慶龍
右軍
明彪(小編)