《程序人生》風雨十年-從大學到技術專家我作了啥?

你知道的越多,你不知道的越多前端


點贊再看,養成習慣java


本文 GitHub github.com/JavaFamily 上已經收錄,有一線大廠面試點思惟導圖,也整理了不少個人文檔,歡迎Star和完善,你們面試能夠參照考點複習,但願咱們一塊兒有點東西。git

前言

大家都知道的,帥丙我自己確定是達不到技術專家的地步的。程序員

呸,敖丙你個渣男,又標題黨 !github

我不是可是我身邊不少人是呀,字節跳動,PDD,阿里等等的大佬我認識不少,因此如下是我問了他們的成長路徑的總結,仍是具備必定的表明性。面試

身邊這些朋友都是在互聯網領域多年的大牛了,由於生活和我的習慣的緣由,不少都沒有寫博客的習慣,或者沒有公開出來,可是他們卻遇到了帥丙,我騷啊,我能夠幫他們整理出來啊算法

目的是爲了讓不少跟我同樣的新人,對一條完整的職業規劃之路有一個清晰的認知,青銅到王者要經歷些什麼數據庫

青銅-萬惡之源

《計算機基礎》,這是全部讀者大學最開始都會上的課吧,我問了羣裏的仔,他們都說是的,我想你們也是。編程

在計算機基礎中咱們會學到計算機的歷史、計算機的特色、進制轉換、內存管理、線性數據結構、網絡請求協議等等。後端

計算機基礎真心很重要,無比重要,究極重要,爲啥我這麼說呢,裏面涉及的計算機知識還有不少網絡協議的知識,你們之後必定會用到,我能夠負責的告訴你,面試也必定會問,什麼Http、Https、Tcp/Ip、三次握手、四次揮手面試不要太常問。

Tip:這裏有個小插曲就是我身邊那個架構師團隊Leader這周面試阿里p8崗位的時候,我覺得問的都是什麼源碼,中間件的究極操做,我想你們跟我想的同樣,可是你們錯了,反而問的不少計算機的基礎知識。

​ 我聊天大概問了一下面試內容,有什麼求二叉樹的鏡像,內核態和用戶態的理解,計算機的緩存頁等。

​ 你們是否是驚了,這他*不是我校招的題目麼?怎麼P8級別的大佬還問這個?其實很好理解,你們想一下到了必定的工做年限技術的廣度深度都有必定的造詣了,你寫代碼就這樣了沒辦法優化了,機器配置也是最好的了,那還能優化啥?

底層,咱們都知道全部語言到最後要運行都是變成機器語言的,最後歸根究底都是要去跟機器交互的,那計算機的底層是否是最後仍是要關注的東西了?

福利:他這週會來咱們公司面試,屆時我會詳細問一下具體的面試內容,若是你們想看我能夠到時候整理一下寫出來,看看那種級別的強者的世界究竟是怎麼樣的。

學完計算機基礎你基本上對計算機的整個知識體系都只知其一;不知其二了,對於編程或許仍是很懵懂,可是你如今已經要踏入編程的門了。

白銀-編程第一課

計算機基礎學了,後面就要編程的入門課程了。

想必看我這篇文章有99%的小夥伴都是如下面這段代碼開始的本身的程序人生的吧:

我還記得帥丙我就是大一開始學習的C語言,《C語言程序設計》譚浩強老師的課本,在第27頁就是第一章,HelloWord,如今回憶起來還歷歷在目,老師在黑板上寫下這兩個莊嚴的單詞,同桌的她和我露出無限的求知慾……

我想全部的語言都是語法基礎開始的,並且編程語言的基礎語法也都是大同小異的。

If、For、While等關鍵字,List、Set、Map等集合,Int、float、Double等基礎類型,你們第一次學的時候我想也不會知道,這些關鍵字將會陪伴咱們走完各自的程序生涯吧?

接下去就難一點好比JDBC、IO、文件流啊什麼的,帥丙依稀的記得當時仍是代碼裏面寫SQL而後查詢,也不知道記錯沒有。

