1. 程式人生 > >月薪80k阿裏架構師漫談他是如何從一名小碼農走到今天這一步。

月薪80k阿裏架構師漫談他是如何從一名小碼農走到今天這一步。

java 架構師 程序員


01

剛當程序員時,我是屬於那種勤勤懇懇類型的員工,工作態度用認真來形容不為過,每天我幾乎是團隊裏最早到公司,又最晚下班的一個。而組員張工一般情況下都是準時上下班的,即使項目進度比較緊急,他也很少加班,除非是有特殊情況,他才加班。

要是按勤奮程度和工作時間長短來衡量,我想我比張工積極多了。按理說,我這麽積極,工作量應該比張工多才對,其實不然,領導安排給我的工作任務和張工的任務相比,我比他還要少。

張工之前是做java服務端的,後來自學了Android移動開發,再後來又自學了iOS移動開發,那時他就是一位多能手,項目安排他做什麽他就能做什麽。

從張工提交的代碼看,他的代碼不僅規範而且很優雅,大的不說,就他能對一些基本控件進行封裝處理,還做了拓展,方便給其他開發人員調用,就已經很讓我敬佩不已了。

而我所謂的工作時間長,其實大多時間是在重復地造輪子,一個相同的功能重復做,不僅沒有做封裝處理,導致冗余代碼還多,有時候剛好碰到需求改動,我就把自己累得夠嗆,現在想想,真的活該啊。

02

類似這樣的情況不知你身邊有沒有:

  • 讀書的時候,有的同學上課時眼睛睜得特別大,還做筆記,一節課下來,筆記本裏密密麻麻的,課後做的練習題也不少,可成績卻差強人意。而有些同學表面看似不怎麽努力,學習成績卻保持很好。

  • 工作時,有些人總是“加班”,看起來很敬業,而他們上班時間卻一會兒逛淘寶,一會兒刷微博,看頭條,該上班時間完成的他們留在了下班時間做。

…………

有時候我會有一種錯覺,覺得自己明明很努力了,連碎片化時間都拿來學習,可進步卻不大。

甚至本該閑著的時間,為了不讓自己閑著,找了一大堆事情來讓自己忙碌起來,貌似挺充實的。一段時間後,發現沒有取得什麽成績,越努力越失敗,於是陷入迷茫。“你看看,我都這麽努力了,怎麽還是老樣子。” 漸漸開始懷疑自己,繼而消沈,甚至萎靡不振。

其實閑著並不可怕,閑著也是一種享受,能夠保持閑著也是一種能力,可怕的是,我們覺得是在虛度時光,盲目地給安排了一些無關緊要的事情, 反而為自己努力而感動的不要不要的。

請不要讓自己只是看起來很努力,因為結果不會陪你演戲.要讓別人羨慕,太容易了,適當裝一下就可以了,但要讓自己羨慕自己,就有點難了。

職場上,懂得不斷的督促自己,適當地給自己施加危機感。怠慢心理,優哉遊哉的心境適合逛商場,本來一個小時就能做完的工作,要是沒有緊迫感,優哉遊哉地,怕是下班了都墨跡不完,久而久之,養成了一種習慣,這並不明智。

真正的努力,不是比誰花的時間多,看上去誰更加努力,而是能否找到合適自己的方法,然後多思考,多總結,摸索一套適合自己的學習方法。

忙碌的時候也要註意勞逸結合,一味的埋頭工作如同老牛拉犁一樣,人的體能是有限的,大腦也是需要休息,超負荷的工作只能降低工作效率,很難產生事半功倍的結果。適當的放松下,喝杯水,讓身心放松下來,或許有意外的收獲。

不知你有沒有發現,接觸的人多了,層面越高,成功的人士大多都懂得彼此相互支持,抱團取暖,因為我好,你也好,你好,我也好,大家好才是真的好。而往往事業不怎麽如意的人,越是喜歡詆毀嫉妒,拆臺,因為我不好,你也甭想好。

所以和有格局有想法的人一起共事也很重要。

技術分享圖片

學習是對自己最好的投資,而機會屬於有準備的人,這是一個看臉的時代,但最終拼的是實力。人和人之間的差距不在於智商,而在於如何利用業余時間,所以沒有等出來的輝煌,只有幹出來的精彩。其實只要你想學習,什麽時候開始都不晚,不要擔心這擔心那,你只需努力,剩下的交給時間,而你之所以還沒有變強,只因你還不夠努力,要記得付出不亞於任何人的努力。

無聊不學習,是年輕人的絕癥,可是別忘嘍,沒有一種青春不辛苦,我們絕不能賤賣我們的青春,每天混飯吃,所以你必須逼自己一把,否則你永遠不知道自己有多麽的優秀,要永遠堅信,財富就在你的腦子裏,只要你決心成功,失敗永遠都不會把你打倒,你的未來不需要別人保證,要把生命浪費在美好的事物上,殺出一條血路。也請你不要在騙自己了,你不是沒時間,你也不是很牛掰,你更不是很累,只有通過今天不起眼的學習,才會成就你明天的了不起,這樣才能把這輩子活的熱氣騰騰,要記住屌絲恒久遠,逆襲永流傳不要在給自己不學習找借口了,否則你永遠都是一個屌絲。

