當前位置:
首頁 > 科技 > 從程序員到架構師的成長錦囊

從程序員到架構師的成長錦囊

作者 | 楊波

大家好,我是楊波,也是極客時間「微服務架構實戰 160 講」的課程講師。很榮幸可以接受極客時間的邀請,來到極客 Live 和大家分享關於程序員成長的話題。這次分享會分為三部分:我的成長經歷、程序員的面試技巧以及程序員的必備軟技能三部分。

關於自身成長的復盤

1999 年到 2001 年,是我從大學生到教師的轉型。1999 年,我從計算機專業大學畢業,在無錫的南洋學院做計算機老師。

2001 年到 2004 年,辭職讀研。2001 年我辭掉工作,回到江南大學讀研深造。

2004 年到 2006 年,進入軟體開發行業。加入了一家做網路通訊設備的公司,叫合勤科技 (Zyxel),從 UI 小模塊做起,完成了從初級工程師到高級工程師的轉變。

2006 年到 2012 年,耕耘積累階段。加入 Bay 中國研發中心 (eBay CDC),從事開放 API 平台研發,從高級軟體工程師成長為資深軟體工程師。

2012 年到 2016 年,加入攜程框架部擔任資深架構師。完成了從架構師,管理者到技術總監的轉型。

2016 年到 2018 年,在拍拍貸擔任研發總監。搭建了微服務架構,基礎框架等技術體系,既做技術架構,也做團隊管理,也擔任總監,協助公司技術戰略的規劃。

總的來說,在 eBay 像是坐大巴,你只需要按部就班做好自己的事情,同時你能接觸到更多的人,看到更大的平台,有利有弊。而在攜程則不同,我是隨著公司在成長,我是司機,有些項目怎麼走我說了算,所以更具挑戰性。在拍拍貸就是坐過山車了,隨時擁抱變化。所以不論公司的大小,對我們來說總是可以收穫到很多。

如果說對自己的成長過程做一個復盤,我想有四個關鍵詞可以分享給大家:

第一個是興趣或者叫天賦。我應該是偏向於架構師型的,我小時候就比較喜歡折騰各種玩具,喜歡看科幻電影,從小看的雜誌都是科幻小說、少年科學這類的。沒事的時候做個風箏、造個小房子。我從一年級到六年級,幾乎每年我都要做一兩個風箏,所以對技術,Building 構造東西我比較感興趣。

第二點是堅持。我的很多大學同學,很多已經不在這個領域了,去做其他的事情了。而我從 1999 年大學畢業,到現在,應該是將近十八九年了,一直在在軟體開發領域堅持著。一直在打磨,一直在堅持。

第三個是機遇。人的成長是需要有機遇的,我有幸加入到合勤科技、加入 eBay、攜程以及現在的拍拍貸,這是我的機遇,有機會加入業績比較大的公司,也有機會加入快速成長的公司,對我個人成長非常有幫助。當中也遇到了很多人給了我很大的幫助。

第四個是勤奮。和同齡人相比,我算是比較勤奮的,當年在參加合勤技校招的時候,參加筆試的有幾百人,我的編程筆試成績是最好的。像 eBay 也會對軟體編程能力做一些考察,我的成績也都很不錯。這些都和我勤奮學習有關係。

總結下來,對我成長幫助最大的四個關鍵字,是興趣、堅持、機遇、勤奮。

成功它沒有特定的模板,我們每個人 都要自己去實踐,去思考,走出自己獨一無二的道路來,你走的到道路和我可能完全不一樣,你也可以成功。當然我還在繼續學習和成長的過程當中。

關於程序員面試

很多程序員總會問,該如何通過心儀公司的面試。其實我在這些年,面試過的人非常多,除了面試一些基礎的技術崗位,還包括一些管理者甚至總監,總體加起來應該超過上千人。

一般我面試的時候會側重 2 點:

第一點就是硬技能,簡單講,你能不能幹活,你編程能力行不行,這非常重要。

第二塊是軟技能,比如溝通表達能力,團隊合作能力,甚至到文化價值觀層面。