學到這裏,你可能以爲你JavaSE無敵,出去能夠找工做了,反正當時的帥丙,以爲本身能夠闖出一片天了,不知天高地厚,四處炫技。

可是幼稚的我根本不知道,未知的前方還有什麼等着我,我也不知道本身其實才剛入門,可是若是要往WEB方向發展,這些卻是基本足夠了。

可是你到如今爲止學的東西都是服務端的東西呀,怎麼讓你的服務端東西展現給別人看呢?

這個時候咱們就應該去作個醜不拉幾的頁面,進行簡單的交互了,你這個時候要學HTMLServletMySQLJavaScriptTomcatCSS等。

目標呢就是寫出第一個動態網站,也許只是個登錄功能,只能展現下我的資料,但這是很重要的一步,你要弄清楚的是,一個用戶的點擊產生的請求,是從哪裏發起,哪裏接收,哪裏處理,哪裏返回,你得理解瀏覽器和服務器的關係和分工,CookieSessionRequestResponse

Tip:我記得我剛出來面試就有面試題是這樣的,一個Http請求從網頁發起到服務端產生數據返回中間經歷了些什麼,或者Spring作了什麼?你們能夠思考一下

​ 還有有一個本身的項目真心很重要,敖丙我就是在大學期間作了項目,至今在校園內網上穩定運行着,出來實習面試的時候基本上也是一路披荊斬棘,吊打了同行面試的仔,反正大學有個項目賊加分,是讀者的大學生記住了麼?

黃金-初出茅廬

上面的只是WEB開發的學習初級階段,這都是些JAVA誕生以來最原始的最官方的WEB開發技術,固然如今真正的項目不多直接採用這些技術了,如今都是先後端分離了,Vue、Node.js、React等前端的語言更新迭代速度很是快,帥丙我學了一點剛用舒服,前端的朋友告訴我又迭代了……我他*不學了!

爲了避免斷提升技術的易用性、開發效率和可維護性、可擴展性,無數開源項目都是在這些原始技術的基礎上封裝、改進。

因此這個階段不要盲目樂觀地跑去找工做或者對實習挑三揀四,你會被打擊到的,又或者找個小公司渾渾噩噩幾年過去感受跟新的技術棧脫節。

有人跟你說小公司學的東西多,他害你的,剛開始能去多大的去多大的,越大越好,你想你去了大的你想去小的分分鐘的事情,可是你小的要去大的就相對難了。

好,初始階段完成,開始進入WEB開發的正題,首先是傳說中的框架,SSM(Spring SpringMVC Mybatis)成爲熟練的增刪改查程序員是必須的,在這個階段你還要理解爲何要用這仨而不是那些Jsp、Servlet、Jdbc,你要體會到寫MVC、三層架構的好處。

這個階段不要輕易質疑框架的價值,也許剛開始你會以爲麻煩,以爲他們有時候是畫蛇添足,我最開始這麼寫的時候發現,真的噁心,什麼dao,service,Controller等等,分這麼多幹嗎。

等過一兩年後回過頭來你會以爲少了這些框架你已經很難幹活了,沒有分層清晰的系統,你反而開口大罵項目的架構師的。

*

不過要提醒你們的是,這個階段還要避免的心態是,能熟練地增刪改查了,就自認爲寫程序不過如此,而後往簡歷上填個精通,這也是新手面試被批得體無完膚的緣由之一。

淺嘗即止,是新手的大忌,爲啥這麼寫,這麼寫有啥好處,有啥壞處,多問幾個爲何,你多年後會感謝敖丙的。

若是你學得好,這會應該能熟練地寫個博客啊,小論壇啊之類的WEB項目了,也就是達到了就業的基本要求。

Tip:並且說一下做爲一個應屆生,你除了基礎知識,若是你有本身的技術博客,還有像樣的項目能展現給面試官看,是真的很加分,搭建個簡單的項目,項目流程你也知道了,技術棧也熟悉了,還能夠手機訪問網頁給面試官現場演示,很加分的。

