主頁 >  其他 > 大劉終于當上架構師了

大劉終于當上架構師了

2021-08-31 19:06:14 其他

今天這篇文章是架構師大劉的故事,架構師大劉——3 個 180 的男人(身高、體重、房子…………的貸款)

如果你想將來成為一名架構師,不妨看看大劉的經歷,

大劉對架構師一直持有兩個基本觀點:

  1. 高級程式員和架構師是兩種完全不同的物種,但足夠強即可物種跨越,

  2. 不是每個程式員都有機會可以成為架構師,但準備的足夠多即可爭到機會,

大劉自己亦是如此,

多年前,大劉已經是一位高級程式員了,分給他的任務,完成的比團隊中的任何一個同事速度都快,比任何一個同事質量都高,在完成自身任務之余,他甚至可以騰出手來幫別人,

當時,大劉公司有自己的電商平臺,同時還從外接了一些專案單子,去維持公司的盈利,無論是電商平臺,還是專案單子,都是用的同一套開發框架——SSH,也就是:

Struts + Spring2 + Hibernate3

這其中,有三個主要技術問題是遲遲沒有解決的,

1. Hibernate 的 Session使用問題

Hibernate 的 Session 濫用,在大劉公司內部長期存在,這種情況造成的后果就是:

  • 要么資源狂占記憶體,使得應用崩潰;
  • 要么 Session 提前關閉,導致存盤資料報錯,資料丟失,

對這種問題,大劉他們的做法就是根據出現的錯誤堆疊,對應的修改下出錯的方法,比如,臨時 Google 查一下,去換種獲取 Session 的 API 呼叫;又或者就修改下邏輯,創建個新的 Session 了事,

因此,大劉發現在他們的專案里獲取 Session 的方式,那叫一個五花八門,估計 Hibernate 的作者看了,都會非常吃驚——“我竟然還寫過這種獲取 Session 的 API 呢?”

而這些花樣繁多的獲取方式,又進一步刺激了專案在線上的各種問題,這些問題又造成了各種 Session 的亂用的進一步泛濫,

惡性回圈啊!

2. 快取使用問題

在大劉他們的系統中,或多或少都用了外部快取,快取組件是當時最流行的 Memcached,

但是,由于對 Hibernate 沒有深入了解,這套快取并沒有和 Hibernate 綜合在一起使用,于是問題就來了,

快取資料和資料庫中的資料出現了各種脫節:

  • 查詢資料的時候,本來可以走快取的時候沒有走;
  • 更新資料的時候,又經常忘記同步快取狀態,

說出來都不怕丟人,快取命中率可能都不到 20%,

性能堪憂啊!

3. Spring 對框架物件的管理問題

在使用 Spring上,也是個笑話,

最大的問題是,有些人和 Spring 感覺有仇,他就是不讓 Spring 去管理物件的生命周期,

這造成的問題就是,NPE 例外在線上成了過年的煙花一樣,處處盛放,要不就是,本來應該是單例的地方,卻出現了好幾個親兄弟,好家伙,擱那里玩克隆人呢,

解決起個小問題,都能讓人著急的脫水,

錯誤不斷啊!

面對以上那三個問題的折磨,大劉卻不得不忍受著,因為大劉當時只是個高級程式員,受技術水平和話語權所限制,明知道有問題,但是想解決問題又有點有心無力,

大劉自己默默地學習、看書,去不斷熟悉 Hibernate 和 Spring,除了日常寫已經寫膩了的 CRUD 代碼以外,他對業務代碼之間的關系也做了十分深入的研究,當用戶發起請求后,從系統收到請求,一直到業務流程完全結束,大劉對其中的各種技術細節都摸了個滾瓜爛熟,

但是,他卻不敢對系統做任何作業以外的改動,

直到有一次,有一個月的時間,大劉幾乎每天都陷在解決那三個技術問題引發的線上錯誤的泥沼里,當然,整個團隊都是一樣的狀態,不知道別人能不能忍受,大劉終于受不了了,他有自己的技術夢想,有對自己的技術要求,不能忍受在屎坑中游泳的日子,

