剛哥談架構 (二) 我眼中的架構師

以前在公司,有小夥伴在向別人介紹個人時候,常常會有人這麼說:「剛哥是咱們的architcture」,若是來人是老外,心中必定是一驚,心中暗歎,「這位匪首看上去貌不驚人,難道已經作到了架構和本人天人合一和最高境界了?」 回頭,我難免又要嘮叨兩句,「同窗們,沒文化,很可怕,我是架構師 architect,不是架構 architcture」 就像我上次跟你們聊的同樣,人是架構要解決的核心問題之一,那麼說「人暨架構」,彷佛也是有些道理。可是你要是硬說架構師就是架構,恐怕你是對架構師有什麼誤解。前端

從企業的角度來看,會定義不一樣的架構師的角色,像什麼系統架構師,解決方案架構師,軟件架構師等等。咱們要談論的是軟件架構師這個角色。其實不少的軟件企業和團隊,都沒有定義架構師這個角色。在我早期參與的軟件開發團隊中,主要的角色無非是產品,開發,測試和管理角色。後來的敏捷開發就更爲簡單的分紅三個角色Scrum Master, Product Owner, Dev。在這樣環境中,並非說沒有架構師,也不是說不須要架構設計,而是說,架構設計的工做被團隊經理,開發等其它的角色所承擔。react

「一千我的眼中就有一千個哈姆雷特」,每一個程序員,每一個組織,每一個企業也都會有本身心目中的架構師,那麼我今天就來聊聊我對架構師這個角色的見解。程序員

我眼中的架構師不必定有頸椎病,不必定禿髮,但必定首先是一個程序猿,一個軟件工程師,一個碼農。面試

常常看到有小夥伴討論架構師要不要寫代碼?我認爲這是個僞命題,就像我以前說的,你們根本沒有對架構師有一個統一,一致的定義,那麼討論架構師要不要寫代碼根本就沒有意義,有的架構師須要寫代碼,有的並不須要。但我眼中的軟件架構師必定是一個優秀的程序猿,軟件開發是一個實踐性很是強的工做,你不能期望經過學習幾本二十一天入門類的書籍就能對軟件開發有一個深刻的認識。軟件開發並非有人說的藝術,也不是科學,軟件開發須要的工匠精神偏偏是來自於大量的實踐。 ‘Talk is cheap,show me your code’, 架構師不只僅是畫畫架構設計圖,作些炫酷的PPT和演講,雖然這幾樣都是我很是喜歡和擅長作的工做。前端框架

我眼中的架構師是一個技術領導者。架構

傑拉爾德·溫伯格 (Gerald M.Weinberg) 是我最喜歡的軟件類書籍的做家,他是軟件顧問和問題解決的專家。他的《成爲技術領導者》也是一本值得反覆閱讀的書籍。框架

咱們常常會有關於領導和領導力的話題和討論,那麼組織中的領導究竟要幹什麼,咱們不是有經理麼,經理不就是領導麼?我認爲領導和經理的區別在於,領導作正確的事,而經理的主要職責是正確地作事。作正確的事一般意味着做出正確的選擇,這裏的難點在於,什麼纔是正確的?回答這個問題就要上升到哲學的角度了。牆裂推薦哈佛大學邁克爾·桑德爾教授法學系列課程《公正:該如何作是好?》 通常來講,按照咱們以前對軟件架構的定義,正確的選擇意味着有助於實現軟件功能,有助於使得團隊能夠更好的協同工做,有助於提高開發的效率。溫伯格在《成爲技術領導者》中說到 「用乘法而不是加法」,好的架構也都是以倍增的方式來改進軟件開發的效率,例如雲平臺Kubernetes,前端框架react等等。在咱們平常的軟件開發過程當中,常常會面對着這樣那樣的諸多選擇,好的架構師可以幫助團隊選擇最適合的那個,也就是咱們說的「正確」的決策,這個很難,可是這還不是最難的。當你作出了你認爲是正確的選擇的時候,下一步是什麼呢?有同窗說,那就開始幹唄!不少時候,架構師不像是經理,直接管理團隊,也就是說架構師並無最終的決策權。架構師說,「同志們,我看這樣作挺好,我們就這麼搞吧!」 團隊成員直接懟過來,「爲何要這麼搞吧?我看那麼作也挺好麼」。要讓一個好的決策落地,架構師須要說服團隊,讓你們相信這真的是一個正確的決策。這就像是「狼人殺」遊戲中,你做爲一個邏輯嚴密的玩家,經過聆聽一輪發言,準確的辨別出全部的狼人,然而你卻無力說服隊友你是對的。「狼人殺」這個遊戲的精髓就在於,這是一個團隊遊戲,你怎麼認爲並不重要,重要的是你的團隊是怎麼看的。學習

因此,做爲一個優秀的架構師,除了技術以外,你須要有很優秀的邏輯思惟和表達能力,良好的人際關係以及不錯的口碑。程序猿是一個頗有特點的羣體,他們一般都有一個特色,就是很是的「執拗」。說服一個程序猿放棄本身的觀點,簡直堪比送神州火箭登上月球。因此永遠不要試圖證實程序猿錯了,也不要證實他的觀點不如你的觀點。由於所處的角度不一樣,我相信本身是正確地的同時並不意味着要證實別人是錯誤的。測試

一個好的架構師,做爲一個技術領導者的核心能力是影響力。固然這個影響力是創建在可以真正做出正確的選擇的基礎上的。最糟糕的狀況是,做爲一個領導者,由於能力不足,選擇一個錯誤的方向,然而由於其強大的影響力,就像喬布斯那樣擁有扭曲現實的能力,而你又偏偏擁有一個執行能力很強的團隊,那麼結果只有一個,你會離你的目標愈來愈遠。編碼

