從程序員升級到架構師—我的體會及經驗分享

隨著年紀越來越大,中年危機感越發明顯,在奔四的路上已回不了頭,創業的危機感、生存的壓力、腦力和體力的急劇下降,太多太多的焦慮了,唯一還剩下的就是從業那麼多年的一點經驗分享給大家。

當然不同的人由於處於不同的環境,分析考慮問題的出發點和方法未必相同,價值觀也未必一致,當然更不能說誰的觀點一定無謬論誰的觀點一定是一無是處。所以,我在此一一感謝贊同我觀點的朋友,對於一些反對我觀點的,只要看了我的文章,對我也是支持,我也得感謝。

從程序員升級到架構師—我的體會及經驗分享

開場白至此結束。

1 架構師的基礎

對程序員而言,相對高級開發,架構師是一個比較高級的職位,當然工資也更高。

在升級前,程序員至少需要具備如下的能力或經歷。

1 至少完整地完成一個項目,具體來說,做過需求分析,把設計好的需求轉換成文檔,設計數據表結構,開發測試調優,尤其需要做過“在服務器上部署”以及“通過日誌排查問題”的事情。

2 得具備分析和調優的能力,比如能通過執行計劃看SQL語句的改進點並調優,能通過JVM日誌看內存使用情況並提升內存使用性能,最好還能掌握一些優化的手段,比如能通過消息隊列處理高併發的請求。

3 最關鍵一點,學習能力和動手能力強,比如遇到一個自己事先不懂的問題,能通過百度等手段找到解決方案,並能自己動手解決。又如,在事先不知道Linux LVS如何搭建的情況下,能在查資料後,動手搭建這個框架。

這些是架構師的基礎,一般來說,工作4到5年,而且比較上心的話,這些應該都能具備。

從程序員升級到架構師—我的體會及經驗分享

2 架構師的高級開發的差別

需要解決的問題問題不同,高級開發的職責一般是能把需求點轉成代碼,並能把最終成果發佈到服務器上。而架構師得考慮如下兩方面的問題。

第一,在高併發情況下(比如雙十一),如何保證系統能正常工作。

第二,需要確保這套系統能適應多次改動(即可維護性需要好)。

具體而言,高級開發一般只需要考慮“單機版”的情況,而架構師更得考慮“集群”,需要能在多臺機器上構建項目體系。至於可維護性,設計模式能解決一些,架構師更需要降低模塊間的耦合度。

3 我走過的路以及我的體會

其實本人目前最多也就是個初級架構,但看了不少架構相關的文章和視頻,也切身參加了多次架構師的面試,所以這塊自認為還有些發言權。

第一,在百度上搜索“高併發框架”,能搜索到很多關鍵信息,比如消息隊列,RP,CDN,集群等,先大致瞭解這些關鍵的模塊有什麼作用,這個時間段大概可以持續7天。

第二,廣看書,目前市面上有很多架構書,我買了4本,用過了2個星期全看了一遍,看完後就知道架構師手頭可以利用的一些武器,比如Nginx,LVS,Hystix,SOA等。

第三,在這個基礎上,思考這個問題:如果我是架構師,該怎麼設計“秒殺”系統,或怎麼設計一個“高併發的架構”。

具體包括:HTML靜態化,Nginx如何配置,如何通過Redis+Lua等方式實現限流,如何通過Hystrix實現降級,如何實現數據庫分層和分離,如何配置RabbitMQ消息隊列。

其實在這些內容裡,真正需要寫代碼的地方並不多,更多的是進行配置

目前我只能有這些體會,也請各位大神告訴我後面該怎麼學,雖然我不知道後面的內容,但我感覺到後面應該靠實踐了。

從程序員升級到架構師—我的體會及經驗分享

4 得靠實踐來加深體會,但找到實踐機會很難

這塊其實是關鍵,但也是難點。一般來說,高級開發在公司裡是沒有機會實踐架構師的工作,所以只能在跳槽成架構師後才會有實踐機會,但如果沒實踐經驗,一般是通不過架構師的面試的,難點就在這。

這裡我的體會是,得自己先根據一些現有的資料,設計出一套面向高併發的架構,無需太細(因為面試時時間有限不會談很深入),但需要具體說出採用的哪種組件,比如Hystrix,nginx,並能說出一些關鍵的配置信息。這樣就能讓面試官確信你具備這方面的能力。當然我也見過一些人修改簡歷,把之前做高級開發的經驗改寫成架構師的,而且也能面上,這個我就不說了,大家自己斟酌。

一般來說,參加過幾次架構師的面試,就能知道會問什麼問題,以及該什麼說,我也見過一些高級開發在多次面試後能頭頭是道地“假裝”成架構師(但能力一定不行)。

從程序員升級到架構師—我的體會及經驗分享

因為我的公司有機會讓我實踐架構知識點,所以我無需“假裝”。目前的現實情況是,可能在一些互聯網公司裡,高級開發能有機會實踐架構技能,在一些做業務的公司,或一些小公司,高級開發還真沒機會實踐架構知識點,這些人如何升級,我真不知道。

從程序員升級到架構師—我的體會及經驗分享

5 請大神幫忙

這裡我問兩個問題,請大神告訴我。

第一個問題,如果我想用Spring Boot開發企業級的微服務,我該看哪些資料?比如數據庫該如何配置?消息中間件該怎麼設置?等等。或者可以推薦給我幾本這方面的書。

第二個問題,這個問題剛提過,如果我想開發一個高併發的架構,比如可以應付雙11這樣的併發量,我該考慮哪些問題?或者也可以推薦些資料。

最後是雞湯文

我常聽說有“中年危機”,不過我在電視上看到過如下的場景,看過後我不得不有危機感。(這些我只是從電視裡看到的,無意映射到具體的人)

場景1,目前是冬天,東風蕭瑟,某人在下班後,週末時,一個人待在北上廣出租房裡,市中心很喧鬧,但兜裡的錢不夠,甚至在可以預見的將來,靠攢的錢一定無法買房。如果這個人已經是30+,還單身,似乎感覺更加...。

場景2,也是在北上廣,到了談婚論嫁的年齡,對方也比較合適,但目前只能租房,租的房還離公司很遠。一定想買套房子,這樣至少不算漂浮,但雙方(甚至雙方家庭)加起來的錢不夠首付。

在上述場景裡,至少當事人還年輕,還有機會發奮掙錢,還有希望。大家可以想象些已經“絕望”的場景,比如某人40+,一直在小公司裡幹,也就是一般的高級開發,已經沒什麼機會可以升級到架構師或開發經理了,而且公司也不算穩定,指不定就哪天裁員了。

更悽慘的場景就不講了,大家可以腦補,這些場景裡,他們已經無法靠基本的努力來改變自身,甚至是維持生計。

我不想到等到絕望之時才後悔,這即是我有掙錢緊迫感的原因。自然,這個優先級絕對是要排在親情身體等因素之後的。

有危機感之後就會有行動,比如學習,努力工作,跳槽甚至打零工,這樣或許還是無法有大改變,但做了之後至少有希望。最後我也附庸風雅一下,借用諸葛武侯的後出師表裡的句子來表述目前我的想法。


分享到:


相關文章: