如何才能從程式員到架構師?

来源:https://www.cnblogs.com/JavaEdge/archive/2023/10/27/17791008.html
-Advertisement-
Play Games

1 引言 小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的占比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。 所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢? 2 說 ...


1 引言

小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的占比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。

所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?

2 說個阿裡高級研究員

章文嵩,滴滴出行高級副總裁,CCF傑出工程師,成名作LVS。

LVS項目里,章文嵩是程式員,也是架構師。

LVS第一版章文嵩花兩星期完成,根據首批用戶反饋,這個demo“集配置簡單、穩定可靠、[可擴展性]於一體”。這環節是程式員最擅長:明確做什麼,怎麼做,再埋頭做出來。

雖“配置簡單、穩定可靠、可擴展”已可過濾相當比常式序員,但真正體現架構師綜合素質,是在這兩星期之前、之後。

3 兩星期前

發現LocalDirector太貴,需幾萬美元,即:

3.1 基於對痛點和需求的理解,決定做什麼是有價值的

項目里需要做什麼事情絕不僅是PM決定,架構師要有自己判斷。架構師本身就是要在需求和技術之間trade off,一門心思搞技術很難成優秀架構師。

判斷達到LocalDirector類似的效果並不難,即:

3.2 對所能取得的預期效果和投入成本,有準確判斷

基於對底層機制的深刻理解,對關鍵技術路徑和關鍵技術問題有準確的判斷。不少項目最終沒有達到預期,架構師能力不達標是主要原因。Meta傾全公司之力打造的元宇宙平臺Horizon在很長一段時間內只有半個身子,現在想來依然搞笑。

LVS技術方案受Berkeley MagicRouter論文啟發,即:

3.3 良好技術視野

這不是做出正確技術選型的必要條件,但幫助無疑是巨大的。對於程式來說更多是How, 但對於架構師而言What和Why更加重要。另外能google就不要baidu。

決定基於Linux開發,這是

3.4 對技術發展趨勢的判斷

將近30年前,Linux遠沒有如今伺服器領域的霸主地位,選擇基於Linux開發並促成LVS進入Linux內核是遠見的。又比如七八年前,在K8s/Mesos/Swarm調度系統三國大戰中押註K8s的架構師也是有遠見的。對趨勢的判斷,會直接影響團隊的產出甚至是項目的成敗。

4 兩星期後

在Linux Kernel郵件列表裡廣而告之。每天會收到很多郵件,有的是用戶使用心得,有的是用戶的修改建議,好的建議我就會採納,這樣LVS得到不斷的豐富和完善,即:

4.1 自我推銷和服務意識

NB的技術和產品不是自己PPT寫出來的,是用戶用出來的。從0到90%簡單,從90%到100%難,剩下這10%靠的更多不一定是技術。

LVS很快聚集來自世界各地的問題解決高手和技術專家,他們一起為LVS的優化添磚加瓦][凡是對LVS有貢獻的人,其名字都會被章文嵩寫入項目歷史中,即:

4.2 技術威望和技術領導力

不管誰加入,章文嵩都遵照自己的技術原則和方法論,掌控LVS的發展路徑,什麼東西做,什麼東西不做,什麼東西怎麼做。同樣不管是誰加入,也都會得到同等的尊重。不是所有開源項目都有如此優秀的領導者,如Rust。

章文嵩經常參加Linux的會議,章文嵩和Netfilter的作者Rusty Russell在酒吧相談甚歡,即:

4.3 social能力

額.....不是架構師必備技能,但確實是提升個人影響力的有效方法。

5 為你總結好的藉口

一般原因是,一般程式員根本對接不到需求方,信息缺乏,得到的工作任務根本都是設計好的離散零碎的小模塊。至於模塊如何組織,為何這樣組織,缺乏信息,缺乏時間,缺乏動機思考。

而且99+%的程式員不喜歡和需求方打交道,而不是沒有機遇。

X 總結

也許你說,這些都不是程式員應該特別關心,而我只是想成為一個架構師,不是要成為章文嵩。如果你有這種想法,那麼有可能單純程式員更適合你。

也許你說,據我觀察XX架構師也就運氣好。也許他確實次次運氣爆棚,也有可能是他在你不註意的地方把問題化於無形了。一般來說,雲淡風輕的架構師還是要比哭爹喊娘的架構師段位高的。

也許你會說,現階級固化,沒上升機會了。只能說一夜暴富的機會越來越少了,但碼農成長為架構師的通道從來沒有也不可能關閉,是不會關閉,因為大多數根本沒這鑽研能力。

本文由博客一文多發平臺 OpenWrite 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 字元串中的BKDRHash哈希函數 在電腦科學中,哈希函數是一種將任意長度的輸入(也稱為“消息”)通過散列演算法轉換成固定長度的輸出,該輸出就是哈希值。哈希函數的一個重要特性是,對於相同的輸入,無論何時執行哈希函數,它都應該產生相同的輸出。然而,對於不同的輸入,即使它們只有微小的差別,哈希函數也應該 ...
  • 本文分享自華為雲社區《深入理解Java中的Reader類:一步步剖析》,作者:bug菌。 前言 在Java開發過程中,我們經常需要讀取文件中的數據,而數據的讀取需要一個合適的類進行處理。Java的IO包提供了許多類用於數據的讀取和寫入,其中Reader便是其中之一。本文將對Java中的Reader進 ...
  • 這是做什麼用的 框架用途 在採集大量新聞網站時,不可避免的遇到動態載入的網站,這給配模版的人增加了很大難度。本來配靜態網站只需要兩個技能點:xpath和正則,如果是動態網站的還得抓包,遇到加密的還得js逆向。 所以就需要用瀏覽器渲染這些動態網站,來減少了配模板的工作難度和技能要求。動態載入的網站在新 ...
  • Hutool它是一個Java工具集類庫,包含了很多靜態方法的封裝:流處理、時間日期處理、正則處理、加解密處理、文件處理、集合處理等,可以說是項目中幾乎所有XxxxUtil的替代品,它可以使你更多的關註代碼邏輯,優雅的寫出高效代碼,避免“複製粘貼,改改再戰”。 ...
  • 函數 (1)函數的定義 函數使用func進行定義 函數是基本的代碼塊,用於執行一個任務 Go語言至少有一個main函數 函數聲明告訴了編譯器函數的名稱,返回類型和參數 //1.無參數無返回值函數的定義 func test1(){ fmt.Println("無參數無返回值函數的定義\n") } //2 ...
  • 作者:hinotoyk 鏈接:https://juejin.cn/post/6910215219822362632 背景:某日在公司中擼代碼的時候,在一個常用的controller中添加一個方法,測試時突然報錯說註入的service為null,搗鼓一陣發現後是方法修飾符寫成private,修改成pu ...
  • BeautifulSoup庫用於從HTML或XML文件中提取數據。它可以自動將複雜的HTML文檔轉換為樹形結構,並提供簡單的方法來搜索文檔中的節點,使得我們可以輕鬆地遍歷和修改HTML文檔的內容。廣泛用於Web爬蟲和數據抽取應用程式中。 ...
  • `Shiro`許可權框架認證失敗預設是重定向頁面的,這對於前後端分離的項目及其不友好,可能會造成請求404的問題。現在我們自定義過濾器實現認證失敗返回json數據。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...