1. 程式人生 > >應屆畢業生工作7個月小結

應屆畢業生工作7個月小結

前言: 不知不覺已經工作了快 7 個月了,去年這個時候還躋身在考研的大軍中,不禁有些感慨... 結合這 7 個月發生的一些事情,簡單做一下總結吧...

為獲得更好的閱讀體驗,請訪問原文地址:傳送門

一、那時候剛入職


不同於其他同學忙於畢設的 4 月,提早安排趁寒假已經完成畢設的我,已經開始撲在了「找工作」這件事上,有了去年「秋招」打下的基礎,複習起來快了很多,沒過多久就開始投簡歷面試了,面試也總體比較順利,剛面沒幾家就迅速和一家自己看好的初創公司簽下了。

公司使用的技術棧區別於自己熟悉的 Java/ MySQL 這一套,而是主要使用的 Rails/ MongoDB,所以剛入職的一段時間,基本上都是在自己熟悉技術棧,也趁著閒暇的時間,把自己入門時候的一些學習心得寫成了文章發表:

  • MongoDB【快速入門】:http://www.wmyskxz.com/2019/04/25/mongodb-kuai-su-ru-men/
  • Java轉Ruby【快速入門】:http://www.wmyskxz.com/2019/04/26/java-zhuan-ruby-kuai-su-ru-men/

對於職場小白來說,所謂「職場」還是顯得有些陌生,剛來的時候,雖然跟周圍的同事都稀鬆平常地打了一圈兒招呼,坐下之後,隨著他們又埋頭噼裡啪啦敲打鍵盤工作的深入,又頓覺周圍一片陌生,還挺奇妙的,在第一週完的週報裡面我寫道:

剛來公司有些迷茫,只是看著CheckList對照著熟悉一些技術,也不瞭解自己應該要熟悉到哪種程度,就希望自己能再主動些,不管是技術問題還是其他問題多請教,然後儘快跟其他成員熟悉起來。

剛開始上手的時候也有好多問題不懂,我都習慣性的選擇自己研究一陣兒,因為自己有寫部落格的一些經歷,被問過好多一搜索 or 自己一嘗試就能解決的問題,所以比較剋制,但是後來「入職 1v1」溝通的時候被說到有問題別自己死磕,半個小時沒解決儘量就找一下旁邊的同事。摁?我一下子就把我的「主動性」發揮了出來。

不過好記性也不如爛筆頭,找了一些工具記錄把這些「問題的答案」都記錄了下來,方便之後再查詢,當時對於 Git 都不是很熟悉,也記錄了很多常用的命令在裡面,還有一些問題的反饋,甚至知道了月會要自我介紹,也打了一遍草稿記錄在了這裡:(那段時間真的問了好多問題,週報裡也手動感謝了坐我旁邊的兩位大佬..)

入職兩週的時候,雖然已經開始上手做一些簡單的埋點工作,但自己對於 Ruby 還是不是特別瞭解和熟悉,趁著某一個雙休,抓著一本《Effetive-Ruby》啃了兩天,也把自己的學習輸出了一下:

  • 《Effective-Ruby》讀書筆記:http://www.wmyskxz.com/2019/05/12/effective-ruby-du-shu-bi-ji/

二、逐漸能夠上手


就這樣一邊熟悉,一邊開始接一些小需求,我記得我寫下的第一個 BUG,就報出了 6K 條記錄.. 慌慌張張在修復之後我不禁感嘆:「不要太相信使用者的任何資料」。(包括 equal 反寫也是之後在錯誤之中學習到的..)

剛上手沒有一段時間,就接到了一個新專案的需求,跟著一位大佬開發一個新功能,大佬負責搭建基礎程式碼和設計,我負責完成其餘的功能程式碼,沒敢一絲懈怠,下班回家之後也對照著別人寫的程式碼敲敲敲,時間和完成度上倒是沒有一絲耽擱,只是現在回過頭一想,當時沒有什麼單元測試的概念和意識,就自己在本地 Post-Man 測試完就完,所幸比較簡單 + 自己測試得比較仔細,到現在也沒有出現過什麼問題。

工作對我這樣的小白另一個好處就是:「見識和增加技術的廣度」。公司所使用技術棧不論是廣度還是深度,都是自己在大學本科的學習中不可企及的程度,Jekins?Docker?K8S?跳板機?一下子冒出來好多新鮮陌生的名詞,懷著好奇心也嘗試瞭解了一些:

  • 瞭解【Docker】從這裡開始:http://www.wmyskxz.com/2019/05/29/liao-jie-docker-cong-zhe-li-kai-shi/
  • 「訊息佇列」看過來!:http://www.wmyskxz.com/2019/07/16/xiao-xi-dui-lie-kan-guo-lai/
  • Kafka【入門】就這一篇!:http://www.wmyskxz.com/2019/07/17/kafka-ru-men-jiu-zhe-yi-pian/

