一個Android開發的2018年 | 掘金年度徵文

2018年就要過去了,感受今年對本身來講變化比較大,翻了翻本身的git記錄,在這零散記錄一下前端

工做

1月

年初一月份的時候還在有贊作webview加速的方案。業餘還翻了翻 webview 初始化的源碼,寫了一篇博客記錄。java

WebView深究之Android是如何實現webview初始化的python

2月

比較慘的日子,年終績效 1 被動離職,從新開始找工做,並且畢業時間沒滿一年,特別的尷尬。反思了一下表現,發現也離職其實也不是個壞事。能夠出去面一輪從新定位一下本身,順便漲薪改善下生活android

思考了一下實習到離開有讚的時間,表現確實低於預期。對業務沒有興趣,開會睡着這種事情也犯過,對別人的批評容易感到害怕。到後來變成了只低頭幹活,對其餘事情幾乎毫無表現,平時也不怎麼說話。從如今回頭看,確實很糟糕。git

其實17年末從微商城去共享已是我頂着不出活被開除的危險厚着臉去的,由於以爲跟着大佬作webview的項目能學到不少,本身作到一半了也不想放棄。如今想一想,從作事的角度,我作錯了,從技術進步的角度,應該是作對了。整個webview加速的項目,讓個人全面思考,代碼重構的能力上了不止一個檔次。github

年前年後找工做,由於經驗的問題,大廠和偏大的廠基本沒有投成簡歷。先是面試海康,同花順啥的公司練了手。年後拿到了幾家公司的offer,最後以爲銘師堂教育類的業務還行,人也有千把人,薪資也是給的最高的,加上有認識的人,能更快的適應團隊,就去了。golang

3月

入職銘師堂。剛開始是基礎設施組,可是由於業務須要人作,後面去了教師端業務線。兼職一部分Android的基礎活。web

入職第一個開始寫的是替換老代碼的下載,用okhttp開始寫一個新的下載 SDK, 寫了一週多時間,支持了普通文件和m3u8的下載和斷點續傳。把線程池,任務,網絡每一層都抽象的很清楚。雖然不是很難的東西,可是也算是入職後打點基礎,順便驗證下本身仍是有一些基本的sdk的設計能力的。面試

剛入職的時候比較着急產出東西,寫 SDK 的時候其實也沒有很好的和同事溝通清楚需求。被指出來的時候反思了一下。以爲在公司,溝通清楚事情,再開始幹活每每會更加清晰。其實這也是業務團隊在每一個迭代期添加不少評審流程的緣由之一。編程

3月工做不是不少,中間又閱讀了一下 GreenDao 和 Android Handler的源碼,出了2篇文章。

GreenDao源碼

深刻理解Android消息機制

4月

開始作教師端的業務,沒記錯的話是一個校本試卷的業務。

5月

在業務開發的同時重構了一些老的代碼。印象比較深的是做業類型很是的多。老的代碼大概寫了8,9個if-else

if (homework1) {
} else if (homework2) {
}...
 /// n個做業
 ...
 else if (homeowrk9) {
 } else {
 }
複製代碼

我把他重構到了子類,寫成

Manager.register(homework1)
...
/// 註冊
...
Manager.register(homework9)
Manager.dispatch(type)
複製代碼

整個教師端的首頁邏輯被我修改的很清晰。很容易維護。後面產品提出小的需求修改的時候我很快就能找到對應的地方。

我剛去的時候項目仍是mvp架構。我還寫了一個 Android Studio 的插件去自動生成 mvp 的模板代碼。

研究了一部分Android 原生的音頻播放,寫了一個簡單的sdk, 可是由於公司需求不着急換。後面就沒繼續了。

6月

開始在本身的業務模塊裏面使用 Kotlin, 而且在公司內部作了 Kotlin 的分享。其中也瞭解到了,我如今的團隊其實技術仍是比較開放的。

開始強迫本身在普通的業務開發中儘量的使用函數響應式的方式去處理邏輯。 在本身業務模塊內部寫了一部分單元測試 期間作了一個比較無聊的需求。各類文案細節的錯誤在提測的時候bug滿天飛。

7月

重構整理公司原有的jsbridge sdk 業務開發 開始準備把 Android Arch Component的東西加到本身的業務 翻譯了一把 kotlin coroutine的文檔,在 github 上。可能內容當時比較冷,只有 72 個start。

kotlin協程文檔(譯)

8月

整個移動端的大整改。由於個人業務內容很少,看你們把公共模塊的資源移動到本身的業務如何重命名比較累,就寫了個python腳本自動化的處理了一部分。

