1. 程式人生 > >Android 發展思路

Android 發展思路

多人 交付 有用 每次 ogr 掌握 網站 判斷 流媒體

1. 有 “特點” 的程序員,會很吃香

Android 開發,本身並不是一個可以走得多遠的方向,真正有價值的地方在於與具體的業務方向結合,比如:Android 與音視頻技術,Android 與智能硬件交互,Android 與前端技術的融合與探索,Android 信息安全,Android 源碼深度定制等等……早日找到一個感興趣的方向,深入探索和積累,而不僅僅局限於研究 Android API 本身,這樣才能走得更遠,才能有更好的前途。”

所以,要讓自己在團隊裏更加有 “存在感”,要想將來的發展越來越好,你就不應該只滿足成為一個會寫 App 界面的 Android Programmer,而是要差異化地 “積累” 自己感興趣的技術,並且成為這個領域的專家。

2. 嚴格要求自己,不要犯 “低級” 錯誤

最近有跟第三方合作,用了他們的庫,各種 “低級” 錯誤多次激怒了我,有 NULL 指針異常、有參數配置不生效、有設置了消息回調卻沒有回調、每次修復 Bug 後又帶入新的 Bug,等等等等。

雖然他們做的功能總體來說是很牛逼的,但是這一系列的 “低級” 錯誤,一次又一次地拉低了我對他們技術的認同度和信任度。

我始終認為,代碼中有 Bug 是難免的,但是無論是寫 C,C++ 還是 Java,避免 NULL 指針 crash,函數形參檢測,這些都是一個成熟的程序員的基本技能,不應該找任何理由和借口。

3. 善於總結排查問題的工具和技能

今年我有遇到一些客戶的 Android 開發者,竟然不知道如何在命令行下用 adb 打 log 或者不知道怎麽過濾 log,著實讓我感到驚訝,打印和分析日誌也是程序員的一項基本功,而且我們還不應該僅局限於此,我們還應該在工作中不斷去積累一些有用分析手段、分析工具和網站,比如:

- 如何檢測 Android 的內存泄漏、CPU 占用、Memory 占用

- 如何用 ndk-stack 分析 Android Native 庫的 crash

- 如何用 wireshark , tcpdump 抓包以及分析協議問題

- 如何用 curl, dig, mtr, telnet, netstat 等命令排查網絡問題

- 如何驗證 YUV 數據、PCM 數據是否正確

- 如何分析 RTMP流、HLS流的異常、卡頓、時間戳等問題

- 收藏一些不錯的工具網站,如:http://www.17ce.com,http://ip.cn/,http://www.speedtest.cn/ 等等

4. 永遠要設定 deadline,完成比完美更重要

身在互聯網行業我們能做的,就是要有一套自己的 “優先級”,先出版本,再談優化。

有的時候,懂得合理地細化任務,也是一種能力。一般我拿到一個大的需求,肯定會把它細化成一個個小的任務,並且按照如下標準來進行分類和排序,甚至給出每個小任務的 deadline :

- 基礎模塊,其他工作需要依賴此模塊

- 涉及到接口的定義或者修改的工作

- 當前必須支持的功能點

- 可以後期增加的功能點

- 可以後期優化的地方

當然,根據實際情況還可以繼續細分。每當做完一個小的任務,就會先充分地測試,保證其正確性和穩定性後,保存一個版本,當必須支持的功能點完成後,至少已經有了一個可交付的版本了。

這裏還需要強調的一點是,“完成” 並不是說帶著很多 Bug 的完成,而是說一個穩定但不一定功能齊全的版本,因此,千萬不要用 “完成而不完美” 作為忽略交付質量的借口。

5. 知其然也要知其所以然

這是一個老生常談的話題,但是確確實實很多人沒有做到,特別是在面試的時候,經常遇到很多人對自己親自做過的東西理解完全不夠,這可能是一個態度問題,不願意花時間去鉆研,或許這種鉆研的確是一個比較費腦細胞的過程,但對於那些對技術充滿熱情的人,其實是一種享受。

舉個例子:對於播放器開發,不能只是做過,或者用過,盡可能知道其原理。列舉最常見的3 個問題:

- 從傳入 URL 到第一幀視頻渲染成功的整個流程

- 播放器有幾個緩沖區,如何管理的,如何設計的

- 音視頻同步是如何實現的

每個問題都可以再深挖幾層,基本上可以判斷其掌握程度和鉆研精神,會用第三方播放器的人很多,會用 ffmpeg 的人也逐漸變多,但能改 ffmpeg 能自己解析流媒體協議,能自己編寫出播放器的人,才能成為這個領域真正的大牛 。

Android 發展思路