于是,大劉行動了,

那時候大劉作業已經五六七八年了,做事也沒那么莽撞了,為了證明他能搞定那幾個問題,他需要一套證據,一套他親自驗證過的證據,是什么證據呢?

大劉先把當時的專案拷貝了一份,然后熬了幾周的夜,就著一本《Pro Hibernate3》的英文電子書和一本廖雪峰寫的《Spring 2.0核心技術與最佳實踐》,把里面所有不對勁的問題,愣是統統的改了一遍,

改完代碼后,又找運維同事借了機器,完全部署了一套改過的系統,

然后,通過 Memcached 的 stats 命令,去統計出了快取命中率,此時,這套改過的系統的快取命中率已經從不到 20% 提升到了 80% 以上,

接著,又用壓測命令,那時候還是 Apache 的 ab 命令,對改過的系統、原有系統進行了壓測,得出了一個對比報告,

做完這些,大劉拿著這些東西,徑直去找了直屬領導,和領導誠懇的談了談,說出他想對系統不合理使用框架的地方進行改造,并且已經把改造這事兒自己獨立完成了 90% 以上,

領導聽完,看著壓測對比報告久久沒說話,那個時候,大劉的心緊張的像極了一團天津麻花,甚至想,大不了就帶著壓測報告和改造的經驗去找下家了,

沒想到的是,領導開心極了,領導告訴大劉,早就想規范整個專案了,想對整個系統的技術進行精確的改造和深度的優化,但是一直沒能找到一個人能挑起大梁來,現在他支持大劉全面去負責牽頭搞技術優化和系統改造的事情,

那幾周沒白熬夜!大劉通過自己的瘋狂輸出,得到了一個能全面審視、改造這套系統的機會,并且可以根據自身對 Hibernate、Spring、快取的研究,把一些最佳實踐應用到實際專案中,

此時的大劉,對架構師這個詞,只是聽說過,至于他是個什么概念,又需要做些什么,是完全不清楚的,不過,由于對 Hibernate 和 Spring 的深入研究,以及不斷地在專案中實踐各種它們的特性,大劉初步有了一些當架構師的感覺,知道了一套好的框架該是什么樣子,以及它們為什么要這樣設計,

再后來,公司的其他專案只要遇到了 Hibernate、Spring 相關的疑難雜癥,都會過來問大劉,慢慢的同事們都知道,有個叫大劉的程式員技識訓不錯,大家給他起了個名:“SSH一哥”,

又經過了一年的摔打,大劉對架構師這個崗位已經有了自身的理解,知道架構師就是攻堅克難的技術骨干,知道架構師能掌握所有的技術選型,更知道架構師能光明正大的預研前沿技術,

大劉對架構師真的是向往極了,特別想成為這樣的一種人,可惜,公司當時沒架構師這個崗位,也沒這個 title,真是犯愁啊,

再后來,大劉的領導晉升了,領導把他原來負責的事情一分為二:

  • 鑒于對大劉技術能力的認可和信任,幾個相關專案的整體技術都讓大劉負責;
  • 專案的日常管理作業,安排給了另外一位產品經理,

對于這樣的安排,大劉倒是并不在意,他本身對管理作業也沒什么興趣,讓他負責技術,能隨他心意的去規范化開發專案,他已經很知足了,

但是,一件大事的出現,最終整個專案都給了大劉來管理,這是他萬萬沒有想到的,

事情是這樣,由于電商系統需要引流,為了吸參考戶,產品和運營搞了很多活動,很多很多,多到了什么程度呢?多到了寫的 if 陳述句可能占到系統代碼的三成以上了的程度,

if(xx 滿足 xx條件) {
	//做xx事情
} else if(xx 滿足 xx條件) {
	//做xx事情
}

以上的這些代碼,就像一條條擇人而噬的鯊魚,游蕩在專案的字里行間,

多其實還好,也能忍,但最受不了的是,產品和運營自己也不知道活動會達到什么效果,結果就是,他們會不斷的推陳出新,會不斷地對活動修正,