但對不同的人,我考察的維度不同,比方說 0 到 3 年的程序員,我會更多的考察他的硬技能,因為 0 到 3 年其實還是一張白紙,沒有項目經驗,能考察的就是基本功,有沒有認真紮實的掌握數據結構演算法這些編程基礎。

對 5 年以上的,第一關還是數據結構演算法,因為這是基本功。除此之外我會考察這面試者的潛質。所謂的潛質就是我今天要講的一個很核心的內容:架構設計思維。

有人問什麼是架構設計思維,我提煉了三個架構設計思維,抽象、遞歸、分治。

所謂抽象能力,就是關注本質,忽略細節的能力。我經常做架構評審,我的團隊做項目架構的時候,讓我去做評審,一個項目的架構設計我就關注兩樣東西,一個是數據模型 (或稱領域模型),另外一個是介面模型。通過資料庫表、表結構、API 介面模型,就能看出來抽象能力如何。抽象好了,我就覺得你這個架構就過關了。

遞歸能力。我的面試中一定會要求面試者寫遞歸演算法,有沒有掌握遞歸,對解決問題的能力相差是很大的。比如編譯器解析器、代碼生成器、序列化演算法都涉及到遞歸,沒有遞歸思維的程序員,就搞不定這個層面的工作。

分治,也就是分而治之。也就是大問題先分解為小問題,依次解決小問題,再合併成解決大問題。這又是和數據結構演算法相關的。

抽象、遞歸、分治,在數據結構當中都有體現,你學好了數據結構,有了解決原子小問題的基礎,通過項目實踐中去鍛煉,就能解決更大的問題。

所以,我會比較關注架構設計思維,考察的方式就是數據結構,簡單的講讓他去編數據結構,比如說棧、哈希表怎麼實現,歸併排序怎麼做。有了這些基礎,才有潛質成長為解決更大問題的工程師、架構師。

面試中第二個考察點是編程語言,我們寫代碼、做工程師、做軟體開發,代碼必須得過關。《代碼大全》這本書有一句話「Programming into Language, not in a language」,這句話有一個 into 和 in 的區別,如果翻譯成中文就是深入一種語言去編程,而不是只在一種語言裡頭編程。

我最近在極客時間的「微服務架構實戰 160 講」課程里,也有學員反饋互動,我發現有些學員只能在已有 API 上去編程,不能去深入語言里編程。如果發現某個 API 功能沒有,他就做不下去了。但有些程序員他就可以深入到這種語言,API 沒提供,我就深入到這個語言裡面,構造新的 API 抽象,這叫深入一種編程語言。

掃碼可試看課程

我在面試的時候,會讓面試者講 API 的實現原理、講紅黑樹、講底層實現。要考察面試者是否知道底層的實現,這樣我才知道你對編程語言的理解程度。

比如 Java 語言最大的特點就是垃圾回收,有些面試者用了很多年 Java,GC 的原理他卻講不清楚。要求高一些的話我會問到多線程怎麼玩?如何用 Java 多線程開發?

5 年以上的面試者,我還會問到設計模式、架構原理甚至工程流程,我們是工程師,和程序員是有區別的,程序員把代碼寫好就好,而工程人員要按流程做好單元測試,集成測試,性能測試,監控,還要按照規範流程發布。

我面試一般還會要求面試者寫代碼。我還會要求面試者介紹自己參與開發的實際項目,考察實戰能力。我比較喜歡真正喜歡技術,並且能對項目投入熱情的人,講到自己開發的項目就兩眼放光,滔滔不絕,那多半就是你了。

最後,我會考察軟性能力,我把它叫做元能力 (能力的能力)。技術能力越強,越要看中他的軟性能力,最近有一本書叫《奈飛文化手冊》,奈飛公司文化里就提到了:只招成年人。

我們都希望一起合作的同事,是個能對自己行為負責的成年人,不是動不動就鬧情緒的小孩子。所以我會衡量面試者的溝通能力、積極主動性、正直誠實。軟性能力不易考察,我一般會用壓力面試的方法來考察面試者,故意否定他,製造一些壓力,看看對方的反應。人的軟性能力到底如何,在壓力面前常常能體現出來。

