一名七年老安卓的一二月小結

語言: CN / TW / HK

theme: smartblue

你好,我是 shixin,一名工作七年的安卓開發。

每兩個月我會做一次總結,記下這段時間裡有意義的事和值得反覆看的內容,為的是留一些回憶、評估自己的行為、沉澱有價值的資訊。

一轉眼 2023 年過去了六分之一,這兩個月經歷了不少事,趁著週末有時間,細細琢磨一下這段時光的得與失,以更好的姿態迎接下個雙月。

歷史總結:

有什麼有意義的事

年度總結得到了認可

image.png

去年的年度總結得到了一個獎品,送給了老丈人,開心😄。

面試別人的同時反思自己

一月份面試較多,從更高級別面試官的評價中學到了一些努力方向。

這些面試裡我負責一面,主要關注基礎、專案經歷、資歷匹配度和靠譜程度;二面是某部門負責人,主要關注音視訊經驗、技術廣度、專案統籌能力、帶團隊能力、工作穩定性。

二面面試官喜歡讓面試者做「優勢自評和缺點自評」,這個問題挺好的,也讓我開始思考自己的優勢、缺點:

  • 優勢自評:有技術好奇心,有主動性,有強烈的進取心,技術廣度和深度匹配工作年限
  • 缺點自評:音視訊經驗不足,帶團隊能力缺乏經驗

印象深刻的是一個工作 11 年的人,履歷還是挺好看的,迅雷、百度、XX,但技術深度總感覺和年限不匹配,做的東西還是有點簡單,模板化元件化、CodeReview、CICD... 

聊完以後我不禁在想,是不是我的標準有問題?可能並不是所有人都有我遇到過那些大佬那麼牛逼,做安卓上層業務的複雜度或許就是這些。

面試很多人後,我的感悟是一方面要調整自己的標準,另一方面也要努力成為更稀缺的人。

什麼樣的人算是稀缺的?

  • 懂 ART 和 Linux 底層,有 NDK 開發經驗
  • 在效能優化/音視訊/影象處理某個領域有比較深的實踐
  • 有帶團隊的經驗
  • 懂得前後端

排查一個數據問題,思考如何做的更好

一月份排查一個線上曝光資料問題,折騰了好幾個版本,最後發現不是我的程式碼問題😂,今天反思一下如何做的更好。

問題背景:

  • 十二月做了一個需求,上線後產品反饋埋點資料異常,曝光資料比預期少了很多
  • 由於這個需求面向用戶比較細分,需要命中客戶端和服務端的多個條件才會執行(先滿足客戶端條件才會呼叫服務端介面),所以排查到底是哪個環節出了花了好久(兩個版本迭代的時間)

問題原因:

  1. 很久之前就存在的退出埋點,沒有區分具體退出行為,導致產品期望的「目標使用者數」偏多(誤導我以為客戶端條件判斷有問題,導致沒呼叫介面)
  1. 服務端權益發放介面有問題,導致目標使用者沒獲取到權益(關鍵原因)

如何解決的:

  1. 新增埋點,細分退出型別,以圈出真正的目標使用者人群
  1. 增加介面返回值上報,以檢視服務端返回資訊
  1. 最後發現是服務端返回未獲取到權益,進一步排查是權益發放介面有問題,沒有發放給目標使用者

如何避免這種情況再發生?

  1. 如果退出埋點可以區分退出型別,就不會有目標人群過大的問題,預期的曝光量就會少,分析問題時也不會跑偏
  2. 以後做資料埋點時,要從技術角度多思考一下,看看目前的埋點屬性是否夠窮舉所有可能,不夠的話主動提出增加屬性,以便後期分析問題
  1. 如果一開始就上報一下有沒有呼叫介面,而不是服務端說什麼信什麼,就可以早一點確定到底哪一步有問題

  2. 長鏈路要在關鍵節點(開關、介面、資料結果)增加埋點,配合開關,有問題時開啟上報(debug 時強制開啟)

  3. 如果一開始多找後端確認下他那邊權益下發成功率,可能也就不需要繞這麼大彎路

  • 分析問題時要看的到整個鏈路,有質疑其他端的勇氣,拉著後端一起排查,而不是自己一個人嘗試

小結:由於客戶端距離使用者更近,出了問題經常會被認為是客戶端的問題,結果排查半天發現不是自己問題的情況。我們能做的就是:複雜鏈路增加詳細埋點,以備不時之需;瞭解需求的整個鏈路,遇到問題從整體思考哪裡可能有問題,儘早拉別的端並行檢視,提高效率。

團隊貢獻:沉澱了兩篇文章

今年需要在「團隊貢獻」上多做一些努力,這兩個月分享了兩個工具,可以幫助提升開發效率。

image.png

image.png

從遊戲排位中反思過程和結果