1、我沒有口才——錯:沒有人天生就很會說話,臺上的演講大師也不是一下子就能出口成章,那是他們背後演練了無數次的結果!你罵人的時候很擅長、抱怨的時候也很擅長、但這種口才是沒有價值的口才,看別人爭論的時候、自己滿嘴評頭論足、卻不知反省自己,倘若你付出努力練習,你今天是否還說自己沒口才?

2、我沒有錢——錯:不是沒有錢,而是沒有賺錢的腦袋。工作幾年了沒有錢麽?有、但是花掉了。花在沒有投資回報的事情上面。花在吃喝玩樂上、或存放貶值了,沒有實現價值最大化、所以錢就這樣入不敷出。每月當月光族、周而復始、沒有遠慮、當一天和尚敲一天鐘,得過且過。

3、我沒有能力——錯:不給自己機會去鍛煉,又有誰一出生就有能力?一畢業就是社會精英?一創業就馬上成功?當別人很努力的學習、很努力的積累、努力找方法,而你每天就只做了很少一點就覺得乏味。學了一些就覺得沒意思、看了幾頁書就不想看、跟自己也跟別人說沒興趣學。然後大半輩子過去一事無成,整天抱怨上天不給機會。能力是努力修來的、不努力想有能力,天才都會成蠢材。但努力,再笨的人也能成精英。

技術分享圖片

4、我沒有時間——錯:時間很多、但浪費的也很多!別人很充實、你在看電視,別人在努力學習時、你在玩遊戲消遣虛度。總之時間就是覺得很多余、你過得越來越無聊。別人賺錢了羨慕別人、但不去學別人好好把握時間創造價值,整天不學無術。

5、我沒有心情——錯:心情好的時候去遊玩、心情不好的時候在家喝悶酒,心情好的時候去逛街、心情不好的時候玩遊戲,心情好的時候去享受、心情不好的時候就睡大覺。好壞心情都一樣,反正就是不做正事。

6、我沒有興趣——錯:興趣是什麽?吃喝玩樂誰都有興趣,沒有成就哪來的盡興!沒錢拿什麽享受生活!你的興趣是什麽?是出去旅遊回來月光族、出去K歌回頭錢包空空、出去大量購物回來慘兮兮……打工有沒有興趣?擠公交車有沒有興趣?上班簽到下班打卡有沒有興趣?家裏急需要一大筆錢拿不出來有沒有興趣?借了錢沒錢還有沒有興趣?賣老鼠藥的人對老鼠藥有興趣……?

7、我考慮考慮——錯:考慮做吧有可能就成了、不做吧好不甘心!一想整天上班也沒有個頭、還是明天開始做吧!又一想還是算了、這錢掙的也不容易!不不、就是打工掙錢也不容易,決定了不能放棄機會!哎呀、天都黑了,明天再說吧!然後第二天又因為以上幾點、因為左思右想、繼續循環、最終不能決定。猶猶豫豫、耽誤了很多時間、還是一無所獲。

有句話是:“可憐之人必有可恨之處!”你一生中不是沒有機遇,而是沒有爭取與把握!借口太多,理由太多……!爭取之人必竭力爭取、一分錢都沒有也千方百計想辦法爭取。

技術分享圖片

java開發人員可以看過來。

對於參加工作1年到2年的同學。這部分時間段的同學,已經對Java有了一個更加深入的了解。

對於參加工作2年到3年的同學有的同學在這個時候覺得自己已經很牛逼了,於是忍不住開始慢慢松懈。

參加工作3年到4年的同學這個階段的同學,提升已經是很難了,而且這個階段的學習往往會比較多樣化。

參加工作4年到5年的同學經過前面一年的歷練,相信你在自己所鉆研的領域已經有了自己一定的見解,這個時候,技術上你應該已經遇到瓶頸了。

可以一起學習:454377428 java架構多線程高性能 一起交流學習吧、 幫你提升自己,圖片瓶頸,跟上時代的腳步。

為大家分享自己總結的架構師學習路線圖,大家可以拿來做一個參考:

一、分布式架構體系

分布式怎麽來的。傳統的電信、銀行業,當業務量大了之後,普通服務器CPU/IO/網絡到了100%,請求太慢怎麽辦?最直接的做法,升級硬件,反正也不缺錢,IBM小型機,大型機,采購了堆硬件。

但是互聯網不能這麽幹,互聯網沒有那麽財大氣粗,還有很多初創,能不能賺錢還不知道。所以就有了軟件方面的解決方案:分布式系統,簡單說,就是一臺服務器不行,我用兩臺、10臺、100臺...這就要軟件系統需要支持。

那麽多臺機器,我如何讓他們協同工作,這就需要一個調度中心(或註冊中心);肯定涉及到機器間通信,那麽需要一個高效的RPC框架;一個請求過來了,如何分發,需要一個請求分發系統(負載均衡);然後還要考慮每個角色都不能成為性能瓶頸;還有要能方便的進行橫向擴展,還有考慮單節點故障。

