非科班出生轉行PHP開發三年後,又轉戰到Java開發我都經歷了什麼!

語言: CN / TW / HK

一、前言

大家好,我是阿七,“淺談架構”公眾號作者,這篇文章主要聊一聊,我從零基礎學程式設計,phper入行,三年之後,又轉到Java開發的一些親身經歷。希望對於正在迷茫的你,有所啟發。

二、科班,還是非科班?

我14年畢業於湖北某普通二本學校,資訊與計算科學,咋一看,這不是計算機專業嗎?我填志願的時候也是被這個名字騙了,這個專業前身叫“計算數學”,本質上是學數學的。畢業的同學有一部分當老師,一部分做銷售,當然還有一部分是程式設計師。

但是進入大學,我對程式設計並熱愛,那時候就只想著怎麼掙錢(大學階段開過腳踏車行,搞過培訓機構,這是一段挺有意思的經歷,有機會再和大家分享)。記得大二的時候,我們宿舍就有同學開始自學計算機,但是我發誓“以後打死也不搞程式設計”。所以也就沒有和他們一起“鑽研”。

對於我,大學基本上是沒有怎麼學程式設計課的。所以,我可以定義為“零基礎,非科班”。

三、什麼時候開始都不晚,晚的是你從來都不敢開始

畢業之後,我也和一部分大學生一樣,找不到合適的工作,去深圳做了一段時間銷售。但是發現那並不適合,眼看那些老員工,一眼也能看到5年,10年後自己的樣子,所以毅然辭職了。

迷茫,無助這些詞都不足以描述我當時的處境。

還好自己有點積蓄,撐了一段時間。

後來一偶然的機會,看到一部電影裡面有句臺詞:”什麼時候開始都不晚,晚的是你從來都不敢開始“,深有感觸,就感覺非常的治癒。

然後我就非常固執的開始了零基礎學習程式設計之旅,我的初衷很簡單”明年,比今年強點,5年後,可能就不一樣了“。

那時候有一些好朋友,都勸我”放棄吧,程式設計水很深“。好吧,經過這麼多年證實了,的確很深。

四、上錯花轎嫁對郎

學什麼呢,綜合對自己的判斷,我覺得自己適合搞前端,喜歡前端,可能因為所見即所得,也可能入行門檻低點,所以我就從HTML,CSS,JS課程開始。每天學習16個小時。說實話,前一個月是比較難受的,是強迫自己,但是一個月之後發現自己慢慢喜歡了這種感受,很充實。

但是,天有不測風雲。後來找工作,那時候,武漢的前端崗位很少,PHP如火如荼。

就這樣,陰差陽錯,我走上了PHP開發的道路。起初我是很排斥的,但是隨著時間的推移發現,比起前端,我更適合後端,我能每天沉下心學到凌晨1-2點。慢慢產生了興趣,也許這就是“上錯花轎嫁對郎”了吧。

所以,其實本質上起初也不知道自己”喜歡“的是什麼,只是在當時認知範圍內的”以為“。

如果你正處迷茫,送大家一句話:”沒有什麼是不可以改變的,隨著量變,都會產生質變,你所需要的是找到一個方向,一頭扎進去“。

從那之後,我微信備註就改成了”當你只有一個目標的時候,整個世界都會給你讓路“,以此來激勵自己。

五、一帆風順的PHP開發之路

入行PHP之後,很幸運遇上了一個好領導,非常包容,人如其名,翔哥。工作之餘 ,每天回家之後也堅持學到凌晨1點。我也會去研究一些新的技術,攻破公司裡面的一些技術難點,引進新的技術到生產環境。大概半年多時間左右,就成為了平臺研發小組長。

2016年來到北京之後,也遇到了很多大牛,像老餘,巍哥,暈姐,與他們共事,參與到核心專案中開發,技術能力也在一步步增長。同時我也會去學習一些其它語言,像Python,GO,Java,Lua等。同時也彌補之前大學沒有學習的基礎(用我的話來說,是在彌補曾經放蕩不羈欠下的債)。我每一個階段(大概一個月),會制定一個短期學習計劃,一年一個長期計劃,有目標地前行。

所以我PHP程式設計還是挺一帆風順的。

六、不安分,再次出發

後來,我去了家PHP很強的公司,慢慢也感覺到自己職業發展的瓶頸,平時在看一些書,好多都是Java寫的,自己也慢慢被”種草“了,感覺Java是一門藝術,萌生了想轉行Java的念頭。

其實,程式設計能力無非就由兩部分組成

  1. 程式語言基礎能力

  2. 業務理解能力

業務理解能力有了,只需要去攻破語言本身,這還是比較簡單的。

所以我就重點花了點時間攻破1,大概花了2-3個月時間學習Java技術棧,在18年初再次出發,開啟了Java之路。

七、PHP要轉到Java需要做哪些準備。

大家先想想,PHP服務端開發,平常用的哪些東西。Nginx,PHP語言基礎,PHP整合Mysql, Redis,MongoDB,訊息佇列(RabbitMQ)等等,然後就是框架。所以同理,Java也是一樣的道理。

  1. Java基礎,包括Java語言基礎,JUC包,設計模式等。

  2. Spring,Springboot框架, 怎麼去整合Mysql,Redis,MongoDB 等, 先學會用。然後學習spring裡面的一些AOP,IOC原理及思想,Springboot自動裝配實現原理。

  3. 訊息佇列,Java裡面比較常用的是RocketMQ。

  4. Elasticsearch:一個分散式、RESTful 風格的搜尋和資料分析引擎。

  5. 再去看看Java裡面微服務怎麼搞,SpringCloud有一整套解決方案,把配置中心,註冊中心,閘道器,負載均衡,熔斷降級,監控報警,生產者,消費者這些弄個Demo實現一遍, Github上面也有很多大牛寫的SpringCloud腳手架之類的,可以參考。

  6. 然後最重要的,找一個大點專案,比如商城專案,把以上1-5學習的串起來。

很多東西都是相輔相成的,可以類比PHP裡面用到的東西,Java怎麼實現的,自己寫Demo實現一遍。

也就是,先一個點一個點去學,再把點串成線。最後線再擴充套件組成自己的知識面。

做到上面幾點,上手幹活基本上沒有什麼問題了。再想更加深入提升,就得多看看比較優秀的框架原始碼Spring原始碼,Netty原始碼(看原始碼要帶著問題去看),Dubbo原始碼等等,要知其然,並知其所以然。

八、什麼樣的phper適合轉行

  1. 首先得在PHP程式設計領域技術還可以,如果連PHP都搞不好,那Java可能更有難度。

  2. 其次要非常自律,並且有求知慾,愛折騰,愛好程式設計,能夠保持每天學習(每天至少2小時以上)。Java知識體系相對來說要學的東西更多,更復雜。其實我覺得無關乎天賦,努力比天賦更重要。

  3. 最後,不怕困難,耐得住性子,學習途中可能會遇到很多莫名其妙的問題,可能花費好幾天也解決不了,自己得有辦法”釋懷”。

九、總結

截至目前(2022年),距離我轉Java已經四年時間了,感覺就是,有另外一片天,有更多的東西需要去學習和研究。

現在回頭去看曾經奮鬥的點滴,還是記憶猶新。再想想當初的“初衷”,肯定是遠遠超過自己的預期了,這就是意外的驚喜吧。只想說:"努力了,就會有意外的收穫,感謝曾經奮鬥的自己,同樣將來的自己,也會感謝現在奮鬥的自己"。

有夢想,就鼓起勇氣去追求吧,人生短暫,不留遺憾!

2022,不忘初心,砥礪前行!