這就難搞了,當時公司程式員人手本來就不夠,不僅要維護電商系統,還要維護給客戶做的各種系統,還要及時回應各種運營活動,回應的慢了還會被產品運營投訴,

不斷地改啊改啊……終于有一天,一個程式員爆發了,瘋狂的和負責管理的那個產品哥們兒對線,事實證明,祖安人是挑火的一把好手,于是嘛,產品和技術從動嘴終于到了動手的地步,

最終結果就是那位產品經理撒手不管專案了,那位程式員老哥被開除,

于是,就這么著,日常管理的這個事情也落到了大劉的頭上了,技術和管理都是“SSH一哥”負責了,

但是公司對大劉的任命遲遲沒有正式宣布,可能公司擔心大劉資歷尚欠,怕他 hold 不住吧,

對大劉來說,他能理解公司的這個考察期,想讓領導吃上一顆定心丸,他就需要個機會證明自己,什么機會呢?還是運營活動和技術的矛盾這個事,

當時的問題大劉是非常明白的,根源就是產品運營給出的活動太多了,還頻繁的各種修改,而這些活動規則的落地完全需要技術去實作,程式員們根本忙不過來,

如果把這些惹了大麻煩的活動,不管是新出還是修改,可以不讓程式員們去修改代碼就太好了,

于是,大劉引入了規則引擎這個東西,引擎用的是 JBoss Rules,

因為那個程式員老哥和產品經理的物理交流而走人了,所以,大劉手頭有個招聘名額,此時,引入了規則引擎,正好就可以用上這個名額,

于是大劉招了一個程式員,專門負責改規則引擎的規則,這樣,其他程式員就能解放出來干其他事情了,

總的來說,引入規則引擎這套方案實施的很好,大家都很滿意,領導也非常滿意,不久之后,大劉就正式的轉正了,

可是,這不夠啊,大劉想當架構師,現在這條路是技術管理,沒有架構師的 title,對以后自己成為真正的專業的架構師不利啊,

因此,趁著領導滿意之際,大劉向領導提出,能不能把 title改一改,改成架構師,

領導看著反正也沒什么大礙,既沒有增加什么成本,也沒有什么負面影響,也就答應了這事兒,

于是大劉成了當時公司的第一位架構師,

以上就是大劉如何成為架構師的故事了,

你看,是不是這樣:

  • 大劉能搞定SSH就是架構師了?有點水啊!架構師到底是一個什么樣的崗位?不同的公司,對架構師有不同的要求,有的要求技術很強,有的要求技術+業務結合的好,有的要求手寫框架,有的要求擅用框架解決問題……有的公司壓根就沒有架構師這個崗位,

  • 我們都希望成為一名架構師,某些時候是更希望自己是眾多程式員當中的那位“技術一哥”,我當年也是非常渴望成為架構師,

  • 我們需要保持對技術的強烈熱愛,很可能因為這種熱愛,要做一些比較狂熱的超出既定作業范疇的事情,這些事情既能極大提高我們的技術水平和視野,也能幫助團隊的產品質量得到極大的提升,這是雙贏的事情,

  • 有些機會,我們需要自己去把握住,去主動出擊,去向機會亮劍,亮出我們的才能,亮出我們的態度,只有這樣,才能向我們向往的職業崗位邁出堅實的一大步,

所謂不負此生,唯此而已,

最后,希望這篇文章對你有幫助,原創不易,希望得到你的三連支持,


你好,我是四猿外,

一家上市公司的技術總監,管理的技術團隊一百余人,

我從一名非計算機專業的畢業生,轉行到程式員,一路打拼,一路成長,

我會把自己的成長故事寫成文章,把枯燥的技術文章寫成故事,

歡迎關注我的公眾號,關注后可以領取高并發、演算法學習資料,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296115.html

標籤:其他

上一篇:使用 docker 搭建 granfana+prometheus 監控平臺監控測驗服務器資源

下一篇:為了7K ,離開網易,值得嗎....

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more