像我身邊的朋友Java3yJavaGuide我沒有三顆心臟等,就是在這個階段就已經開始寫了本身的博客,而且各自都作出了成績,這些之後都是你面試的議價能力的一部分,也是你的加分項,和你自身的財富。

我問了一下他們,都是靠博客就已經獲得很多大公司的面試邀約了,反正有項目,有不錯的履歷,有不錯的博客,都會給你加分,若是你什麼都沒有,如今動手去多學點,少打兩局LOL等你到我這個年紀就會發現,索然無味

鉑金-遵義會議

這會是程序員生涯的一個轉折點,把握好了人生起飛,把握很差全盤皆輸,因此我用在我老家遵義舉辦的遵義會議,做爲這階段的標題,我以爲,妙啊

慢慢的你會發現數據庫性能實在不行,出於不甘現狀,或者趕時髦,你該去了解NoSQL了,MemcachedRedisMongodb等非關係型數據庫眼花繚亂,不要緊,試着用用,能很好地緩解MySQLOracle之類關係數據庫的壓力。

出於公司某些業務須要,你可能會鑽研一個特定技術領域,好比全文搜索技術ElasticSearch(如下簡稱Es),那你瞭解了Es,你又要想到數據庫的數據怎麼同步進Es呢?

你可能會接觸到LogstashCanal等中間件,而後發現可視化也是個問題,那Kibana就應運而生,用的時候發現歐洲人的分詞習慣跟咱們不同,那Ik中文分詞器又得了解啦。

使用以後你還會發現他底層的Lucene有不少坑要怎避免,時間多你還能夠了解Solr等等。

總之知識就是一個體系,我常常跟羣裏的仔說,造成知識體系,你面試說了Es那相關的技術棧你同樣要了解的,我題目取了叫《吊打面試官》就是噱頭,你去面試若是面試官技術深度真的很深,我想被吊打的100%是你。

你甚至會開始對系統中一些比較特殊的存在感興趣,好比權限系統單點登錄之類的,又或者某些特定業務領域的算法研究,這些是你的加分項。

你還發現服務拆分後Http通訊有諸多弊端,就開始接觸優秀的Rpc框架還有消息隊列中間件了,如DubboRocketMQ等。

再再後來你發現呀,數據量大得一批,表頂不住了,幾億數據查出來要好幾秒,那分庫分表就出來,什麼水平拆分垂直拆分,還學習了TDDLSharding-JDBCDRDS等這樣的分庫分表中間件。

可是你用了發現全局的惟一id生成又是一個問題,或許中間件有自帶的,可是你仍是要了解原理,什麼雪花算法uuid等等也得學。

再再再後來呀,你發現分庫分表也頂不住了,業務體量爆炸式增加了,你可能就須要瞭解動態分庫分表的解決思路和解決方案了,特別是FaceBook開源的一些方案。

再再再再後來呀,你發現動態分庫分表也不行啊,不少離線的數據也不少啊,天天幾個T,公司都要被敗光了,那你就要了解大數據場景的離線分析啊,數據緩存啊,數據清洗,數據可視化等等啊什麼的。

那就須要學什麼ODPS啊,HadoopHiveHbase等等中間件或者工具了。

再再再再再後來你開始發現你的代碼很亂,久了之後本身都看不懂,重複的,難以重用的代碼堆積如山,不想維護,BUG百出。

因而你要開始重視設計模式,合理地改造下本身的代碼習慣,再也不被僵化的SSH、MVC三層架構束縛住。

再再再再再再…..(敖丙你是否是沒玩了?哈哈其實還真有我就不列舉了)

到這裏不知道你有沒有體會到我每篇文章開頭那句話的意思?敖丙就是工做以後發現本身愈來愈無知了,你再品一下下面這句話。

你知道的越多,你不知道的越多

Google和各類資料是你進步的動力,極少再遇到必須請教別人才能解決的問題,若是你這個階段還總是問別人,你的技術生涯也就快到頭了。