需要分布式系統,並發量肯定不低,

那麽有了上面的還是不夠的,還需要考慮cache、mq、job、db等方面的問題。cache,現在第三方緩存也比較成熟,redis/memcache等;mq,rabbitmq,kafka等等也不錯;job,現在第三方任務框架有elasticjob和tbschedule,或者你用quartz也支持分布式環境下的任務,不過quartz就沒有運維工具了。DB,數據庫最好在項目前期就考慮好業務拆分,系統拆分後DB對應的垂直拆分,後期可做讀寫分離,一主多從,甚至多主多從,業界也有了相應的解決方案。

總結一下,首先要了解分布式原理,然後對應著每個功能區找業界內成熟的產品來實時。互聯網行業,基本都有開源的產品供你選擇。

下圖是我總結的分布式的技術攻克點:

技術分享圖片

二、微服務架構

微服務(Microservice)這個概念是2012年出現的,作為加快Web和移動應用程序開發進程的一種方法,2014年開始受到各方的關註,而2015年,可以說是微服務的元年;

越來越多的論壇、社區、blog以及互聯網行業巨頭開始對微服務進行討論、實踐,可以說這樣更近一步推動了微服務的發展和創新。

微服務架構(Microservice Architecture)是一種架構概念,旨在通過將功能分解到各個離散的服務中以實現對解決方案的解耦。你可以將其看作是在架構層次而非獲取服務的

類上應用很多SOLID原則。微服務架構是個很有趣的概念,它的主要作用是將功能分解到離散的各個服務當中,從而降低系統的耦合性,並提供更加靈活的服務支持。

概念:把一個大型的單個應用程序和服務拆分為數個甚至數十個的支持微服務,它可擴展單個組件而不是整個的應用程序堆棧,從而滿足服務等級協議。

定義:圍繞業務領域組件來創建應用,這些應用可獨立地進行開發、管理和叠代。在分散的組件中使用雲架構和平臺式部署、管理和服務功能,使產品交付變得更加簡單。

本質:用一些功能比較明確、業務比較精練的服務去解決更大、更實際的問題。

這些知識點都是我從業多年總結出來的的經驗,都是當前最主流的技術。想學習這些技術的朋友可以加群:454377428。群裏會分享這些技術知識點供大家學習免費下載

下圖是我總結的微服務的技術要點:

技術分享圖片

三、閱讀源碼、分析源碼

程序員每天都和代碼打交道。經過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的並不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。這種怪狀,真要追究起來,怪不得程序員這個群體本身 —— 它是兩個原因造成的。

我們所有的教育和培訓都在強調怎麽寫代碼,並沒有教大家如何讀代碼

大多數工作場景都是一個蘿蔔一個坑,我們只需要了解一個系統的局部便能開展工作,讀不相幹的代碼,似乎沒用

我常常把寫代碼和寫作進行類比 —— 二者有很多相通之處;但從培養寫代碼和寫作的過程來看,二者又有很多不同。我們的寫作能力,是建立在大量基礎閱讀的基礎上的,是除了學習語法和文法知識外,從小學開始,經年累月,通過閱讀各種不同層次的名家的作品,再加上各種各樣的寫作訓練,累積出來的;而我們的寫代碼的能力,在了解和掌握了語法/文法之後(學習和抄寫 example 代碼也算語法/文法學習的一部分),跳過了大量閱讀名家作品的過程,直接 biu 地一下就自動養成了:學會基礎的語法和試驗了若幹 example 後,我們就火箭般躥到了自己寫代碼打怪贊經驗的階段。這樣略過大量閱讀代碼的階段有三個害處:

寫代碼的基礎是不牢靠的,打怪升級的過程也是最慢的。道理很簡單 —— 前輩們踩過的坑,總結的經驗教訓,你都不得不親自用最慢的法子一點點試著踩一遍。

很容易養成 stackoverflow driven 的寫代碼習慣 —— 遇到不知如何寫的代碼,從網上找現成的答案,找個高票的復制粘貼改吧改吧,湊活著完成功能再說。寫代碼的過程中遇到問題,開啟調試模式,要麽設置無數斷點一步步跟蹤,要麽到處打印信息試圖為滿是窟窿的代碼打上補丁,導致整個寫代碼的過程是一部調代碼的血淚史。(見我的文章:你要避免的軟件開發模式)

你周圍最強的那個工程師的開發水平的上限就是你的上限。

下圖是作為程序員最需要了解的源碼體系:

技術分享圖片

四、工具的使用

工欲善其事必先利其器,工具對Java程序員的重要性不言而喻現在有很多庫、實用工具和程序任Java開發人員選擇。下圖列出的工具都是程序員必不可少的工具

技術分享圖片

五、性能優化

性能優化,簡而言之,就是在不影響系統運行正確性的前提下,使之運行地更快,完成特定功能所需的時間更短。性能問題永遠是永恒的主題之一,而優化則更需要技巧。

技術分享圖片


月薪80k阿裏架構師漫談他是如何從一名小碼農走到今天這一步。