應屆入職一年總結

本來這篇文章已經寫了很久,原意是mentor讓我寫的,給以後入職的新人一些經驗,對以後公司培養校招生做一個參考,後來發生了一些不愉快的事,也沒有人提這件事了。
現在已經過去了一年,發出來僅供參考,並修改補充了一些。
雖然總結是針對自己所在公司的,但是我想對想入行Scala的還是有參考的地方的,發出來僅供參考。

入職前的主要經歷

  1. Java開發實習兩個月,主要技術棧 Java/SpringBoot/SpringCloud/Redis/RabbitMQ/DDB/Dubbo
  2. 測試開發實習四個月,主要技術棧 Java、Shell、Docker/Jenkins/Adb/Seleuim/Appuim
  3. 在校期間關於Scala的學習:看過《快學Scala》
    前面實習期間看過《Scala編程》,《響應式架構 消息模式Actor實現與Scala、Akka應用集成》,並寫過一些SpringBoot+Scala的項目。實在沒有練手的項目可以重構以前自己寫的Java或其他語言的項目。

入職前的準備

從前面公司校招離職到入職這裏期間,瞭解了Play、SBT,根據文檔寫Demo。
如果沒有像我一樣在校期間熟悉Scala語法,學習Play前還需去熟悉一下語法。
比如學Java的先熟悉Java 8 lambda,養成函數習慣和思維。Scala快學中的名詞實在是太多了並不適合沒有函數式基礎的人入門,
可以看看Scala編程這本書。至少看到Future這章,前面的類似XML解析和後面的組合子、GUI這些章節就不用了。
具體根據需要選擇,也不是一定。除了基本語法,後續想加強函數式理解與應用則需要學習小紅書 cats shapeless等,
比如小紅書中的例子自己動手實現,包括高階函數,柯里化與部分應用函數,組合子,各種常見算子,Monoid/Monad,函數式數據結構,
純函數編程,並行計算,流處理,函數式錯誤處理。這些不僅是入職前,入職後也可以學習,
能加強對Scala的理解,大多數概念也是很多語言都有的,只不過實現上的區別。

入職後

搭好環境,拉取backend項目,瞭解項目源代碼的佈局與結構以及該服務具體主要做什麼。
使用看板、單圖。參加公司的新人培訓,技術培訓時會了解到前中後端(在這裏 中端是服務端,後端是大數據)主要的技術棧。
他們的項目在codes(代碼庫)上會有相應的service、data這種標籤,來表明項目是哪個端負責的。
這個培訓有時會在入職一個月後纔開始。對於中端就是平常外面說的後端或服務端,技術棧主要是Scala、Play、Slick、SBT、Akka、Undertow、Redis、RabbitMQ、kafka等,
當然也有一些基於其他語言的小型服務。後面都比較常見,前面幾個是Scala的生態中的。
這些在入職前看招聘要求也能知道。對於公司大多數的中端服務,都是以Play爲主,Play的文檔寫的非常好,將文檔的demo都做一遍最好。

熟悉具體的業務,比如廣告的DeepLink是幹嘛的,對應在代碼裏面的哪個地方,對應頁面上的請求URI是哪個。(這就需要前面的Play和undertow的一點相關基礎,如果是graphql,
那麼就只能通過request的operationName和query xxx來看)。學習undertow我都是看例子,將以前寫的簡單的Scala秒殺系統重構爲使用函數式異步的。自己可以在熟悉代碼時寫文檔(此時文檔可能不夠準確)或畫流程圖,
數據流圖,下次需要用到此處業務時,根據最新的理解再來修改。在大致瞭解某塊業務後,嘗試接收簡單的需求。比如中間頁配置,能熟悉gio-ads-api服務,也能熟悉play slick使用。
完成一個與其他業務不太多關聯的獨立任務的CRUD,在這個時候會比較艱難,代碼review時很多語法不合適的問題。做圖片裁剪時需要使用Python,可以熟悉一下腳本編寫,
對後面數據遷移可選擇性上有幫助。因爲可以使用SQL也可以使用Python。中間頁上線,可以瞭解到從需求到設計開發測試部署上線整個流程。期間對部署流程梳理,對後續排除CI問題有幫助。

通過實時bug定位順便了解到新的服務ws、real-time。調試過程中還會涉及到權限,需要了解權限的構成。
比如authority、accounts、opm等相關的,以及查數涉及到chart-services、query-services,廣告特有權限涉及backend。
進一步熟悉項目的整體結構。學習docker+k8s與capistrano部署,對測試環境的一些問題能知道原因。
比如依賴服務掛掉,服務重啓失敗,服務配置是如何讀取的,配置的優先級,上線如何操作,服務的日誌如何到kiban。
服務依賴的其他基礎組件:dryad、consul、rabbitmq、redis。對於自由的框架工具,沒有很好的文檔,只能通過實踐去折騰,這期間也很困難。

applinks開發,熟悉DeepLink技術,與前端、SDK合作,渠道回傳與後端合作、權限種子數據熟悉基本的權限、DeepLink域名切換熟悉鏈接創建流程、deferred權限控制熟悉deeplink跳轉流程、
DeepLink配置熟悉版本如何劃分,每個小的需求都是一塊業務知識,都是不同團隊的合作。有機會了解一小塊業務,剛好與之前自己看代碼相結合,而對於廣告業務本身來說,數據流較長,從前端到SDK,服務端都是需要關注的,
在沒有將所有業務知識連成片時,同樣很困難,因爲很多時候不知理由,只知道現狀。主要的難點是業務上,如果剛好有小的bug和需求,剛好時間不急,可以很好的有目的的熟悉具體代碼和業務。
並儘可能在需求分到身上時,找到當前最可能是問題的問題。後續遇到隱藏的問題再在站會提出來。起碼在這一步,解決掉最顯然的疑問和問題。

新的一年

  1. 疫情
  2. 轉了崗不再做SaaS廣告
  3. 並沒有能回杭州修福報
  4. 減少了福利,沒有大小周了
  5. 搬磚

學習的文檔書籍

Scala Future https://docs.scala-lang.org/zh-cn/overviews/core/futures.html

Play https://www.playframework.com/documentation/2.7.x/ScalaHome

SBT入門 https://www.playscala.cn/article/view?_id=10-5d7a4b3beeab565f1f3f9687

Akka https://doc.akka.io/docs/akka/current/index-actors.html

Undertow代碼例子(也有其他框架的) https://www.programcreek.com/java-api-examples/?ClassName=undertow&action=search&submit=Search

Scala大佬的博客 http://hongjiang.info/scala/

《Scala編程》

《響應式架構 消息模式Actor實現與Scala、Akka應用集成》

《反應式設計模式》

《Scala函數式編程》

《快學Scala》

新開公衆號,求關注。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章