利用 Instrumentation 監聽 Activity 跳轉寫了一個 monkey 隨機測試的腳本 順便擼了一遍monkey 隨機點擊的源碼,雖然感受然並卵,猜都能猜到是隨機事件+模擬點擊屏幕

monkey工具的源碼我當時弄了一份在 github, 有興趣的看看也無妨

Android monkey 工具源碼

參與日誌監控的開發,一期比較簡單。二期交給了架構組同窗。

和同事一塊兒,在各自的業務模塊裏面加入了 arch component,基類用lifecycle重構,抽出了生命週期相關的邏輯。 p層改用 viewmodel 替代。 數據流使用 LiveData 保持單向。具體的我表明團隊,發出了一篇文章。感興趣的也能夠看看

Android Architecture Component 和架構升級在銘師堂的實踐

9月

8-9月當時一直在開發一個習題的業務。比較忙。以前老的圖片選擇庫有問題還從新開發了一個。

開發的時候爲了處理分頁加載本地圖片的問題,我使用了 paging, 由於用錯了,找問題的時候順便擼了源碼。寫了一篇文章:

Paging分頁加載庫源碼分析

有一個生活中的小插曲,當時合租的室友想在小區作外賣,第一天晚上還真有很多人打電話訂。我看他們用微信好友紅包的方式太麻煩,就興沖沖的寫了個小程序。

惋惜2天剛寫了個殼,他們就被物業查水錶了。。。

10月

10月,由於以爲組件化帶來解耦的同時也帶來了工程的管理成本。打造一個移動端本身的ci平臺也很必要。因而,我拉上一個對前端頗有興趣的Android 同事,開始研究本身作打包平臺。

和領導溝通以後,我成了這個項目的 owner,第一次當owner才知道owner的不容易。從前期的需求收集,評審,包括這個平臺要作成一個什麼樣的產品形態,原型圖都要本身從頭開始。中間也有不少對標不一致的問題。

十月在業務開發之餘,我就在調研整個技術方案。在gitlab ci, jenkins api都玩了一圈以後,考慮到團隊現狀,選擇了構建基於 jenkins, 可視化和配置平臺用本身的。構建產物的下游操做本身處理的方案。

當了owner,本身大概總結了幾點:

  1. owner須要比組員付出更多的精力,編碼只是很小的一部分。
  2. owner在考慮技術方案的時候要多維度思考。從實現成本,對現有體系的影響,團隊資源各個角度都要考慮到。要發揮出技術的價值,不能有一絲一毫的炫技和技術成本的浪費
  3. owner須要常常主動找組員對標,避免本身和組員在產品上理解不一致致使的後續問題。不少時候,「一致」只是咱們本身的錯覺。
  4. 對於非全職的技術方案。owner須要讓你們對目標有共同的追求。須要對體驗,功能各個方面有追求,不然很容易把項目弄爛尾。這一點其實和第三點有關係。
  5. owner須要想辦法爭取資源。CI一期結束的時候,爲了下一步組件化管理坐進來,我請你們吃飯順便把基礎設施的同窗叫上,先吃,最後大機率會一塊兒進來幹活。

11月

ci平臺一期的服務端開發。技術棧用的 gin + gorm 雖然是內部項目。代碼也寫了幾千行。後期由於和jenkins的api不一致,想了不少同步數據的辦法。整體在寫代碼這件事上,本身還算滿意。 在開發到發佈的過程,本身也想到了監聽進程守護進程,監控服務等問題。由於golang不能接運維的體系,因此後面這些也打算本身來弄。

11月還有一個很重要的事情就是咱們開始寫 Flutter。咱們把flutter接入了混合工程。

12月

最近的一個月。優化ci平臺。 使用flutter重寫了個人業務的一個頁面,爭取年後能夠直接發到線上、 支援其餘人的業務開發。

關於Flutter之類的新技術,從我剛開始以爲kotlin是好東西沒有理由就要上,到Flutter思考爲何要上,怎麼上。這一點我感受本身也有了很大的進步。

關於 flutter, 我在寫一個 todolist 的app, 一方面做爲學習,一方面想寫一個本身的工具裝在手機上用。 項目是開源的,還正在寫。有興趣的同窗能夠指點指點

Flutter寫的todolist

技術

今年學習了 golang,開始學習一部分 服務端的技術。以及移動端跨端的技術。目的一方面是由於興趣(對Android UI的內容毫無興趣), 另外一方面是但願在移動端地位日漸往下的時候,能快速完成移動業務而且把手伸向其餘領域,爭奪利益。

