程式員必須懂的架構入門課

来源:https://www.cnblogs.com/itlaobingge/archive/2019/11/25/11928564.html

程式員,真有必要瞭解架構嗎?有的人只關註眼下的“點”,有的人看到了延伸的“線”,還有人暢想出未來的“面”。就像在叢林中穿越,當你迷路找不到方向時,最好就是登上山頂或者爬上樹冠,讓自己有更寬廣的視野,從而找到通往目的地的最佳路徑。既要腳踏實地、低頭趕路,也要抬頭望天、暢想未來,正確的方向比速度更重要。 ...


程式員,真有必要瞭解架構嗎?

在解答這個疑惑之前,我們先來看一則故事:旅行者路過某個工地,建築工人們都在忙碌。出於好奇,旅行者問第一個人在乾什麼,那人頭也沒抬地回答道:我在搬磚。旅行者問第二個人在乾什麼,這個匆匆抬起頭認真地說:我在砌牆。旅行者問第三個人在乾什麼,那個人臉上充滿了光彩,很自豪地說:我在建造聖索菲亞大教堂,將福音傳播給更多人!

有的人只關註眼下的“點”,有的人看到了延伸的“線”,還有人暢想出未來的“面”。就像在叢林中穿越,當你迷路找不到方向時,最好就是登上山頂或者爬上樹冠,讓自己有更寬廣的視野,從而找到通往目的地的最佳路徑。既要腳踏實地、低頭趕路,也要抬頭望天、暢想未來,正確的方向比速度更重要。接下來,我們來看看架構跟你的“點、線、面”關係。

  • 一點

跟壘土坯房不同,建造摩天大樓離不開各式各樣的設計圖紙,構建複雜的應用系統也離不開架構設計。相信你所在的團隊也配了架構角色,或由資深開發兼任,或由專職架構負責。不管你從事哪方面工作,包括產品、開發、測試、運維或項目等,你都要跟架構師打交道,例如:產品可研、概要設計、技術選型、詳細設計、測試規劃、部署規劃、問題解決、招聘面試等等。如果對架構缺乏瞭解,那你就不清楚你跟架構師之間的協作界面,不知道架構師能給你提供哪些支持或幫助,不知道如何跟架構師高效地協作。如果只關心自己眼前的一畝三分地,那你很容易就滯留在“搬磚”層級。

  • 二線

中年危機,35 歲定律,這些命題對於你來說都是客觀存在的。隨著 IT 技術的不斷更新換代,普通程式員在市場上競爭力跟年齡成反比,除非你能提前構建出轉型升級所需的新技能樹。如果沿著技術通道發展,可選的晉升方向有兩個:技術專家,扎根於某個垂直的技術領域,往縱深發展;架構專家,構建出更加全面的技術體系,往廣博發展。雖然進化方向不同,但殊途同歸,最終幫你戰勝危機、突破自我,晉升到更高的職位,獲得了更好的薪酬。如果個人性格特質更適合往架構方向發展,那你有必要提前瞭解架構師的主要職責和必備技能。十年磨一劍,五年小成,十年大成,轉型升級所需的專業技能不是一朝一夕就能練就的。如果你現在就主動籌備 35 歲這場戰役,那你很容易從”搬磚”躍遷至“砌牆”。

  • 三面

學而優則仕,即使修煉成了技術大神,但個人能量總歸是有限的,管理崗是所有通道的終極進化方向,只有帶領更多人,你才能做更大的事。在互聯網行業,“科技是第一生產力”體現的最為淋漓盡致,不管往產品還是管理髮展,擁有深厚技術背景都是優勢。架構師,從某種角度看,就是全面瞭解各種技術或中間件的優劣,然後讓它們在你所設計的方案中揚長避短、優勢互補,發揮出最佳的合作效用。這跟產品維度的業務架構、管理維度的組織架構有異曲同工之妙,等你從技術架構中學習到知人善任、調兵遣將、排兵佈陣等道理,那你就可以站上更高的平“面”了,從“砌牆”躍遷至建造宮殿。

25 歲入行搬磚,30 歲前擔任技術經理、兼職架構,35 歲前轉型應用架構專家,一路走來老兵哥我積累了大量轉型、架構、培訓和咨詢等實戰經驗。近些年我將這些經驗做了整理輸出,曾面向初中級程式員開設過多門面授架構課程,累計參訓學員超千人,頗受好評。接下來,老兵哥我準備在 CSDN 這個分享平臺,把大家關註度最高的這些架構問題梳理出來,希望你持續關註:

  • 架構到底是什麼?它都有什麼作用?
  • 架構的演進過程,不同架構的特點?
  • 架構風格、模式、框架的相互關係?
  • 架構設計的輸入、輸出和工作流程?
  • 不同崗位應該關註架構的哪些方面?
  • 是否有標準來評價架構設計的優劣?
  • 架構師核心職責和必備能力有哪些?
  • 哪些特質適合往架構專家方向發展?
  • 架構專家需要搭建怎樣的知識體系?
  • 如何從資深開發成功轉型架構專家?
  • 架構師之後有哪些可選的發展方向?

