從畢業到現在已經接近兩年了,在這段時間裡,我日常開發都是使用的 Java,因為大學自學的是 Java,然後畢業找到的工作也是做 Java 開發的。現在做 Go 其實也沒多久,但還是想把自己的一些經歷和學習經驗都記錄下來,要是能幫到你就更好了哦!
其實 Go 在這兩年一直都挺火的,畢竟是 Google 的親兒子,又憑藉著 docker 和 k8s 這兩大殺器,自身又有一些相對於其他語言的優勢(例如併發處理、通道),而且近幾年 Go 的工作崗位也在慢慢增加,一些大廠都逐漸使用 Go 做為開發甚至主力開發語言。去年(2020) 6 月份的時候,我可能是閒著沒事幹,就在網上訂閱了一個 Go 語言的小專欄,然後跟著學了一些,這算是開啟了自己的 Go 學習之路吧。
當然平時還是以工作為主,所以那時候學習 Go 僅僅是出於興趣,並沒有要打算轉行到 Go,學習起來也沒啥壓迫感,挺慢的。學習的方式很簡單,就是跟著專欄上的內容,照著敲程式碼,由於有 Java 的經驗,所以基礎語法知識這一塊學習起來沒啥壓力。我認為程式設計其實就是熟能生巧的東西,沒啥技巧可講的,特別是對於一些初學者來說更是如此,很多不明白的東西,自己多動手敲幾遍就慢慢懂了。
幾個月之後,大概 2020 年 10 月份的時候吧,靠著自己在零碎時間的學習,Go 的大多數基礎知識我算是掌握了,並且這期間我還在 Leetcode 上刷了一些題,使用 Java 和 Go,算是對基礎知識的一個鞏固。這也是一個不錯的經驗,當你學習一門程式語言的時候,如果想要鞏固一下基礎語法,那麼多敲敲程式碼,例如刷一些 leetcode 的題目就是一個很不錯的選擇。我的 github 上面記錄了自己刷過的一些題,建議你學習的時候,也可以參考一下,動手實現一些常用的資料結構和演算法,並且刷一些 leetcode 題目,是一舉兩得的事情。
https://github.com/roseduan/algo-learngithub.com
在國慶節放假前夕,我在網上看到了一個簡單的資料庫模型的論文,內容很簡單,我很快便理解了,於是我想能不能使用 Go 來實現一下,藉此更加好的鞏固自己的 Go 知識。事不宜遲,我便開始了,但是事情並沒有我想象的那麼簡單,看起來容易,但是程式碼並不好寫,完全不知道如何下手。於是我查閱了其他的資料,借鑑了其他的一些專案,到 12 月初的時候,才開始寫這個專案的程式碼。然後整個 12 月,我都在用 Go 寫這個專案,大概一個月的時間,專案最初的版本便寫完了,我將它放到了 github 上:
https://github.com/roseduan/rosedbgithub.com
經過這一個月的程式碼量,我自認為對 Go 算是入門了。這也是一個很不錯的經驗,那便是學習的目的在於實踐,如果知識只停留在理論層面,那麼你對它的理解和認識一定是模糊的,一定要去實踐一下,才會發現更多的為什麼,才會真正搞懂自己在理論學習階段的很多沒搞懂的東西。
如果你也正在學習 Go,並且不知道有啥好的實戰專案,那麼強烈建議你看一下我的這個專案,這是一個很簡單的資料庫,我把它命名為 rosedb(我的英文名字是 Rose),Go 的大多數知識都用到了,一定會是鞏固 Go 知識的一個絕佳的素材。你可以自己先耐心的看,然後再試著自己寫,或者給這個專案提交程式碼,完善功能。
到了 2020 年底,我有了跳槽的想法,於是開始找工作,我在我的簡歷上寫了 Java 和 Go,投遞簡歷的時候,Java 和 Go 的崗位都有投遞。先後面了幾家公司,有兩家 Java 的,有兩家 Go 崗位的,在面試 Go 的時候,面試官都讓我介紹一下我的開源專案 rosedb,這其實說明,如果你的簡歷上有不錯的開源專案,不管 star 數量多不多,都會是一個不錯的亮點 ,因為這至少能證明你的動手能力、程式設計能力等等都是不錯的。
現在在 B 站的工作主要是用 Go,進入到實際的專案之後,才發現其實我還是有很多不懂的東西, 比如我們專案中使用到的 gRPC 和 GORM,於是我在閱讀專案程式碼的時候,會結合著官方文件學習一下這些技術,也會針對一些比較重點的內容,買一些書籍結合著來看,然後在實際專案中不斷踩坑歷練,對於一些業務相關的基礎技術就能夠很好的掌握了。
現在回頭來看,其實當初我並沒有要轉語言方向的打算,只是碰巧學習了一下 Go,然後找工作的時候恰好找到了 Go 開發崗位的工作,算是誤打誤撞吧。這裡也給看到這篇文章的小夥伴一些良心的建議,其實國內的這些網際網路公司,技術總體來說還是服務於業務的,所以無論你學習的是什麼技術,只要能夠在業務中產生價值,讓你擁有成就感,我覺得就是一件挺好的事情。關注技術熱潮不是什麼壞事,但是切忌心浮氣躁,看著什麼火就去學什麼,到頭來很可能什麼都學不精通,最好的便是專注於某一個領域,在精力有餘的情況下,學習一點自己感興趣的東西,這也可能也會給自己的未來增加一些不確定性。
本作品採用《CC 協議》,轉載必須註明作者和本文連結