做程序的第二年--2015年總結

    不知不覺又過了一年了,很久沒有更新博客,這次重新開始寫博客,還是老套路,有了新的需求。我感覺此時的我需要和過去的模式說一個告別,開始更新的我。

   2015年年中是個轉折點,原公司倒閉了,在這個互聯網公司消亡千千萬萬,雨後春筍又起來一片的年代,第一次感受到公司人員的大變動,到消亡,心情還是挺複雜的,但也催使了我去下一站是深圳。我想每一個有目標的軟件程序員都會想着深圳,剛來的時候覺得自己的條件不差,有多項目經驗,有個人開發能力,曾經是組長,有領導力,溝通能力。但是現實還是和自己相差有點大,人家看了就是哦一聲,很簡單的傳達出了,我們這邊的門檻就是這樣的人,遍地這樣的大米。面試了大概有6家公司,過了一週了,在家等着沒有音信,最後是在第二週週三某個見面會上遇到了現公司研發中心的主管,一句話能吃苦嗎?能,進了。我都想了我也有2年工作經驗了,在這邊還是屬於小白型,稍微比大學生好一點的待遇,但是我能進上市大公司,學習底層技術,我拿着8000的月薪,我進了。

    2015年6月1日,我入職了,因爲是android智能電視,所以我們的工作環境有很多大屏電視,每個人桌上各種型號的主板,接着串口到自己的電腦上各種調試,我很久沒有碰硬件了,有一次還碰了電源模塊附近的東西,直接被電到一下,搞得我現在一直不敢碰電源和周邊的大電容。我的工作內容發生了很大的變化首先是從原來的android手機應用轉到了android系統應用。我們可能主要要維護launcher,setting,filemanager等常見的系統應用,還有些應用是在源碼裏面的,好,那麼新接觸下來,多了2個大東西,一個是android的源碼,一個是串口操作。從現在的面試條件上寫的說有framework經驗的優先,然後很多新人可能都會會去看下源碼的代碼片段,比如ActivityManager,WindowsManager等等,但是現在看來那樣真的收益很低,因爲你不知道整個應用場景啊,相當於知道了這個東西,但是很淺層的瞭解,你甚至改不了任何東西,你沒站到這個臺階上,看到這個場景別說改了。先在的我開看這個事情的話,比如說可能需要進入源碼中xxx項目/framework/base/core/目錄下去修改,這邊修改的最後面編譯的話會形成android.jar,最後需要make -j16編譯整個android,最後打包bin,升級整個系統,才能調試修改。(這邊其實我還沒清楚在這上面更高級的單元調試,所以還是和同事一樣的方式)。在源碼中,可能有些地方有makefile文件,能通過mm命令,直接在out目錄下形成apk,或者是上述情況同樣在out目錄下形成jar包。這樣子看下來,它要求的是根本不是簡單的framework經驗,而是android的定製經驗,你只有站在這個系統層面上才能看的更清楚。

那麼定製android系統的話,需要會linux的操作命令,會看懂.sh和.mk文件等等,新手的我進去之後,真的完全不懂這2塊,硬啃啃下來,少不了被罵。15年的6月到8月這段時間是最煎熬的時間,解各種版型的bug,自己摸索linux,熟悉編譯mboot,kernel,android,supernova。後來理清了思路,一開始先跑mboot,裏面是開機的東西,再起kernel,然後android起來,最後是數據庫supernova起來,到了launcher。稍微會了編譯全部,還是不夠的,因爲對android源碼不瞭解,進到android源碼中看到是一個陌生的目錄device,dalvik,development,framework,out,package,system,vendor等這邊讓我暈頭轉向的東西,網上百度android源碼結構有有一些東西介紹,不過如果想要更多的瞭解源碼,還是看老羅的博客,裏面學到不少,畢竟大神。但是還是建議用到了或者自己嘗試了這一塊,再去看博客,不實踐的話記不住知識點,源碼難啃,易忘。個人覺得可能放在編譯玩的比較熟了之後,去研究源碼。

15年的9月11月,是一個解bug的高峯期,我在這個階段覺得最有價值的二個大問題是網絡和藍牙。我們的網絡和藍牙都是MTK的源碼直接使用的,當時是根據客戶的需求修改網絡邏輯,比如客戶要求有線連接的優先級高於無線連接,在網線連上設備的時候,自動識別並使用有線連接等等,一開始我是挺怕碰網絡的代碼,一是比較難這個點,但是任務分到我頭上了,也只能硬着頭皮去幹了。這些知識網上找的資源也是碎片,很多時候還是需要靠自己去整理邏輯,就優先級那個事情,我們可能都會想到是不是有一個connectManager去管理Ethernet和wifi,他們二個也有自己相應的manager和service,但是肯定有一個manager去管理他們二個。找了很久找不到,後面是寫郵件給MTK,尋求技術幫助,這邊不得不說,MTK有專門搞網絡的,也有專門搞藍牙的,切分的很細,即使上一任離職了,也會留下他積累的東西,而我們這邊就是全部都是自己來,懂了的就是自己的,很難傳承下去,不是沒文檔,而是不規範。從MTK那邊得到了很多寶貴的思路和意見,磕磕碰碰完成了這件事情,也稍微清楚了怎麼和MTK溝通,需要什麼版型,哪個型號的wifi芯片,怎麼復現問題和他們說,他們纔好幫我們解決問題。最噁心的還會遇到kernel發上來的東西不準確,交給MTK那邊想思路,也得不到很好的解決,那麼只能靠多重判斷去彌補這個事情。藍牙方面也是,優化掃描設備的速度,這邊還是需要靠系統層同事去優化kernel,畢竟是系統發出廣播,上層纔會去處理掃描結果。藍牙的邏輯同樣也是糾結了很久,才感覺稍微清晰了點,網上的只能參考,因爲代碼被MTK修改過,有他們的邏輯成分。

15年的11月到16年的1月,我更多的是開發新東西,並維護。有做2個java項目android的國際化批處理翻譯工具和android的exel批處理寫入,DSPmenu,Filemanager,Apklog,Launcher客戶定製的機制修改。開發新東西都需要在最新的版型上面使用,那麼我自然的就成了此項目的bug專員,android部分的問題都丟在我頭上,解決問題,保證整個跑起來沒問題,我知道自己在哪些地方的做法會有問題,哪些地方不好解,工作就是填坑,優化,挺充實的。所以在年底我的定位就是主要開發新東西,解bug,其次是維護,或是寫好文檔,讓別人維護。

16年1月,我獲得了MTK的launcher代碼,閱讀起來簡直是教科書,滿滿的都是經驗,現在回顧來看從android應用工程師轉型成android系統工程師,底層的東西接觸的越多,越感覺池子很大,需要努力的地方很多,眼光也高了。15年的2個目標能進大公司實現了,macpro還沒買到手,等年後吧,也算一半完成了。2016給自己的目標是在android系統上走的越深越廣。感謝幫助過我的很多人,在深圳真的不容易。

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