我眼中的架構師是技術和產品的之間的橋樑

咱們圈子中常常會流傳着程序猿和產品經理之間的各類小故事。做爲軟件圈裏的世仇,他們的故事還能夠講述好久好久

宿命之战:程序员VS产品经理

宿命之战:程序员VS产品经理

  (圖片來自https://mp.weixin.qq.com/s/hGIuHzD-9VNsS-JO2z7dWw

咱們看到產品和開發做爲擁有不一樣世界觀的兩個羣體,很難理解對方,而我眼中的優秀架構師應該成爲產品和開發之間的一個溝通的橋樑,一個能理解兩個世界,精通兩門語言的的翻譯。架構師須要把產品功能翻譯成程序猿可以理解的技術語言,一樣架構師須要把開發面臨的挑戰以非技術的語言,轉達給產品經理。因此架構師應該同時是產品和開發的好朋友!

我眼中的架構師是一個團隊的催化劑

講一個笑話,個人一個朋友最近加入了一家創業公司,他說他入職的那一天,公司的CEO,CTO,CFO,產品經理,測試,市場,司機,廚子,保安都來歡迎他的入職。我對他說,「你太有面子,公司看來對你很重視呀,派出這麼多人來歡迎你。」 他說,「哪裏呀,不就一我的麼!」

今天的軟件開發對團隊的依賴程度很是的高,因此架構師首先是這個團隊的一個成員,須要有良好的團隊精神。諾蘭大師在他的電影《盜夢空間》中講述了一個精彩的關於團隊合做的故事。

架構師(築夢師)無疑是團隊中的重要角色,可是一個良好運做的團隊,須要各個角色協同工做,離開誰,這個團隊都不完美。好的團隊應該是1+1 > 2。公司的意義在於經過把擁有不一樣的背影,知識,思惟模式的人組織在一塊兒,創造出個體沒法實現的新的創意,新的產品。而架構師正是實現新的創意和產品的催化劑,讓團隊中的每個人都能發揮出比以前更出色的做用。

我眼中的架構師是一個導師和佈道者

軟件行業是一個使人激動的行業,技術和產品的以難以想象的速度迅速的發展着,今天的明星技術和明星產品,過很少久就會成爲昨日黃花,軟件產品的生命周也愈來愈短,我想了想我參與的軟件產品,至今仍然在運行的,仍然在給用戶帶來價值的,大概是微乎其微的。因此不斷的學習,不斷的創新是咱們這個行業必需要面對的宿命。我眼中的架構師應該是一個創新和新技術的倡導者,這裏我並非說新技術必定就是更好的或者更合適的選擇,可是咱們應該持有開放的心態,積極的去了解這些新技術帶來的影響。做爲導師的架構師,應該在團隊中創造這樣的開放心態和持續學習的文化。

 

在多年的軟件開發生涯中,我和許多優秀的架構師一塊兒工做過,我最後要聊一聊的是我遇到的架構師中的極品。以前在一家德國公司開發ERP產品,咱們團隊中的架構師來自德國,咱們就稱呼他爲「老卡」吧。這位「老卡」繼承了德國人優秀的哲學思惟,若是你跟「老卡」討論問題,他老是採起「否認一切」的哲學態度,首先說你錯了,而後會告訴你爲何你錯了。最爲致命的是,一般你只能理解他說的你是錯的這個觀點,而「老卡」全部其它所說的內容,你徹底聽不懂。通常而言,德國人的英語水平是很是好的,因此並不存在由於語言問題而帶來的交流困難。「老卡」喜歡用一些古怪的「大詞」或者縮寫,結合一些奇怪的邏輯,給對方產生一種深不可測的錯覺,我想這就是傳說中的架構師的終極形態吧!就像這個故事中的應試者:

面試官:你對電腦懂多少?
應試者(普通青年):懂一點,我戴過電子錶,玩過任天堂,房間有一臺電視……還有,我看過同窗用dos開機,兩次…
面試官:下一位!
面試官:你對電腦懂多少?
應試者(2B架構師):嗯,那要看是哪種電腦了。通常的超次掌上型矽單晶片時脈輸出電腦(電子錶)比較簡單,我小學時候經常使用他的解譯編碼做業流程(鬧鈴功能)。 至於多功能虛擬實境模擬器(任天堂)就複雜得多,不過我曾經完整測試過許多靜態資料儲存單體(只玩卡帶破關)。長大後我對於複頻道超高頻無線多媒體接收儀器(電視)開始產生興趣,天天晚上都會追蹤特定頻道的資料(指八點檔)。 至於傳統的數位電腦,我手下的一位工做夥伴(同窗)常常在個人監控之下進行主儲存矽單體與磁化資料存取器之間的信號交換(指dos開機)……

後來和印度同事聊天,他們好奇的問,大家都是怎麼和「老卡」交流的,他說的大家能聽懂麼?我固然不能給中國人丟人吧,就說能!印度同事投來崇敬的目光,在他們眼中,由於沒法理解老卡所說的一切,「老卡」儼然成爲他們心目中神同樣的存在,能和神交流的,也應該不是凡人吧!

因此我要對有志成爲架構師的小夥伴提個建議,若是你的技術不紮實,學習能力不佳,溝通有困難,這都不是事。努力學習如何讓別人聽不懂你所說的話,漸漸的,你就會成爲架構師了。

參考

相關文章
相關標籤/搜索