阿里P9架構師分享從程序員到架構師必備的技能樹

我們來講一個故事,一位旅行者路過一個烈日下的工地,所有人都在那兒汗流浹背地搬磚。

旅行者問第一個人在干什么,那人頭也沒抬地回答:“我在搬磚。”

旅行者問第二個人在干什么,這個匆匆抬起頭認真地說:“我在砌墻。”

旅行者問第三個人在干什么的時候,那個人臉上充滿了光彩,很自信地說:“我在蓋圣瑪利亞大教堂。”這個故事是不是像極了我們從事軟件開發工作的不同階段的不同狀態。每當聽到從程序員到架構師的書或者文章時,我們總是充滿好奇,想從其中獲取一些觀點亦或是技能點,接下來我們就詳細講講一下,如何從程序員走向架構師。

首先我們定一個基準點:架構師只是功底深厚的程序員,千萬不要成為不會寫代碼的架構師

架構師應該是立足于技術和業務之間的中間角色或者平衡點, 在針對業務深刻理解的基礎上,針對業務中存在諸多變數,挑選適合的技術架構和技術方案。可以這樣說,一個架構師工作的好壞決定了整個開發項目的成敗。

開篇的基準點:架構師只是功底深厚的程序員

程序員從初級、中級、高級再到架構師,是一個不斷經驗積累的過程,但是在這過程中我們常常很迷茫,不僅僅是面對技術繁雜的無力感,更重要的是因為長期埋沒于代碼世界的浩大的分工體系中,無法看清從業務到系統架構的價值鏈條,無法清楚定位自己在分工體系的位置,處理不好自身與技術、業務的關系所致。所以在程序員生涯中除了技術實力以外,其它軟實力也不容忽視。如:主動學習、積累經驗、控制注意力、超越自我。

卓越的程序員


對于一個卓越的程序員來說,編程技能毋庸置疑是很重要的。但是,除了基本的編程開發能力,其他方面的能力也是體現一個程序員的能力的很重要因素。比如,問題排查能力、線上運維能力、項目管理能力、協調溝通能力等。

我們先看IT市場對于一個不同階段的程序員的要求:

初級開發工程師

職位要求

  • 綜述:主動性,積極主動,能夠主動了解相關業務需求,在上級的領導和監督下定期完成量化的工作要求;

  • 項目管理:不需要項目管理的能力,具備管理簡單模塊開發任務的時間點。

  • 開發語言技能及架構能力

    • 能獨立處理和解決所負責的任務;
    • 根據開發進度和任務分配,完成相應模塊軟件的設計、開發、編程任務;
    • 進行程序單元、功能的測試,查出軟件存在的缺陷并保證其質量;
  • 業務理解:根據產品需求PRD理解簡單模塊的業務流程,根據業務流程書寫相應的開發流程,能夠根據自己的理解評估模塊開發的時間點。

  • 影響:能影響同級開發人員,得到項目組認可。

中級開發工程師

職位要求

  • 綜述:獨立性,根據項目具體要求、承擔開發任務,按計劃完成任務目標。

  • 項目管理:具備有一定初級難度的項目(如鏈路較短\模塊復雜較低\風險較小\發布周期不緊)的PM的經驗和能力。

  • 開發語言技能及架構能力

    • 理解產品文檔,參與需求評審、需求分析、系統設計;
    • 負責確保項目的進度和質量;
    • 整理和提交相關設計文檔,對負責的功能模塊有自測習慣;
    • 對所負責的模塊有維護責任,有問題及時解決。
  • 業務理解:熟悉自己負責的業務模塊,對業務模塊的流程有獨立的思考,產品設計時能給出合理有效的方案建議;

  • 影響

    • 能影響項目的成員,是團隊內公認的主力成員之一;
    • 加分項:有良好的分享習慣。

高級開發工程師