也隨著公司的逐漸壯大,各模組的耦合也越發嚴重,各條業務線之間的協作溝通成本越來越大,逐漸開始提出「微服務」這樣的概念,具體怎麼樣理解就不作討論了,總之就是期望通過梳理/ 重構/ 拆服務的方式來解決「協作」問題,所以期間也開始瞭解學習一些這方面的東西:

  • 什麼是微服務?:http://www.wmyskxz.com/2019/06/07/shi-me-shi-wei-fu-wu/
  • 《重構:改善既有程式碼的設計》讀書筆記:http://www.wmyskxz.com/2019/06/08/chong-gou-gai-shan-ji-you-dai-ma-de-she-ji-du-shu-bi-ji/

甚至期間還做了一些「微服務」的調研,我們選用什麼樣的姿勢和技術棧更加合適,所以也輸出了一些關於「Spring Cloud」的東西,但是最終駁回的原因是待我們整個容器化之後 k8s 平臺自帶了這麼一套東西,業務同學只需要關心業務程式碼就行了,也就沒有繼續深入了:

  • 你想了解的「Spring Cloud」都在這裡:http://www.wmyskxz.com/2019/06/09/ni-xiang-liao-jie-de-springcloud-du-zai-zhe-li/

然後我們在拆解的過程中,也借鑑到一些「DDD」的思想,也嘗試進行了一波學習:

  • 【吐血推薦】領域驅動設計學習輸出:http://www.wmyskxz.com/2019/06/13/tu-xie-tui-jian-ling-yu-qu-dong-she-ji-xue-xi-shu-chu/

總之,這一段時間我一邊通過各種小需求,接觸和了解了公司的系統的大半,一邊學習和了解著各種不同的技術,增加了技術上的廣度。

三、開始負責一些專案


為了加速服務化的推進工作和驗證「DDD」的一些東西,部門老大把一個邊界足夠清晰,也足夠小的一個模組單獨交給我,期望我快速上線,不過最終交付已經逾期快大半個月了.. 雖然從最終的結果來看,順利交付完成了拆解任務並從 MongoDB 資料庫轉變成了 MySQL.. 但期間也踩過好些坑,當然也學習到一些東西..

例如我真實地意識到「完美」這個詞的理想化。就拿設計 API 來說吧.. 自己就基於 RESTful 風格設計了好幾版.. 左想右想都覺得差一些,有一些介面覺得怎麼設計都不優雅.. 後來糾結一陣子也就放棄了.. 再例如寫程式碼這件事情吧,好的程式碼整潔的程式碼是一次一次迭代和重構中出來的,如果一開始就想著寫出「完美」的程式碼,那麼最終的結果可能就是寫不出來程式碼。

另外一個小插曲是,在做資料遷移的時候,我差點把線上伺服器搞掛了.. 我在測試環境驗證了一把之後,就直接在線上進行操作了,因為當時對於資料庫的操作管控還沒有那麼嚴格,加上自己對於線上環境的複雜程度認識不足,我就起了 50 個執行緒,去分批量地讀取 MongoDB 的資料遷移到 MySQL,造成了線上庫的效能報警,就趕緊停了.. 緊接著就被一群大佬抓進了一個會議室做事件的覆盤..

說實話,我緊張壞了,第一次經歷這樣的算是「事故」的情況吧,差一點線上就被我搞掛啦,一時間不知所措... 讓人感到溫暖的是部門老大隨即丟來的訊息:

那天還有一些相關的同事都陪我寫覆盤郵件到了晚上 10:30,現在想來都十分感謝他們。後來回到家我還打電話給我媽,我說我在工作中犯錯了,我做了xxxx這些動作,你覺得我做的怎麼樣呢,老媽的回覆也讓人安心,只是現在想來,一些後續的動作可以做得更好的...

因為「埋點」這件事涉及到系統的方方面面,我也藉此瞭解了很多不同的模組,也是拜這一點所賜吧,後來我被派到各種各樣的支援任務中,同樣也因為對不同模組都還不算陌生,都還算完成得不錯吧...

時間一晃,在公司就四個月過去了,也在這個過程中從各個大佬那兒都學到了一些東西,在 8 月底發的週報裡面我寫下了以下的總結:

之後也跟著大佬碰了一些公司的核心模組,期間也沒有停止在工作中不斷地做學習輸出:

  • Git 原理入門解析:http://www.wmyskxz.com/2019/08/16/git-yuan-li-ru-men-jian-xi/
  • Java計時新姿勢√:http://www.wmyskxz.com/2019/07/30/java-ji-shi-xin-zi-shi/
  • Java8流操作-基本使用&效能測試:http://www.wmyskxz.com/2019/08/03/java8-liu-cao-zuo-ji-ben-shi-yong-xing-neng-ce-shi/
  • 《程式碼整潔之道》讀書筆記:http://www.wmyskxz.com/2019/09/14/dai-ma-zheng-ji-zhi-dao-du-shu-bi-ji/
  • React 入門學習:http://www.wmyskxz.com/2019/10/15/react-ru-men-xue-xi/
  • 談一談依賴倒置原則:http://www.wmyskxz.com/2019/11/18/tan-yi-tan-yi-lai-dao-zhi-yuan-ze/

