Guide哥從畢業(yè)到入職半年的感受!工作之后我學(xué)到了什么?
大家好,我是 Guide 哥。
“很多人叫我 Guide 哥,可能和我的 JavaGuide 有關(guān),為了方便稱呼所以就用了這個名字當(dāng)作昵稱。”如果大家看過我之前的介紹的話,就會知道我是 19 年畢業(yè)的幾百萬應(yīng)屆畢業(yè)生中的一員。這篇文章主要講了一下我入職大半年的感受,文中有很多自己的主觀感受,如果你們有任何不認(rèn)同的地方都可以直接在評論區(qū)說出來, Guide 哥會很尊重其他人的想法。
簡單說一下自己的情況吧!我目前是在一家外企,每天的工作和大部分人一樣就是做開發(fā)。畢業(yè)到現(xiàn)在,差不多也算是工作半年多了,也已經(jīng)過了公司 6 個月的試用期。目前在公司做過兩個偏向于業(yè)務(wù)方向的項(xiàng)目,其中一個正在做。你很難想象我在公司做的兩個業(yè)務(wù)項(xiàng)目的后端都沒有涉及到分布式/微服務(wù),沒有接觸到 Redis、Kafka 等等比較“高大上”的技術(shù)在項(xiàng)目中的實(shí)際運(yùn)用。
第一個項(xiàng)目做的是公司的內(nèi)部項(xiàng)目——員工成長系統(tǒng)。拋去員工成長系統(tǒng)這個名字,實(shí)際上這個系統(tǒng)做的就是績效考核比如你在某個項(xiàng)目組的表現(xiàn)。這個項(xiàng)目的技術(shù)是 Spring Boot+ JPA+Spring Security + K8S+Docker+React。第二個目前正在做的是一個集成游戲(cocos)、Web 管理端(Spring Boot+Vue)和小程序(Taro)項(xiàng)目。
是的,我在工作中的大部分時間都和 CRUD 有關(guān),每天也會寫前端頁面。之前我認(rèn)識的一個朋友 ,他聽說我做的項(xiàng)目中大部分內(nèi)容都是寫業(yè)務(wù)代碼之后就非常納悶,他覺得單純寫業(yè)務(wù)代碼得不到提升?what?你一個應(yīng)屆生,連業(yè)務(wù)代碼都寫不好你給我說這個!所以,我就很納悶不知道為什么現(xiàn)在很多連業(yè)務(wù)代碼都寫不好的人為什么人聽到 CRUD 就會反感?至少我覺得在我工作這段時間我的代碼質(zhì)量得到了提升、定位問題的能力有了很大的改進(jìn)、對于業(yè)務(wù)有了更深的認(rèn)識,自己也可以獨(dú)立完成一些前端的開發(fā)了。
其實(shí),我個人覺得能把業(yè)務(wù)代碼寫好也沒那么容易,抱怨自己天天做 CRUD 工作之前,看看自己 CRUD 的代碼寫好沒。再換句話說,單純寫 CRUD 的過程中你搞懂了哪些你常用的注解或者類嗎?這就像一個只會 @Service、@Autowired、@RestController等等最簡單的注解的人說我已經(jīng)掌握了 Spring Boot 一樣。
不知道什么時候開始大家都會覺得有實(shí)際使用 Redis、MQ 的經(jīng)驗(yàn)就很牛逼了, 這可能和當(dāng)前的面試環(huán)境有關(guān)系。你需要和別人有差異,你想進(jìn)大廠的話,好像就必須要這些技術(shù)比較在行,好吧,沒有好像,自信點(diǎn)來說對于大部分求職者這些技術(shù)都是默認(rèn)你必備的了。
實(shí)話實(shí)說,我在大學(xué)的時候就陷入過這個“偽命題”中。在大學(xué)的時候,我大二因?yàn)榧尤肓艘粋€學(xué)校的偏技術(shù)方向的校媒才接觸到 Java ,當(dāng)時我們學(xué)習(xí) Java 的目的就是開發(fā)一個校園通。大二的時候,編程相當(dāng)于才入門水平的我才接觸 Java,花了一段時間才掌握 Java 基礎(chǔ)。然后,就開始學(xué)習(xí)安卓開發(fā)。
到了大三上學(xué)期,我才真正確定要走 Java 后臺的方向,找 Java 后臺的開發(fā)工作。學(xué)習(xí)了 3 個月左右的 WEB 開發(fā)基礎(chǔ)之后,我就開始學(xué)習(xí)分布式方面內(nèi)容比如 Redis、Dubbo 這些。我當(dāng)時是通過看書+視頻+博客的方式學(xué)習(xí)的,自學(xué)過程中通過看視頻自己做過兩個完整的項(xiàng)目,一個普通的業(yè)務(wù)系統(tǒng),一個是分布式的系統(tǒng)。我當(dāng)時以為自己做完之后就很牛逼了,我覺得普通的 CRUD 工作已經(jīng)不符合我當(dāng)前的水平了。哈哈!現(xiàn)在看來,當(dāng)時的我過于哈皮!
這不!到了大三暑假跟著老師一起做項(xiàng)目的時候就出問題了。大三的時候,我們跟著老師做的是一個績效考核系統(tǒng),業(yè)務(wù)復(fù)雜程度中等。這個項(xiàng)目的技術(shù)用的是:SSM+Shiro+JSP。當(dāng)時,做這個項(xiàng)目的時候我遇到各種問題,各種我以為我會寫的代碼都不會寫了,甚至我寫一個簡單的 CRUD 都要花費(fèi)好幾天的時間。所以,那時候我都是邊復(fù)習(xí)邊學(xué)習(xí)邊寫代碼。雖然很累,但是,那時候?qū)W到了很多,也讓我在技術(shù)面前變得更加踏實(shí)。我覺得這“這個項(xiàng)目已經(jīng)沒有維護(hù)的可能性”這句話是我對我過的這個項(xiàng)目最大的否定了。
技術(shù)千變?nèi)f化,掌握最核心的才是王道。我們前幾年可能還在用 Spring 基于傳統(tǒng)的 XML 開發(fā),現(xiàn)在幾乎大家都會用 Spring Boot 這個開發(fā)利器來提升開發(fā)速度,再比如幾年前我們使用消息隊(duì)列可能還在用 ActiveMQ,到今天幾乎都沒有人用它了,現(xiàn)在比較常用的就是 Rocket MQ、Kafka 。技術(shù)更新?lián)Q代這么快的今天,你是無法把每一個框架/工具都學(xué)習(xí)一遍的,底層技術(shù)就是你快速上手他們的瑞士軍刀。
很多初學(xué)者上來就像通過做項(xiàng)目學(xué)習(xí),特別是在公司,我覺得這個是不太可取的。 如果的 Java 基礎(chǔ)或者 Spring Boot 基礎(chǔ)不好的話,建議自己先提前學(xué)習(xí)一下之后再開始看視頻或者通過其他方式做項(xiàng)目。還有點(diǎn)事,我不知道為什么大家都會說邊跟著項(xiàng)目邊學(xué)習(xí)做的話效果最好,我覺得這個要加一個前提是你對這門技術(shù)有基本的了解或者說你對編程有了一定的了解。
劃重點(diǎn)!!!在自己基礎(chǔ)沒打牢的情況下,單純跟著視頻做一點(diǎn)用沒有。你會發(fā)現(xiàn)你看完視頻之后,讓你自己寫代碼的時候又不會寫了。
不知道其他公司的程序員是怎么樣的?我感覺技術(shù)積累很大程度在乎平時,單純依靠工作絕大部分情況只會加快自己做需求的熟練度,當(dāng)然,寫多了之后或多或少也會提升你對代碼質(zhì)量的認(rèn)識(前提是你有這個意識)。
工作之余,我會利用業(yè)余時間來學(xué)習(xí)自己想學(xué)的東西。工作中的例子就是我剛進(jìn)公司的第一個項(xiàng)目用到了 Spring Security+JWT ,因?yàn)楫?dāng)時自己對于這個技術(shù)不太了解,然后就在工作之外大概花了一周的時間學(xué)習(xí)寫了一個 Demo 分享了出來,Github 地址:https://github.com/Snailclimb/spring-security-jwt-guide 。以此為契機(jī),我還分享了
《一問帶你區(qū)分清楚 Authentication,Authorization 以及 Cookie、Session、Token》
JWT 身份認(rèn)證優(yōu)缺點(diǎn)分析以及常見問題解決方案
另外一個最近的例子是因?yàn)榉窝滓咔樵诩业倪@段時間,自學(xué)了 Kafka,并且正在準(zhǔn)備寫一系列的入門文章,目前已經(jīng)完成了:
大白話 Kafka 入門;
Kafka 安裝和基本功能體驗(yàn);
Spring Boot 整合 Kafka 發(fā)送和接受消息;
Spring Boot 整合 Kafka 發(fā)送和接受消息的一些事務(wù)、錯誤消息處理等等。
還沒完成的:
Kafka 高級特性比如工作流程、Kafka 為什么快等等的分析;
源碼閱讀分析;
......
所以,我覺得技術(shù)的積累和沉淀很大程度在乎工作之外的時間(大佬和一些本身就特別厲害的除外)。
未來還有很長的路要走,即使再有精力也學(xué)不完你想學(xué)的所有技術(shù),適當(dāng)取舍、適當(dāng)妥協(xié),適當(dāng)娛樂。