這個階段,若是你技術卓越跟敖丙同樣能吹,你的收入將是白領水平,至少接近了,或者大幅領先同齡人了。

我以爲多數程序員在工做多年以後都能達到這個水平,有的人只須要一兩年,有的人卻要用上五六年,在這個階段落伍的人,有的是出於天賦和思惟所限,有的是出於對技術缺少熱情,有的是出於工做內容的制約。

等到年近中年,再也拼不過年輕人,被淘汰出局,只能在自嘲爲屌絲和碼農的無奈中黯然轉行。

這是個很重要的分水齡,你能不能繼續進步,能不能在30歲之後繼續從事技術工做,能不能在公司裏獨當一面,我以爲就看你能不能超越這個階段了。

不少爛公司裏工做數年的項目經理,連這個層次都還沒達到…

爲了30歲的本身聽到裁人徹底不虛,爲了家裏的老母親再也不爲了省電費不捨得開燈,爲了讓本身……

我想這個階段你應該要作好準備,這也是我大篇幅介紹這個階段的緣由。

磚石-揚帆遠航

你要讀讀優秀開源項目的源碼,你要搞懂一些當年不懂的基礎知識,你開始理解《thinking in java》的精髓,你能寫一些底層的代碼,有時還會以爲本身封裝的比某些開源工具更好用更簡單。

當年看不懂的《深刻分析JVM虛擬機》如今你已經能夠對裏面的知識點如數家珍張口就來,而且可以將大量知識點帶入到項目中優化,而且可以看到實質性的變化(暗示KPI)。

WEB的難點和重點永遠都在於性能、負載能力上,而如今網絡的發達形成了數據量和操做密度的大大上升,硬件卻沒有相應的進步。

你得試着更好地運用更多的服務器來協同工做,從WEB端到服務端到數據庫,全都須要集羣,須要分佈式,須要合理的控制數據的流向,掌握好網站上下,一大堆機器的平衡,找出性能的瓶頸,找出穩定性和安全性的瓶頸,硬件出現故障,第三方技術出現錯誤,將被當成屢見不鮮融入到你的系統和代碼裏仔細考慮。

你會開始以爲方案無比地重要,一將無能累死千軍將不斷應驗,一個很差的設計,一個很差的方案,會讓一羣優秀的程序員工做成果大打折扣。

你要關注架構知識,不能再知足於SSH三層架構到底。

領域驅動設計,面向事件開發,敏捷開發等等一系列的思想在關鍵時刻能決定你項目的生死,這個階段再也不有標準範例讓你照抄,你只知道思想和原理,實踐卻須要本身不斷嘗試和改進。

多關注各類雜七雜八的開源技術,有些你可能前面已經接觸過了,和通訊有關的,和集成開發環境有關的,和架構有關的,各個領域你都應該能信口說上幾個主流技術,雖然你可能只是據說過,瞭解。

但關鍵時刻你得知道如何去選擇技術,並快速掌握它。

你還會去考慮嘗試下別的語言,這裏不是說轉向什麼C++ C#之類的,那和JAVA程序員不相干,我說的是一些運行於JVM之上的語言,好比scala和groovy,初識他們時你會以爲Java真的老了。

但當你回到一個綜合性的大型項目中,又會以爲Java積累下來的整個體系技術是如此完善,就像一個工業化標準同樣,你可能發現光是Spring家族的東西你都受用終身,沒法徹底通讀。

你能把這個階段實踐好,勝任項目經理,乃至中小公司的技術總監,大廠的小團隊Leader都是能夠的。

大師-登峯造極

其實寫到上面這個階段的時候我以爲,這是不少人知足的地方了,都是小公司技術總監了,那我圖啥?

可是未知的人生還在那等着你呢,我問了身邊頂級的大神,爲啥要走出溫馨區?去像字節、阿里等這些壓力大不少的地方呢?