隨著年紀增加,能獲取到樂趣的事情越來越少。現在休息日,娛樂專案基本就是刷短視訊、打遊戲,連電影都好久沒看了。

一月份 lol 手遊終於上了「大師」,為了上這個級別花了好幾個晚上,中間一度連跪 6 把,心態崩了。

本來娛樂的目的是放鬆,是為了玩的過程中獲得樂趣,但隨著排位等級提升,我的注意力基本全放到了「升級」上,每把的目的就是贏,有時候想選點感興趣但不熟悉的英雄,也因為擔心輸放棄了

帶來的結果就是,如果贏了心情很好,但一旦自己被打爆或者遇到很坑的隊友,就覺得這把完蛋白玩了😡。不知不覺中,就忘記了娛樂的意義。

在某一瞬間,我覺得這種時候的我和「在追尋答案的悉達多」有些相似。那一刻的我心裡完全只有目的,看不到其他有趣的部分,感官因為心態變得閉塞、心態因為結果變得煩躁,陷入了「只看結果的執念」

雖然「活在當下」聽人說了一萬次,但我發現自己還是做不到,還是看重結果甚於過程。這點要改。

拍了個證件照

一月份花一百塊照了張形象照,跟照相師強調“要那種自信輕鬆的感覺”,拍出來的結果還算滿意:

2.jpg

為什麼要拍形象照呢?

主要是受前段時間看到的一個獨立開發者網站,他的形象照很陽光自信,讓人覺得值得信賴。

見賢思齊,我找了個週末也照了一張,照完沒多久就到了社群分享的時間,果然派上了用場哈哈。

無論公司聘用還是建立合作,考察的主要是能力、性格和態度,對於程式設計師來說,能力可以通過部落格、Github、Leetcode 或者作品來體現;而性格則需要通過溝通或者完成的事情來評估,形象照可以一定程度的讓人看出性格。

開源 AndroidBitmapMonitor

image.png

二月份把這兩年做的一個圖片記憶體分析工具 AndroidBitmapMonitor 提交到了 Github 上,得到的反饋還算不錯,解決了安卓開發者分析圖片記憶體的需求,這是我今年的第一個“作品”。

前幾年我的空閒時間主要用在了「輸入」上,輸入和輸出的比例可能是 9:1。

今年我已經三十歲了,對於一位“中老程式設計師”來說,需要多一些作品,一方面用來證明自己的能力,另一方面也可以帶來更多價值,多種善緣總歸是沒錯的。

產出可以稱為“作品”的東西,它能夠持續、深度影響到很多人,成為我們人生的槓桿、思想的放大器。 這個作品可以是一個公眾號、一本書、一個開源專案、一個抖音號、一個課程、一個播客、一個產品。

完成技術分享

二月二十三號,在社群裡進行了一場技術分享,主要介紹安卓圖片記憶體分析的常見方法,進而引出了我的這種新方案。

大概有將近一年沒做社群的直播分享了,雖然內容早就有,但為了保證有好的分享效果,還是花了我幾個週末準備。當天晚上為了避免犯困還沒吃飯😂。還好最後效果還可以,聽眾們很給力,提了很多問題。

回放在這裡:https://www.bilibili.com/video/BV1LD4y137aY/?spm_id_from=333.337.search-card.all.click

準備分享雖然比較費時費力,但總的來說還是挺有收穫的,一方面逼著自己就分享主題多思考多總結,另一方面也可以鍛鍊表達的流暢性和臨場應變能力,今年希望可以多一些分享,多一些鍛鍊。

和總裁級別的大佬近距離接觸

二月份參加了公司一個很重要的專案溝通會,在會上見到了一些總裁級別的大佬,讓我非常有感觸。

有一位女總裁看起來比較年輕,讓我一開始以為是 HR。直到後面回答問題時才發現,原來她是總裁!那一瞬間我既驚訝又好奇,她是怎麼達到這個境界的呢,究竟有什麼過人之處?

網上搜了下她的名字,果然不是一般人:

image.png

從大學時期的簡介就可以看出來,這位大佬是真的強啊,她的個人特長、履歷讓我結結實實的感受到了差距。

網上搜了下「總裁需要具備什麼能力」,答案主要是這幾點:「需要具備戰略規劃、商業模式制定、運營管控、財務管控、銷售管控、人力資源、管理領導力、思維創新、產品創新、營銷創新、機制創新、啟用團隊等等」

大佬比我大六歲,假如給我六年時間,我可以達到她如今的成就嗎?

我想應該比較難,大佬領先我的不只六年。捫心自問我的底層素質一般,知識面、社會經驗都很窄,現在開始彌補相關知識和能力,運氣好的話或許未來幾年能有機會做點「做事」的事,但這距離總裁這種級別還有很遠。努努力試試吧,或許真的實現了呢?就算我做不到,能夠讓我的孩子有機會具備大佬讀書時的基本素質,也是好的。