學習了這麼多天然會聯想到技術的深度和廣度。本身也作了思考.

  • 廣度

技術的廣度實際上是頗有必要的。最簡單的例子,JVM上的函數響應式,或者異步編程,當初看rxjava和kotlin coroutine的時候,費了很大勁才轉過來思惟。可是我相信,若是以前接觸過js的異步編程模型。coroutin的async await部分會很容易就掌握。並且廣度,對於開闊眼界,包括在公司幹活的時候看到更多的資源,更多的潛在問題,都是頗有用的。事情作到必定程度,廣度不可缺乏。

  • 深度

技術,在學習以後最好的狀態,我的認爲是厚積薄發。一個有價值的技術人,應該是有不可替代性的。這裏,包括咱們對技術的掌控,對技術的理解。這裏離不開一門技術的深度。若是技術只是停留在 hello world 的水平,作你們都能堆砌簡單業務隨隨便便作到的事情。那麼本身的技術會變得毫無價值。舉個例子,咱們想要作更多的事情時候,會面臨很是多的場景,更好的解決這些場景,做深刻一件事情,就須要咱們的技術深度。理解的越深,作的越好。

從作事的角度,我的以爲廣度和深度並不矛盾。目前爲止,我可能採起的技術路線是,廣度鋪開1-2件事,例如服務端和flutter,短時間內雖然不求接觸到很是多的問題,可是隻要是本身接觸過的,就要去理解到位。例如 flutter,須要閱讀一部分源碼應付本身平時報錯會不知所措。例如服務端,會深挖一些點去優化本身的內部項目。對於本身沒場景不必去接觸的東西,若是沒遇到啥問題,會用就能夠。亂用了只要不影響團隊,我的暫時也不會太多關注(例如Android的包大小,圖片放哪裏之類的問題),可是隻要能力養成了,我以爲若是有一天他們成爲個人問題了,我也不是不能解決。

學習。今年買了2本 Android 源碼解析的書,空閒時間複習了一下 ipc 和 初始化的東西。 買了一本py處理數據的書,暫時還沒開始看。估計暫時是不會學習相關的東西。沒有精力了。

生活

  • 健身

去年畢業的時候辦了一個健身卡。就是隨便水水,雖然去的很多,可是練的不足。今年7月辦了一個健身私教。12節課雖然花了幾千塊錢。可是也看到了效果。

健身開始的時候體重 110 kg 不到的樣子。體脂率29% 如今體重在家是 95kg, 體脂率26% 目標明年夏天到 85kg, 體脂率22%

  • 游泳

感受🏊仍是個比較舒服的運動。從去年蛙泳個2趟很累到如今,也能夠有 800m 23分鐘的速度。不快不慢。若是有人一塊兒,想參加明年的活動去錢塘江裏面體驗一次。

  • 電影

如今養成了每週五晚上看看最新電影的習慣。去的次數比較多。期待 19 年的漫威。

健康

今年感受坐久了要不舒服,拍了核磁共振輕微膨出。貌似沒什麼大事。可是須要注意,不注意的話說不定哪年就變成腰突了。

今年查出尿酸有點高,掛號網上問了醫生,跟肥胖仍是有很大的關係,須要繼續堅持運動。

秋天的時候咳嗽,斷斷續續一個月一會好一會很差,去醫院,把 CT 和 肺功能檢查全作了,還順便被要求查了個甲狀腺,所幸只是有小結節,和咳嗽不要緊,只是普通咳嗽。

今年檢查身體花了很多錢,本身比較怕這種東西。就當花錢買放心,仍是須要健身運動,有一個健康的身體。身體是革命的本錢,身體沒了,什麼都沒了。

感悟

今年算是經歷了不少事情。感受本身對於不少東西也有了新的認知。

對於工做和技術

  1. 創造和發揮技術該有的價值
  2. 和團隊同事保持溝通和對標。不要活在本身的觀點裏
  3. 新技術能夠追求,可是要列出充足的理由和兜底方案。盲目說上等於不會

對於明年,但願本身

  1. 深挖服務端技術,讓本身擁有打造一套優秀的先後端一體技術方案的能力
  2. 對團隊的現狀,業務的痛點作進一步思考,發揮出技術應有的價值
  3. 研究跨端技術,提高效率,若是能夠,直接把h5替代native的業務搶回來,提高移動團隊的地位。

瞎** BB了不少,感謝你們的瀏覽。有什麼想說的,也能夠評論留言,共同討論

掘金年度徵文 | 2018 與個人技術之路 徵文活動正在進行中......

相關文章
相關標籤/搜索