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