這次經歷讓我既悲傷又開心,悲傷的是真切的意識到了人與人的差距,開心的事見過總比沒有見過的好,有個活生生的例子作為遠處的目標,也好。

之前的一篇小爆文沒有處理好,浪費了一波流量

偶然發現之前的這個文章被轉載到 CSDN,閱讀量和評論量都還不錯,可惜公眾號圖片和連結被遮蔽了,不然能多漲點粉(幾百估計有的,光評論就 138 了)。

如何改進:

  1. 寫文章時,考慮到這種站外的情況,在文字裡補充公眾號名稱
  1. 這個圖片要保留

image.png

發現需求、提供產品後,還要考慮流量如何獲取,需要提供足夠多的入口獲取方式,讓使用者知道怎麼找到你。重視這些細節,否則會讓很多想找到你的人流失掉。

視訊號發了個露臉視訊

二月某個週末,為了鍛鍊自己的表達能力,以「成大事和做小事」為話題,錄了個露臉視訊。

現在看,這個視訊裡的我表情有點呆滯、說話總是卡殼、內容也少了點趣味性或者價值,但我還是很高興的,因為自己已經邁出了一步。

之前很少錄製非技術視訊,總擔心自己說的不好、形象一般,那天不知哪裡來的決心一定要錄一個。先是花了半小時左右想話題、畫腦圖,然後花了四五十分鐘反覆錄製多次,最後花十幾分鍾剪輯、去掉不好的內容,得到了這個結果。

image.png

今年爭取多錄製幾個,年底來對比看看有沒有成長😄。

體驗 ChatGPT,嘗試在更多場景使用

這個月 ChatGPT 刷屏了,試了下讓他寫一篇屌絲程式設計師逆襲的文章,還是不錯的哈。

image.png

見證了歷史性的一刻,我們的生活和工作即將被改變。戰勝恐懼的最好方式是面對恐懼,熟悉它、利用它、馴服它。

有什麼感悟

  1. 低預期開始,高預期結束

  2. 拖延的根本原因是拒絕開始

  3. 心理暗示:只做 5 分鐘(只寫五分鐘程式碼、只寫五分鐘文章...)

  • 可以一次少做一點,但做了一段時間後不能不了了之,要至少有個結果或者覆盤
  1. 能賺多少錢,取決於能看到多大的世界
  • 多接觸世界,多提升自己的價值
  • 英語
  • 其他行業
  1. 巨集圖大志和具體小事
  • 要有大志,但立下志願後,最重要的是在每一件事上有所體現,比如想做總裁, 那就要時時刻刻思考,總裁會怎樣選擇,比如總裁會打一天遊戲嗎?總裁會學習什麼?
  • 嚮往崇高,沉溺於卑劣
  1. 成長,從小事開始
  • 早上做地鐵,無所事事:刷短視訊、朋友圈
  • 今年提升英語就選在早上,背單詞、看英文新聞。每天 3 個單詞,最長一年雅思單詞我就背下了。重在堅持
  • 做具體的事
  1. 因和果(雖然我是基督徒,但這個因果論其實不分教派的)
  • 種善因,得善果
  • 二月份更多的是收穫之前努力的結果,種下的因不是很多。
  • 今天種下的因,未來不一定哪天就收穫了,但行好事。
  • 功在當下 利在千秋
  1. 思考做什麼,比做具體的事,更難
  • 工作上比較自由,完成業務需求的同時有很大空間
  • 做什麼?哪件事情 ROI 更高,成了時常需要思考的問題
  1. 過分關注
  • 有時候對某件事很期待,就會非常關注,恨不得立刻得到結果
  • 這樣的心態,其實是要不得的,為什麼?
  • 盡人事聽天命,聽從上帝安排

值得反覆看的話

關於跨平臺

image.png

關於技術人生的不同選擇

image.png

# 技術路線的選擇重要但不具有決定性

  1. 第一階段:提升技術
  1. 第二階段:選擇團隊
  1. 第三階段:選擇事業

這個行業裡擁擠著上百萬聰明人,彼此之間真正的不同在哪裡? 不在於你學的是什麼技術,學得多深,IQ多少,而在於你身上有別人沒有的獨特的個性、背景、知識和經驗的組合。如果這種組合,1,絕無僅有;2,在實踐中有價值,3,具有可持續發展性,那你就具備核心競爭力。

P7 應該做的

image.png

# 我對不同階段前端工程師的額外要求

Leader 的核心產出

image.png

# 在大廠做技術Leader是一種什麼樣的體驗?

對自己負責,結果說話

image.png

# 人生也不知道怎麼的,就走到了現在

關於空降坐穩