他們給的回答都不太同樣,可是同樣的就是挑戰自我吧,誰也不知道哪裏是本身的終點,那爲啥很少作點嘗試,新的環境,新的技術棧,新業務場景挑戰新的自我。

這個階段你的一舉一動可能都關係一個項目的生死存亡,一個錯誤或者正確的決策就可能改變整個項目的命運,水能載舟亦能覆舟,我想用在這裏也恰到好處。

我身邊這樣級別的大佬百裏挑一,但不是沒有,他們在公司都是核心人物,大型項目或者項目緊要關頭都是他們帶領團隊沖沖衝,除了問題也是能最快給出解決思路和方案的。

Tip:我如今的老大就是這樣的人,雙十一你們還手忙腳亂去追數據的時候,他上來一套操做,寫了幾個腳本就搞定了,臥*咱們當時周圍一羣人,從頭至尾的知識盲區,結束了還沒反應過來,只能拍手叫666。

這就是強者的世界,我所向往的世界,固然我知道這樣的世界,只有一步一個腳印才能涉足。

王者-泰山之巔

最後王者其實我不會寫任何內容,能到這個領域的人自己就是屈指可數了,敖丙身邊有,可是我以爲你們本身體會吧,通常就是人脈,交際,能力都到了必定的高度了,這個階段的事情我也體會不到。

能想到的就只有先祖的詩句:指點江山,揮斥方遒。

算是給你們留下無限遐想的空間吧,將來或許你就是你所在領域的王者也說不定的呢對吧。

總結

不知不覺寫了這麼多了,以上是我我的眼裏的通常向JAVA 程序員的發展線路,限於篇輻也不全面,實際我的成長路線可能由於工做內容的不一樣差別會很大,有的人偏向了底層研究,有的人偏向了業務需求設計,有的帶有濃重的行業色彩,並且技術以外,還有不少知識也很重要,作JAVA沒有輕鬆的方向,但一個對技術抱有興趣的人,走到這一步時,仍然會對開發抱有熱情,想要寫出好的項目。

純爲了生計而工做的程序猿是走不到這一步的,這一行來都來了,你們一天都是24小時,爲啥有差距,我想你我都明白的,知道爲啥那就幹出點名堂吧。

敖丙的絮絮不休

上週還發起了一個投票你們記得麼?就是我要修改我公衆號的名字,下面是投票的結果

敖丙也是真男人來的,說改就改了,大家會發現我全部博客平臺的廣告,也會在週末悄無聲息的被我改掉的,之後三太子敖丙就取代JavaFamily了。

而且也作了個很重要的決定,這一個多月來,公衆號文末的廣告多多少少都有點積蓄了,可是這個錢說實話我出去恰個火鍋都夠嗆,差很少天天都是這樣吧。

那我一想這個錢是你們給個人,我最後就還給你們,之後也是同樣,每次到月底我就抽個獎,買十幾本書送你們。

不知道你們喜歡不喜歡呀!!!

還有就是抽小夥伴喝咖啡了,這裏好像就杭州的小夥伴我能線下約了,外地的小夥伴我就打20塊吧,雖然很少可是是個心意嘛。

點關注,不迷路

好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才

我後面會每週都更新幾篇一線互聯網大廠面試和經常使用技術棧相關的文章,很是感謝人才們能看到這裏,若是這個文章寫得還不錯,以爲「敖丙」我有點東西的話 求點贊👍 求關注❤️ 求分享👥 對暖男我來講真的 很是有用!!!

白嫖很差,創做不易,各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!

敖丙 | 文 【原創】

若是本篇博客有任何錯誤,請批評指教,不勝感激 !


文章每週持續更新,能夠微信搜索「 三太子敖丙 」第一時間閱讀和催更(比博客早一到兩篇喲),本文 GitHub github.com/JavaFamily 已經收錄,有一線大廠面試點思惟導圖,也整理了不少個人文檔,歡迎Star和完善,你們面試能夠參照考點複習,但願咱們一塊兒有點東西。

相關文章
相關標籤/搜索