Android 发展思路
1. 做一个有 ‘特色’ 的程序员
Android 开发,本身并不是一个可以走得多远的方向,真正有价值的地方在于与具体的业务方向结合,比如:Android 与音视频技术,Android 与智能硬件交互,Android 与前端技术的融合与探索,Android 信息安全,Android 源码深度定制等等……早日找到一个感兴趣的方向,深入探索和积累,而不仅仅局限于研究 Android API 本身,这样才能走得更远,才能有更好的前途。”
所以,要让自己在团队里更加有 “存在感”,要想将来的发展越来越好,你就不应该只满足成为一个会写 App 界面的 Android Programmer,而是要差异化地 “积累” 自己感兴趣的技术,并且成为这个领域的专家。
2. 善于总结排查问题的工具和技能
今年我有遇到一些客户的 Android 开发者,竟然不知道如何在命令行下用 adb 打 log 或者不知道怎么过滤 log,着实让我感到惊讶,打印和分析日志也是程序员的一项基本功,而且我们还不应该仅局限于此,我们还应该在工作中不断去积累一些有用分析手段、分析工具和网站,比如:
- 如何检测 Android 的内存泄漏、CPU 占用、Memory 占用
- 如何用 ndk-stack 分析 Android Native 库的 crash
- 如何用 wireshark , tcpdump 抓包以及分析协议问题
- 如何用 curl, dig, mtr, telnet, netstat 等命令排查网络问题
- 如何验证 YUV 数据、PCM 数据是否正确
- 如何分析 RTMP流、HLS流的异常、卡顿、时间戳等问题
3. 做事情要设定 deadline,完成比完美更重要
身在互联网行业我们能做的,就是要有一套自己的 “优先级”,先出版本,再谈优化。
有的时候,懂得合理地细化任务,也是一种能力。一般我拿到一个大的需求,肯定会把它细化成一个个小的任务,并且按照如下标准来进行分类和排序,甚至给出每个小任务的 deadline :
- 基础模块,其他工作需要依赖此模块
- 涉及到接口的定义或者修改的工作
- 当前必须支持的功能点
- 可以后期增加的功能点
- 可以后期优化的地方
当然,根据实际情况还可以继续细分。每当做完一个小的任务,就会先充分地测试,保证其正确性和稳定性后,保存一个版本,当必须支持的功能点完成后,至少已经有了一个可交付的版本了。
这里还需要强调的一点是,“完成” 并不是说带着很多 Bug 的完成,而是说一个稳定但不一定功能齐全的版本,因此,千万不要用 “完成而不完美” 作为忽略交付质量的借口。
4. 知其然也要知其所以然
这是一个老生常谈的话题,但是确确实实很多人没有做到,特别是在面试的时候,经常遇到很多人对自己亲自做过的东西理解完全不够,这可能是一个态度问题,不愿意花时间去钻研,或许这种钻研的确是一个比较费脑细胞的过程,但对于那些对技术充满热情的人,其实是一种享受。
举个例子:对于播放器开发,不能只是做过,或者用过,尽可能知道其原理。列举最常见的3 个问题:
- 从传入 URL 到第一帧视频渲染成功的整个流程
- 播放器有几个缓冲区,如何管理的,如何设计的
- 音视频同步是如何实现的
每个问题都可以再深挖几层,基本上可以判断其掌握程度和钻研精神,会用第三方播放器的人很多,会用 ffmpeg 的人也逐渐变多,但能改 ffmpeg 能自己解析流媒体协议,能自己编写出播放器的人,才能成为这个领域真正的大牛 。
Android 发展思路的更多相关文章
- Android发展演变与开发环境搭建
本人也算是一名比较会玩的Android手机用户,常常关注Android发展的最新情况,并且每年都会熬夜看谷歌的I/O大会,总会第一时间刷入最新的Android版本.接下来简单谈一下Android版本的 ...
- Android发展Singleton模式
这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...
- Android发展的一个重要方面Makefile分析
Android发展的一个重要方面Makefile分析 随着移动互联网的发展,移动开发也越来越吃香了.眼下最火的莫过于android.android是什么就不用说了,android自从开源以来,就受到非 ...
- 【Android实战开发】3G技术和Android发展简介
随着移动设备的不断普及和发展,相关软件的开发也越来越受到人们的关注,其中要提及的就是Android开发.本系列博客主要为大家介绍Android的开发,可能会有人问:现在互联网上已经有很多的Androi ...
- Android发展简单介绍
Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...
- .Net程序猿乐Android发展---(1)环境结构
对于没有接触Android人才发展,你可能会觉得Android更难以发展.接下来的一段时间,我们将了解Android开发的详细细节,主要是面对.NET程序猿,来看看.NET程序猿如何进行Android ...
- Android发展简报
Android这个词的本义是指“机器人”.同时它是Google至2007年11月5根据公布Linux台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成.号称是首个为移动终端打 ...
- 浅谈Android发展趋势分析
去年11月16.17日,我有幸参加了北京2017安卓技术大会,做了关于车载Android系统的演讲,并主持了诸多大咖参与的圆桌讨论,对Android未来几年的发展趋势进行了一番讨论.来自小米.百度.高 ...
- 支付宝soa框架发展思路(转载)
大家好,这里是首届QCon Beijing的现场,现在坐在我的旁边是的支付宝的首席架构师程立.先给大家介绍一下,支付宝架构发展到今天,经历哪些时期,都有哪些里程碑? 我回忆一下,支付宝系统架构发展大概 ...
随机推荐
- 记一次vcsa6修复过程
一. 某天发现一台vmware vCenter Server Appliance services 6偶尔能登陆了,但极不稳定,连shell都偶尔能进...... 然后利用各种手段想方设法进到she ...
- Python导出MySQL数据库中表的建表语句到文件
为了做数据对象的版本控制,需要将MySQL数据库中的表结构导出成文件进行版本化管理,试写了一下,可以完整导出数据库中的表结构信息 # -*- coding: utf-8 -*- import os i ...
- electron-vue 淘宝源
yarn-js config set registry https://registry.npm.taobao.org
- Tengine安装(阿里baba的)-Nginx
在先前的文章中介绍过Tengine,先前只是使用了运维人员配置好的内容,未自己进行过安装配置.周末闲来无事,对于Tengine进行了尝试性的安装.记录下面方便以后再做改进. Tengine官网上有个非 ...
- python命名规则
1 包.模块的命名规则:全部以小写字母形式来命名.比如:import random 2 类.对象的命名规则:类是每个单词的首字母要大写,其他字母小写比如:class MyFamily: ,类的私有属性 ...
- TZOJ 5101 A Game(区间DP)
描述 Consider the following two-player game played with a sequence of N positive integers (2 <= N & ...
- 用<pre>预格式化的文本
被包围在 <pre> 标签 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. 提示: <pre> 标签的一个常见应用就是用来表示计算机的源代码.
- [leetcode]40. Combination Sum II组合之和之二
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...
- 20175234 2018-2019-2 《Java程序设计》第五周学习总结
20175234 2018-2019-2 <Java程序设计>第五周学习总结 接口实现流程简述 interface定义接口 接口只能定义常量和方法,方法不能是具体的 实现接口时,需类来完成 ...
- 定义java中的变量
四种类型 1.整数 2.小数 3.字符 4.布尔值 八种 整数(byte 字节1 范围-128~127 ) (short 字节 2) (int 字节4) (lon ...