如何保障專案按時交付:依賴、分工、並行、日會

  1. 確定功能模組開發成本,拆分提測順序,提高並行度
  1. 每日溝通進度和計劃,及時發現解決問題
  1. 對三方的依賴最先理清楚,提前溝通排期,避免臨期發現
  1. 和其他方向負責人密切溝通、分工明確

要去做有挑戰有難度的事情,只要做成了,團隊就容易拿到好的成績,對團隊的穩定性是極其有用的。一定要從團隊的角度出發來考慮問題,像當時如果沒有做好重構專案,我估計團隊就會散掉了;

image.png

image.png

# 個人職業覆盤-我的路

關於有效讀原始碼

讀原始碼(哪些模組是必不可少的核心模組,這些模組之間又是如何相互協作的呢?)的三個方法,分別是“時光機”、“找線頭”和“鳥瞰圖”:

  1. 時光機:看核心版本,程式碼量更少
  • 先讀第一版的原始碼,再找幾個自己熟悉的版本的原始碼讀一讀,最後再讀新架構的原始碼。
  1. 找線頭:通過關鍵字定位核心程式碼
  1. 鳥瞰圖:站在整體上看各模組的關係
  • 整體理解作者的實現方案

一位自由職業者大佬的收入

image.png

https://juejin.cn/post/7177321772134924325

一位 38 歲程式設計師勇敢的晒出了他的收入,很佩服。

與其焦慮年紀大了會不會被淘汰,不如趁早思考如何用技術創造個人價值。比如這位老哥的收入裡,課程的背後是個人品牌、知識積累、寫作和宣傳,接活兒背後是技術廣度、人脈和資訊渠道。這些是值得長期打磨的。

引以為戒

image.png

# 可怕的35歲-大齡程式設計師2022年終總結

引以為戒:

  1. 拖延、懶惰、不行動(目前我的很多週末都是這樣)
  1. 沒有明確的、可衡量的規劃
  1. 沒有複利思維,覺得轉行是更好的選擇
  1. 業餘時間做什麼沒有仔細思考,不考慮成本

做自己的藍軍

image.png

# 華為批判華為:“過度高薪”養了一群閒人

做自己的“藍軍”,多批評自己、分析自己的缺點

我的問題:太愛幻想、懶於行動、貪玩

關於創業

image.png

兩種方式度過一天

image.png

回顧工作、個人年度計劃的執行情況

工作方面

今年最重要的一個 OKR 是通過更多業務使用 RN 提效。目前的問題是: 1. 團隊對 RN 不夠熟悉,不會用 2. 之前線上的 RN 出過一些奇怪的問題,不敢重用

如何解決: 1. 提升團隊的 RN 技術熟悉 2. 精通 RN 的執行原理,提升效能和穩定性,通過案例提升團隊對 RN 的信心

一二月進展: 1. 對之前線上存在的問題做了更多埋點,同時嘗試修復 結果還未確認 2. 技術分享準備了一部分,還沒來得及進行

進展一般,原因?

  1. 主要時間在做需求。一月在內部一個重點專案上花的時間比較多,二月組裡自上而下的需求和零碎的需求比較多,佔據了幾個版本
  2. 優先順序把控還不夠。面對不確定的事,沒有足夠清晰的思考,花了比較多的時間在價值不大的事上

如何改進: 1. 清晰的認識到每件事的優先順序,不能埋在需求裡懶於思考 2. 每週留時間跟進核心 OKR,保證有進展

個人方面

個人方面今年的目標有點多(立 flag 的時候壯志凌雲,現在覺得有點太貪了😂)

  1. RN 相關✅,Q1 目標算是完成了,即整理分享內容,不過原理相關的還沒仔細看&輸出
  2. 提升安卓深度的還沒進行 ❌
  3. 廣度的基本沒進展❌,週末要麼偷懶要麼準備分享的內容
  4. 英語❌,勉強算 30 分吧,開了扇貝閱讀會員,但只看了八九篇,早上路上還是容易分心
  5. 耳機壞了應該也有原因 😂
  6. 增加影響力 ✅,Q1 的目標算是完成了
  7. 看書計劃 ❌,週末時間沒好好利用
  8. 家庭計劃 進行中

總的來說,早上和週末時間沒好好利用,導致好些事情進展一般,吸取教訓,爭取下兩個月能有更多進展!

三四月TODO

  1. 極客時間會員快到期了,需要抓緊時間看,有輸出

  1. ReactNative 技術培訓

截止發文時已完成第一次

  1. 週末時間使用記錄總結

總結

好了,這就是我的一二月總結,因為最近事情太多再加自己週末偷懶,導致這篇文章到了三月中才寫完😂。

回顧了一下發現這兩個月的事情還不少哈,回顧記錄以後,我感覺大部分時間還算好好利用了。

努力讓每一天都有意義,make everyday count !

本文正在參加「金石計劃」