架構師,是否需要寫代碼?

2021-02-13 中生代技術


小編:架構師是否需要寫代碼,這個話題已經記不起從何時開始,在攻城獅圈內成為一個經常拿來討論的話題,上周中生代深度交流群群友們對此問題做了有一個較為深入的交流,小編不是生產者,我只是搬運工。

概要:

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

劉小剛

周洋

孔慶龍

右軍

明彪(小編)

相關焦點

  • 架構師,是否需要寫代碼
    架構師是否需要寫代碼小編: 架構師是否需要寫代碼,這個話題已經記不起從何時開始,在攻城獅圈內成為一個經常拿來討論的話題
  • 架構師不寫代碼,能行嗎?
    CTO 不寫代碼已經引起諸多爭議了,架構師也不寫代碼,能行嗎? 當我面試架構師職位的候選人時,我通常會問一個這樣的問題:「你認為架構師是否應該做一些編碼工作?」而通常會得到下面兩個反饋之一:「不,我正在尋找一個不再需要編碼的職位。」「我喜歡繼續編碼,至少是少量的編碼,但可能不會有時間這樣做。」
  • 沒有架構師的命,卻得了架構師的病!
    而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?寫代碼和做架構是兩個不同的事情。什麼是架構師,架構師要做什麼事情,為什麼 Java 的領域裡,會更注重架構師?
  • 那個寫腳本的架構師,被開除了...
    只掃了一眼小王的需求,我就判定這個工期三天的任務,使用腳本只需要2個小時就能完成。我並不是樂於助人,實在是我非常的喜歡寫這種腳本,還有腳本帶來的這種速度差異的快感。一個小時之後,我把調試好的python腳本交給小王。shell裡一運行,正確的文件就出來了。好爽的感覺。
  • 從軟體搬磚師到軟體架構師,程式設計師的架構師之路
    為什麼會突然又想談一下架構呢?這是我個人的宿願,我是技術出身,雖然現在比較少寫技術相關的東西,但我在公司內部做了很多分享,分享課裡我講的東西與架構相關的佔三分之二,基本都是和架構相關的。所以今天借這個機會談一談我自己理解的架構到底是什麼。國內現在比較少真正意義上符合 「架構師」 這個詞的定位的角色,我們的教育和工作氛圍很難出真正意義上的架構師,比較鳳毛麟角。
  • 原來合格的軟體架構師是這樣!!!
    軟體架構就在於能有一個全局視角( holistic view)、能看到更大的圖,以理解軟體系統作為一個整體是如何工作的。這些因素對區分軟體開發和軟體架構也許有幫助,但還是無法解釋一些人如何從開發轉到了 架構。進一步地,它無助於識別哪些人將會成為出色的架構師、如果你是 HR 你如何尋找這 些人,以及你是否是一個架構師。
  • 你是一名軟體架構師嗎?
    作為架構師,你需要承擔技術領導力,保證所有的事情都考慮到了而且團隊走在正確的 道路上。軟體架構師的位置天然與領導力有關。雖然聽起來顯而易見,但很多團隊中的架構師可能會認為,成功交付並不是他們需要考慮的問題,進而喪失了必要的技術領導力。
  • 架構與架構師2
    」,在《架構和架構師》[2]也描述了,也就是說架構的確需要從各角度觀察和考慮想來還是喜歡ISO/IEC 42010:20072 中對架構有如下定義The fundamental organization of a system, embodied in its components, their relationships to each other and the environment
  • 總架構師眼裡的架構和架構師的成長之道
    我認為架構師需要從這些因素排選,比如說某產品不行,就要砍掉一些功能;這些人員、這些技術不合適,可能就需要換技術或人;時間表如果滿足不了就往後延遲——這是一個動態的過程,通過調整這幾個因素來尋求平衡。《程式設計師》:因為我自己是從一個程式設計師慢慢成長為一個架構師,你覺得這兩個角色最大的區別是怎麼樣的?
  • 如何成為一名系統架構師
    很多做軟體開發的小夥伴都立志想成為一名系統架構師,卻不知怎麼樣才算是一名合格的架構師,是在某一個技術領域有深刻專研的技術達人?還是在技術面上涉獵廣泛的通才?抑或有個五六年的工作經驗之後就自動變成了「架構師」?下面從以下幾個方面聊聊「架構師」這個高大上的職業。一、架構師需要具備什麼能力?
  • 軟體架構師需要具備哪些能力?
    架構師自身的技術水平和管理水平不行,常常會把團隊帶溝裡,重要性可想而知。成為架構師需要較長時間的一線開發經驗的積累。單純看工作年限,一般 3-5 年可成為初級架構師,5-8 年可成為中級架構師,8-10 年以上可成為高級軟體架構師,當然這只是大致的估計,具體達到何種水平還要看架構師的實際能力。
  • 怎樣成長為優秀的軟體架構師?
    當我們把程式設計師類比成建築師時,按照能力水平來分,我覺得大體可以分為三個層次:搬磚師、工程師、架構師。軟體搬磚師之名對應到建築行業的建築工人,他們的編程能力和業務基本上停留在堆疊代碼,按照要求去實現功能需求的層面。只要能讓程序跑起來,能正確地實現業務邏輯,就可以稱為「會編程」的人。
  • 什麼是架構師?
    在某團購公司上市之前,他們的CTO拿出來了他們的架構圖給我看,在給我看之前,所有的技術術語都一樣,但是當我認真看了架構圖之後,我的困惑。。。。為什麼Memcache要放在Controller層被調用? 不應該是放到Service層嗎?怎麼會出現你說的,一個Serivce負責維護的數據,也有可能被另外的Service去更改的情況?
  • 一個架構師談什麼是架構,以及怎麼成為架構師
    我們調劑一下後再繼續講CAS SSO單點登錄吧因為後面的內容全部和代碼有關,大家會覺得枯燥。所以今天我們先來點」番外篇「,講講什麼是架構師,什麼是架構這個永恆的話題吧。此篇源出自我在公司內部寫的一個PPT,它是用於在公司內部向廣大技術人員做普及用的一個資料,而CSDN這邊的編輯不支持圖文混排的效果,因此一些章節我就直接截取自我的PPT裡的內容了,這樣可能對大家在閱讀上會顯得更加生動和活潑一些吧。
  • CTO、技術總監、首席架構師的區別
    我解釋的多了,所以想把這個寫下來,看看你到底需要的應該是啥。一、高級程式設計師如果你是一個剛剛創業的公司,公司沒有專職產品經理和項目經理,你就是公司的產品經理,你如果對你現在的開發員能力不滿,那麼你只需要的是一個高級程式設計師。
  • 架構師的必備素質和成長途徑
    也可以寫一套類似Storm的工具,既輕鬆優雅地解決了問題,同時也帶來了創新。做為一個合格的架構師,就要有能力從事情的本源出發去獨立思考問題並做出各種分析和設計,最後拿出一個非常合適的解決方案。架構師的必備素質
  • 系統架構師是怎樣煉成的
    坦率的講,除了少數對開發程序極其熱愛並願意為之奮鬥終身的編程者來說,對於大多數開發人員,寫代碼只是他們未來獲得職業提升的一個必不可少的積累階段
  • 架構師不至於「架構」-《架構師應該知道的37件事》讀書筆記
    這本書更合適的是傳統企業架構師來看,不過對於長期在網際網路公司環境下工作也很受啟發。以下是一些讀書筆記:架構師的多角色架構師電梯,在「頂層套間」和「發動機房」之間往返。能理解公司戰略並把它轉為技術決策。架構師像「強力膠」既懂得架構,又了解技術細節,還明白業務需求,而且能將大型組織和複雜項目的人員組織起來按照需要扮演不同的角色,就可以成為一個優秀的架構師架構師的三條腿:技能、影響力、領導力技能是實踐架構的基礎。它需要知識以及應用知識的能力。影響力用來衡量架構師在項目中應用技能後能給項目或公司帶來多大的效益。
  • 每個架構師都應掌握的六大架構伸縮性原則
    當達到這個臨界點時,架構師就有責任將系統演化成一個響應迅速、可伸縮的系統。核心系統架構機制和模式需要進行重新設計,以便提升處理能力。對於很多架構師來說,這是一個未知或不太熟悉的領域,因為可伸縮性問題有時候會把我們引向一條與一般性軟體架構原則不太一樣的道路。下面的六條經驗法則是每個軟體架構師在構建可伸縮系統時都應該掌握的知識。
  • 關於架構師:角色、能力和挑戰
    通過部署異地單元將生產流量完整運行在千裡之外的獨立機房,從而連續性的運行業務。這幾句話裡面包含了非常多的關鍵點,一個是異地,第二個是千裡之外,第三個是獨立,第四個是連續性。單元化架構的總設計師是畢玄,因為我們這塊業務跟單元化的架構非常相關,所以要對它完全掌握和吃透才能往下走。