隨著大家工作經驗的增加,前面的 3 到 5 年關注的都是硬技能,後面 5 年或者 10 年,是一個分水嶺,大家會越來越需要感性方面的提升。卡耐基曾經說過,一個人的成就只有 15% 是跟他的專業技能相關的,另外 85% 取決於他的軟性能力。這句話送給大家。

關於程序員成長的軟技能

這麼多年來,我經過大大小小的公司不少,也招了很多應屆生和年輕人。我會留心觀察哪些年輕人成長比較快,他們有哪些特質?在這裡總結梳理了 11 個成長錦囊送給大家,可以在焦慮的時候拿出來看看。

1、要快速成長,一定要思維轉型

從學校走出來,在公司里,一定要做個思維轉型。你從要從確定思維轉到不確定性思維。學校多是填鴨式教育,都有標準答案。但在社會上,很多事情是沒有標準答案的,對和錯都是模糊的。你要自己去從問題中找問題,從思考中得到思考。

還有一個成長思維是空杯心態,不論工作了多久,都要保持學習狀態。就像喬布斯說的:保持飢餓,保持愚蠢。告訴自己,我就是愚者,我就是來學習的,這樣會成長得更快。然後是不確定思維,始終相信只要經過這個自己的努力,不斷的去學習,不斷的實踐,一定可以得到成長。未來並不確定,你今天做的選擇做的事情決定你的未來。

2、積極主動

看了這麼多應屆生,有一個定律:凡是積極主動的,膽子大的,成長就快。因為機會就那麼多,你不爭取,就是對自己不負責任,也是對工作不負責任。你雖然替老闆打工,但對自己也是很好的提升。積極主動的人會對做的事情負責,爭取更多機會,讓自己承擔更大的責任。

3、合作溝通

在公司里工作,一定要與人合作,做的事情越大動用的資源就越多。我們都有自己的盲點,這就需要別人幫助我們來看問題。需要從別人的眼睛裡看問題,來補足自己的視角不足,才能做更大的事情。

4、勤奮和天賦

其實我是靠勤奮的,我雖然有些天賦,我主要是用勤奮的方式。國外比較崇尚天賦論,我在進 eBay 的時候,老闆給一本書,叫《發揮你的優勢》。每個人都是有天賦的,老天爺給了你一種能力,你就要把它發揮好,這叫天賦論,在中國,我們崇尚勤奮論,倡導勤能補拙。所以也有一本書,叫《一萬小時理論》,不管你天賦不天賦,我只要磨鍊一萬小時,每天三小時,十年以後,我就是非常厲害。從我的經驗來看,勤奮和天賦都起作用,如果兩個都是 5 分,相乘就是最高 25,如果你天賦只有 3,但你努力到了 5 分,3x5 = 15,你也很厲害。

5、導師很重要

能不能找到自己的導師非常重要,因為這個學習是有成本的,光靠自己摸索,一定會踩很多坑。如果有機會,找到導師就可以把你成長曆程縮短,身邊也有很多這樣的例子,找到了一個比較好的導師,個人飛速的成長。但導師不會等著你出現,你需要磨練好自身能力,積累核心競爭力,你有價值潛質才會有導師看中你。

6、學習加實踐

雖然老生常談,但很重要。我每天學習的時間是固定的,絕對不會低於一個小時,雷打不動。但是學習要做到價值驅動學習,做到閉環式的學習,你可以把學的東西落地,寫文章做輸出,給大家做一次分享,有產出的學習會讓你的學習更加高效,比如我的「微服務架構實戰 160 講」課程對我來說其實就是一次閉環式有輸出的學習。

7、客戶價值和產出意識

與學校不同的是,在社會上你要獨立謀生,要找到客戶、建立關係。雖然說做軟體開發么,比較少和一線客戶打交道,但是有利有弊。不打交道就少很多麻煩,可以專註做技術。但我建議你可以接觸客戶,建立客戶價值和產出意識,跟客戶形成閉環。有機會的話還可以去做一些商業實踐,不要被軟體開發工程師的身份把自己限制住。

8、目標設定加時間管理