四、回顧做的不好的部分


  • 對程式碼還沒有保持足夠的敬畏之心。

特別是一開始上手的時候,有時候甚至是在線上環境搞測試,後來越來越注重 codereview 和單元測試好了很多。

  • 溝通還不夠深入/ 到位

有一次是臨時接到一個需求,因為「通用語言」沒有達成一致,導致最終交付的結果不符合產品的期望,最終我們所有相關人員在一起開了一個會,統一了「通用語言」,造成了額外的工作和負擔,拿到需求就應該確認好相關事宜的,越底層越細節越好,這方面的能力我仍然欠缺,但我已經持續在注意當中。

另一次也是因為這一點,我需要幫助 A 系統擁有某一項功能,之前 A 系統已經介入了 B 系統完成了部分功能,我因為沒有進一步地確認 B 系統的現狀,就去接入了有完整功能的 C 系統,但其實 B 系統已經在上一週和開發 C 系統和 A 系統的同學對接好了,並完成了相關功能的接入,少了這一部分的溝通,就造成了不少額外的工作量.. 所以「溝通」還是非常重要的,也只能說持續進步吧...

  • 缺少一些主動性

當我頭上掛著一些事情的時候,還是能夠保持著效率的,只是當我做完了,就時常缺乏一些主動地思考了,通常都是被動地去詢問同小組的同事有什麼事情是需要幫忙的.. 雖然也積極地參與到自己感興趣的那些技術評審之類的事情之中,但似乎效果都不佳.. 也沒有什麼實際好的輸出..

  • 接了一些私活兒黑活兒(沒有充分考慮團隊之間的配合)

因為「埋點」會接觸各個平臺的童鞋,並且時常變化和有一些新的需求,有時候直接繞過了一些環節,直接找上我了,我心想直接自己弄弄改改就可以了,也就沒多想... 但是現在想來,這樣跨團隊的事情,不能越過「頂頭上司」私自進行,一方面經常我的 BOSS 不知道我接了活兒,另一方面這樣的私自對接就會造成一些資訊的流失,對於團隊之內還是團隊之間都會造成影響...

五、回顧做得好的部分


  • 養成了閱讀的習慣

公司買書是免費的,也有自己的圖書館,同事也不乏喜歡閱讀學習的,所以跟著跟著就養成了閱讀的習慣,期間也學習到了一些方法論的東西,貼一下入職以來讀過的那些書吧:(技術類的就沒有囊括了)

其實每天閱讀的時間也不長,想我大學總共捧起的那麼些課外書,不禁有些唏噓...

  • 早睡早起 + 晨間日記

早睡早起,從步入職場以來,就發現這樣的習慣會帶來一些額外的價值,例如一些閱讀我會放在早上,後來還加入了「晨間日記」,用來「回顧前一天的事情」和提前部署「今天的任務」,這不禁讓我多了一份清醒,也讓現在不怎麼鍛鍊的我每一天精力更加好一些:(目前正在從印象筆記往 Notion 逐步遷移的過程中)

  • 學習撰寫 Commit Message && 遵守一些 Git 規範

起初使用 Git 十分不規範,後來向大佬那兒學習到了如何標準地提交 Commit,包括 Commit Message 應該怎麼寫,我覺得這是一個很好的習慣,每一個 Commit 都有上下文,並且還帶上了 JIRA 號,任務也很好跟蹤,雖然公司並沒有大範圍地盛行起來,但我覺得這樣好習慣應該堅持下來:

  • 任務進度及時反饋給相關人員

自己比較注意這一點,因為不這樣做會讓別人感受不怎麼好.. 光是自己心裡清楚是不行的.. 要保持資訊的通暢才行,及時反饋是很重要的一步..

  • 自己先 review 一遍程式碼

犯過一些白痴錯誤之後,就有些擔心,逐步養成了自己先 review 一遍程式碼的習慣..

六、小結 && 展望


總的來說,看著自己這樣一步一步成長過來,沒有很懈怠,自己就算比較滿意了,在工作中學習了很多東西,不管是技術上的硬技能,還是溝通中的軟技能,也認識到了很多厲害的大佬和有趣的小夥伴們..

感恩在路上相遇,有幸共同行走過一段已然算是幸運,突然翻看起自己的朋友圈有一句話說得好:「成長從來都不是告別過去,成長是更加堅定的看向未來!」

期待一路同行的大家,都能夠 Be Better!


按照慣例黏一個尾巴:

歡迎轉載,轉載請註明出處!
獨立域名部落格:wmyskxz.com
簡書ID:@我沒有三顆心臟
github:wmyskxz
歡迎關注公眾微訊號:wmyskxz
分享自己的學習 & 學習資料 & 生活
想要交流的朋友也可以加qq群:3382693