職位要求

  • 綜述:自主性,獨當一面,能獨立主導和推動項目及任務,在專業領域具備輔導他人的能力

  • 項目管理:具備有一定中等復雜度的項目(如鏈路較長、模塊復雜度較高、風險較大、發布周期較緊、技術驅動等)的PM經驗和能力。

  • 開發語言技能及架構能力

    • 能獨立解決問題,能夠負責重要業務模塊的需求分析及設計實現。
    • 熟悉設計原則,能夠在日常編碼工作中恰當使用,優化原有設計(有實例支撐);
    • 熟悉編程語言、編碼規范、安全規范,具備性能意識,代碼具備高可讀性;
    • 了解常用框架背后的原理。
  • 業務理解

    • 熟悉自己直接負責的業務,對業務產品具有獨立溝通,完善業務需求;并識別方案的風險能力;關注自己參與項目的業務數據;
    • 能夠在所負責的業務及產品上有獨立的見解,能提出合理的建議,更有效的解決業務問題;
  • 影響

    • 影響項目組或產品線的成員,是項目組或產品線公認的主力人員;范圍:團隊內。
    • 加分項:具備輔導他人的能力和技能,有良好的分享習慣。

根據上面的招聘需求,我們來看看作為一個開發工程師從初級到架構師,需要哪些技能和非技能的積累,下面我們就從技能和非技能來總結。

一、技術技能樹


架構筑基
開源框架解析.png
高性能架構專題
微服務架構專題
團隊協作開發專題
B2C商城項目實戰

二、業務自測


一般的研發流程

在上面職級要求中,對于初級開發工程師的要求就是得到項目組的認可,如何得到項目組的認可呢?不管哪個職級的公司成員,首先要對自己做出的事情負責,上面的流程中發現一個問題,功能開發結束提測后,測試成員進行測試的時候,發現功能不能正常運行,無法開展測試工作。這自然是不合理的,會影響測試成員對研發成員的信任、還會影響測試成員的工作積極性,信任就類似刷信用卡,當你的信用值逐次降低,其他成員就很難相信你,演化到最后就是不愿意和你合作,他們認為你是一個不靠譜的人。

當然這個問題很容易解決,只要研發這個環節中增加自測流程即可。

優化后流程

關于研發自測這個環節為什么我們開始沒有加上?這是因為,我們一般認為研發人員對自己開發的模塊進行自測,是應該的,用研發術語來講是默認的,不需要另行強調。程序猿的工作是團隊協作中的一環,和環上的所有人一樣,都應該對自己所做的工作負責,這樣對于環上的其他人才是公平的、有效的,團隊的整體效率才能提高。

為了讓研發成員能進行測試,我們還有些問題需要解決:

  • 測試用例范圍問題
  • 被測試環境和測試執行環境的復雜性問題
  • 測試數據準備的問題
  • 測試執行與集成問題
  • 失敗測試用例歸屬問題

這些問題我們就不展開說了,但是業務自測是作為一個開發工程師必要的職業素養。

三、解決問題能力


解決問題能力不是天生的,自然得靠后天的經驗積累。我們工作中會遇到各種各樣的問題,比如需要去跟蹤調試產品所產生的bug,又比如說使用第三方組件所遇到的一些問題,再比如說使用一些插件或者IDE所產生的一些編譯問題。這個時候第一反應不是去別人那里尋求幫助,而是自己嘗試去看去解決問題。

當遇到阻塞性問題的時候,需要立即排查并處理。由于是線上的環境,我們在排查問題會有一定的難度,但依舊有一定的方法可尋,一般按照如下步驟進行。

日志查看

從日志中查看到報錯的信息,依據這些信息進行問題排查,比如什么時間、什么人、操作了什么、觸發了什么、產生了什么結果。

代碼檢查

在日志無法排查問題的情況下,需要通過代碼來定位。這需要對代碼有一定的熟悉程度,可以知道用戶的操作是由哪里的代碼執行的,然后對該塊代碼進行檢查。代碼檢查的時候需要著重檢查一些邏輯分支語句,同時可以借助一些工具,例如:FindBugs,Alibaba Code Guidelines等。另外,還需要關注一下觸發器之類的隱蔽代碼。

遠程調試

由于代碼是靜態的,而代碼執行是動態的。靜態代碼的檢查可能并不能檢查出問題,而需要通過線上的環境、數據一并進行檢查。這時,可以在不影響線上用戶使用的情況下,遠程斷點調試程序。

本地調試