比爾蓋茨和巴非特,這兩個耳熟能詳的人被問到:最重要的管理能力是什麼?都不約而同的回答:聚焦 (Focus)。我們人的這個能力有限,你不可能樣樣都學,不可能樣樣都做。你要沉下心來思考,我應該要學什麼,管理自己目標計劃。每年都要梳理一下,這一年要學習的內容、要做的項目,把自己的精力聚焦好。推薦大家看《高效能人士的七個習慣》這本書,裡面提到:要事優先。

9、堅忍不拔和長線思維

在軟體開發行業,我還沒有看到特別天才的人。不論什麼背景、什麼名校,代碼寫的多牛,成長為架構都不得少於 10 年的積累。在很長的時間內,你都要在複利曲線的底部,每天積累,直到有一天拐點的來臨。所以你如果真想在軟體研發行業成為專家、心目中的牛人,你得做好 10 年的準備,不斷的打磨,不斷的去錘鍊。

10、反脆弱和舒適區

有一本書叫《反脆弱》推薦大家去看一看。我認為這個反脆弱和舒適區是講的同一個道理,人的成長一定要有壓力,如果你每天輕輕鬆鬆,準時上班,按時下班,如果 3-5 年都是這個狀態,那被淘汰就在眼前。適度的焦慮、壓力不是壞事,說明你在成長,在進步,要敢於打破舒適區。

11、從優秀到卓越

我們每個人從優秀跨越到卓越,都要通過實踐想清楚三件事情,你想做的、你擅長做的以及社會需要的。如果一個人能把這三者結合起來,就完成了從優秀到卓越的跨越,那麼怎麼知道我想做什麼?我擅長什麼?這個社會需要什麼?這個需要你去摸索,去實踐。最後我想說的就是,只有你才能認識你自己。

最後希望您能成為一名卓越的工程師。

Q&A 環節

Q:微服務架構是未來架構的趨勢嗎?

A:這個問題問法有問題,因為我們講的服務化,在互聯網這個時代是個永恆的主題,之前我們講單塊應用,後來我們發展到了 SOA,SOA 還是模塊化,分而治之的這個思路。現在呢,微服務只是一個名詞,可以說換湯不換藥,它跟模塊化,或者跟 SOA 的理念是一致的。微服務也好,包括現在有新的概念,Service Mesh,Cloud native,容器雲,這些都跟容器、服務化是沾點邊的,它們都是趨勢,不會停止。

Q:架構師要不要寫代碼?

A:其實這個沒有標準答案,有的架構師不怎麼寫代碼,但是依舊工作很出色,因為他在工作的前幾年積累了大量的實戰經驗,並且依然保持學習的心態。一般工作經驗 10 年以上才能被稱之架構師,所以你在工作前面 10 年以內,一定要積累大量的代碼,有了這個基礎以後才能在更大的視角上做事。成為架構師以後,為了做更大的事情,你會把更多關注點放在系統宏觀層面,減少對底層細節的關注。

Q:如何看待程序員的 35 歲現象?

A:在我自己的成長過程中,不光 35 歲、我 25、30 歲,包括現在 40 歲了,我都有焦慮。焦慮永遠存在,但這其實是一個信號,告訴你該做出調整和改變。年輕人不斷的冒出來,35 歲以後,如你要是還和年輕人拼代碼實現,那一定有瓶頸。所以當你在 35 歲之前,一定要拓展新的能力,並且是有差異化的能力,做些年輕人沒法和你媲美的事情,這才是你的主戰場。

寫在最後

成為一名架構師幾乎是每個程序員的夢想。微服務架構可以說是當前架構領域最受關注的話題。所以掌握微服務架構技術棧相關技能,是從一名普通程序員到資深架構師的必經之路

推薦大家訂閱「微服務架構實戰 160 講」,課程結合我多年來的實踐經驗,通過原理講解和實戰操作,幫你掌握企業級的微服務架構核心技能。

我分成 8 個模塊,每個模塊專註講解一個微服務架構的核心組件,可以利用碎片時間自由學習,並且隨著難度提升,視頻會伴有字幕,幫助你更輕鬆的學習。

訂閱優惠:原價¥299,拼團價格僅需 199,立省¥100。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

不是谷歌或臉書,如何建立機器學習團隊?
斯諾登:區塊鏈只是新型資料庫,比特幣終會消失

TAG:InfoQ |