暫時先分享到這裡,後續老兵哥會結合個人實踐陸續分享相關經驗,例如:如何通過三步走策略完成轉型、如何藉助段帶式進階構建新技能樹等,期待小伙伴們訂閱交流,謝謝!


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

更多相關文章
  • 自引jquery 1 <style> 2 * { margin: 0; padding: 0; } 3 ul { list-style: none; margin: 100px; } 4 .comment { 5 color: red; 6 } 7 8 .comment li { 9 float: ...
  • 螢火蟲 <style type="text/css"> *{ padding: 0; margin: 0; } #bg{ background: url(img/bg.jpg) no-repeat; background-size: cover; width: 100%; height: 100%; ...
  • 下雪效果 1 <style> 2 * { 3 margin: 0; 4 padding: 0; 5 } 6 #box { 7 width: 1000px; 8 height: 600px; 9 background: #000000; 10 border: 5px solid red; 11 mar ...
  • 選項卡(tab欄切換) 1 <style type="text/css"> 2 *{margin: 0; padding: 0; font-family: "微軟雅黑";font-size: 14px;} 3 #container{ 4 width: 398px; 5 margin: 100px a ...
  • 前端開發工作中經常會碰到奇形怪狀的圖形,當然也少不了UI設計童鞋的腦洞和創意啦,初級的開發人員可能會選擇使用圖片做背景加上位置屬性實現,不過很多時候,CSS能實現的就不要再動用PS等工具了,時間寶貴,經驗更寶貴,畢竟簡單的搬磚很容易就會,不動“聲色“的實現才是來之不易的經(踩)驗(坑) 完事開通難, ...
  • 在看設計模式這本書,遇到一個令人疑惑的for迴圈語句 比較疑惑,因為從平時接觸的來看基本上都是 現在的疑惑如下 實際上上面的語句等同於,這是為什麼 原來這裡等同於把迴圈終止條件和迴圈被執行後執行的語句相結合了即把判斷和賦值放到一起了,一邊迴圈一邊賦值,i--是什麼判斷條件,當i--為fasle即,循 ...
  • 基於offsetHeight和clientHeight判斷是否出現滾動條 by:授客 QQ:1033553122 HTMLEelement.offsetHeight簡介 HTMLElement.offsetHeight 是一個只讀屬性,它返回該元素的像素高度,高度包含該元素的垂直內邊距和邊框,且是一 ...
  • 本次使用動態代理的初衷是學習Redis,使用Java操作Redis時用到Jedis的JedisPool,而後對Jedis的方法進一步封裝完善成為一個工具類。因為直接使用Jedis對象時,為了保證性能,總會需要手動的獲取到連接池中的連接,使用完成後還需要手動的釋放連接,都是完全重覆的操作。所以想要使用 ...
一周排行
  • 本文將介紹如何在.NET Core3環境下使用MVVM框架Prism的使用事件聚合器實現模塊間的通信 一.事件聚合器 在上一篇 ".NET Core 3 WPF MVVM框架 Prism系列之模塊化" 我們留下了一些問題,就是如何處理同模塊不同窗體之間的通信和不同模塊之間不同窗體的通信,Prism提 ...
  • Microsoft Visual Studio 2010 的項目為件改為Microsoft Visual Studio 2015預設打開 2010 的Solution (.Sln) file 更改為 2015 的Solution (.Sln) file ...
  • 設計一個簡單的登錄視窗,要求輸入用戶名:小金,密碼:123456時候點登錄能正確轉到另一個視窗。 1、建立窗體應用。 2、這裡創建一個login和一個NewForm的窗體。 3、在login的窗體拖拉2個label和2個textbox和1個linklabel的控制項。一個標簽名字為用戶名,一個標簽為密 ...
  • 已有站點:HTTP80 %systemroot%\system32\inetsrv\APPCMD ADD APP /SITE.NAME:"HTTP80" /path:/Redirect /physicalPath:"C:\Windows\System32\drivers\etc" /applicat ...
  • ``` var xmlstr = @" some_appid 1413192605 component_verify_ticket some_verify_ticket "; Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7640873.html,記錄一下學習過程以備後續查用。 一、引言 很多人說原型設計模式會節省機器記憶體,他們說是拷貝出來的對象是原型的複製,不會使用記憶體。我認為這是不對的,因為拷貝出來的每一個對象都是實際 存在的 ...
  • 實現把String字元串轉化為In後可用參數代碼: public string StringToList(string aa) { string bb1 = "("; if (!string.IsNullOrEmpty(aa.Trim())) { string[] bb = aa.Split(new ...
  • 1.ImportData主方法 把傳入為object數組類型,按照下標取出對應的參數,此處為Table和Username public object[] ImportData(object[] Param) { DataTable dt = (DataTable)Param[0]; string m ...
  • C#實現對Excel操作,根據數據的類型不同或者來源不同會放在不同的頁簽中,C#實現添加頁簽代碼如下:(path為文檔保存的地址,dt為要處理的源數據) public void addSheet(string Path, DataTable dt) { var SlDoc = new SLDocum ...
  • public partial class Form1 : Form { public Form1() { InitializeComponent(); Dog dog = new Dog(); InsertDog(dog); dog.OnAlert(); //Console.WriteLine(); ...
x