有的系統可能并不方便進行遠程調試,那么可以嘗試把線上的全部數據(或者關鍵歷史數據)拷貝下來,在本地環境使用線上環境的數據庫,進行調試。斷點調試是比較直觀的一種檢查錯誤的方式,通過異常信息的日志,能確定到指定的代碼行,并結合線上的數據,很容易發現問題。

四、學會提問


問問題的能力是一個人的修養,學會提問是一個人成長的必經之路。尤其是軟件行業的從業者,要保持對技術的鉆研精神,不做伸手黨,問出水平,問出修養!

有禮貌

畢竟誰也沒有義務幫你解決;

問對的人

選擇相關主題的板塊,不要多次發布相同問題!

主題清晰

問了讓別人不用看描述就知道問題類型和背景,github一般都會對issue做tag標記的。

  • 較差的標題:保存,老實提示系統異常。
  • 較好的標題:在firefox中保存時導致系統異常的兼容性問題求解。

描述要準確

描述機器環境(os,機器配置,版本信息);描述自己的排查方向和相關現象;描述問題的觸發背景(升級了什么組件/改了什么);提供復現方法。

描述要客觀

不要加主觀判斷;

描述目標

不是中間的某個步驟step;可能你的方向偏了,實現目標根本就不需要實現這個step

想提高自己解決問題的能力,首先得學會如何提問。給自己提問或者向別人尋求幫助時。

五、總結


我們日常遇到的問題就類似打怪升級一樣,你解決的問題越多你的能力就會越強,經驗自然也會越來越豐富。但人的腦袋不可能記住所有事情,將自己遇到的問題沉淀下來對以后自己查閱也有很大的幫助,就不必每次都要去Google,自己也能夠有一個索引庫。經常自己總結,也能夠提高自己的寫作能力,以后寫文章、ppt總結提煉自然也難不倒你了,也是一舉兩得的事情。還有你以后求職面試過程中,提及自己這方面的能力的時候,也能夠為自己面試加分哦。

一個人能產生多大價值取決于他的影響力有多大,之前看到有人在我們內部論壇提問說提高影響力有什么用?你看看馬云就能知道有什么用了,他說一句話比你說上百句都管用,畢竟人家的影響力在那里。我們程序員做知識經驗的傳承,不僅能夠提高你自身的影響力,還能夠幫助你提升邏輯思維能力,因為你需要去總結提煉,你需要將問題梳理清楚,并且要將知識點描述得能夠讓別人更容易接受。你的經驗雖然是你自己的,但如果你的經驗能夠幫助到別人,那你的價值就不一樣了。

讀者福利

分享免費學習資料

針對于Java程序員,我這邊準備免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

為什么某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足于現狀內心在竊喜!希望讀到這的您能點個小贊和關注下我,以后還會更新技術干貨,謝謝您的支持!

資料領取方式:加入Java技術交流群963944895點擊加入群聊,私信管理員即可免費領取

如何成為一個有逼格的Java架構師

怎么提高代碼質量?——來自阿里P8架構師的研發經驗總結

阿里P8分享Java架構師的學習路線,第六點尤為重要

每個Java開發者應該知道的八個工具

想面試Java架構師?這些最基本的東西你都會了嗎?

畫個圖來找你的核心競爭力,變中年危機為加油站

哪有什么中年危機,不過是把定目標當成了有計劃

被裁員不是寒冬重點,重點是怎么破解職業瓶頸

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容

  • 前言 架構師是一個沒有被嚴格定義的角色。 在寫這篇文章之前,我特意把這幾年看過的關于架構和架構師的書重新翻了一遍,...
    Java機械師閱讀 1,431評論 0 7
  • 楊慧霞 洛陽 焦點講師班二期 堅持分享第1105天 終于有時間可以把隨身帶的書拿出來看看,其中對積極想象...
    yhx慧心慧語閱讀 653評論 0 1
  • 有過你的usb失靈了,插任何東西都沒有反應,你需要 1.一直按住shift+ctrl+option+電源鍵,等待十...
    傲嬌喵117閱讀 2,478評論 0 0
  • 很不愿意相信,這已經是我第二次報名參加日更計劃了。第一次因感覺自己時間不夠用,進行了大概一周左右就自動放棄了。第二...
    郴曖姙閱讀 189評論 0 0