前言
在知乎上看到一个问题,程序员如何提高自己,Android开发初期之后怎么提升?怎么才能叫精通?方向在哪?
很多程序员都有想过这个问题,这是一个“月经”问题。
有些人在思考,思考者然后没有然后了
有些人根本不思考,得过且过
有些人,已经做出了改变,并仍坚持着很多爱程序员哪怕是工作在忙也会抽出来一些时间,来学习,来搞副业,来提升
比如我是这样安排的:
早上上班到公司去看一些相关的技术帖子,中午把午休时间缩短半个小时,去逛逛知乎,晚上下班两个小时去学习,1~2个小时写文章。我个人算不上什么优秀,但是可以作为参考。
然后我们来对问题分解一下
Android 开发 :
分成
- "开发" 一般的开发技能
- "移动应用开发" 移动应用开发相关概念思想
- "Android 开发" 特指与 Android 开发直接相关知识技能
正如你可能所想的那样,这样的问题不像1 + 1等于2那样,有一个简单确切的答案。真正答案因人而异。
下面我以自己几年的Android 开发经验,与你分享一二。
就按我上面所分解的几个方面来说一说:
一:开发技能
你可以看成是一般的编程技能,这方面你可以从:
编程语言的熟练掌握
面向过程编程思想
面向对象的思想
函数式编程思想
设计模式
算法与数据结构
网络编程,TCP/IP 协议
重构
版本管理(Git 等)
等方面的检查和提高自己,更详细的技能树,自己搜索
二:移动应用开发
你可以看成是 App 开发,估计这可能是你更感兴趣的,这方面你可以从MVC 这成三个方面来对照检查下:
M:数据层,移动应用数据结构特点
数据存储:SQLite数据库,文件存储
数据格式:XML 格式,JSON格式 序列化与反序列化
数据查询:移动应用一般数据库主要是 用SQLite
(说回来,单是 SQLite 数据库,就可以花不少时间来深入学习下,因为对一个应用来说,数据基本是核心)
V:视图层
移动应用界面特点
移动应用构建界面常用方法
移动应用交互特点
移动应用动画
系统 UI 系统特点,优点,缺点及局限
C:控制层
移动应用控制层特点
控制层的生命周期
多线程,UI 线程,后台线程
再加一层:
E:事件层
事件处理,触控事件,手势,事件响应链
三:Android 开发
工具篇 - 工欲善其事,必先利其器
Android Studio 掌握用得怎么样了?
Adb 及相关工具会用吗?
Gradle 构建系统呢?
文档篇 - 看 Android 官方是怎么定义开发各种技能的。
相信常看 Android 开发者官方网站,你会收益良多,我下面写的也不必看了。
系统篇
Android 多线程编程,异步编程特点 - Loop,Handler,IntentService,Broadcast,MessageQueue
Android UI 框架特点,优势和不足
然后你再按 MVC 将 Android 各部分再分析分析,总结总结。
那么,我们平常如何提升自己呢?
第一点,根据自己的专业,无论是前端或这是后端,都可以相对应的去看一些视频,因为这是对某个方面知识快速了解的好办法,相比书籍和文档,视频要更精彩一些,而且花费的时间相对比较少,让大家的注意力更集中一些。国外的或者国内的都有,不想花钱可以去b站或者YouTube上看,很多质量也是比较高的。
第二点,可以综合的去了解一下其他语言,Android工程师不能光只会Android,可以去了解c++,kotlin方向的一些知识,有时候也不能盲目的去追求,哪个比较火学习哪个,这是随波逐流的做法,根据实际情况,最好是在公司能学以致用。
第三点, 多做项目,多去练习。敢于尝试自己专业的其他领域,熟能生巧,多尝试几种不同的编程语言,能给我们提供不同的编程思维视角,站在更高的维度看技术。如果在练习的途中,能够举一反三就阔以了。
第四点,多去分享和交流。一些中大型公司,部门内部都会有一个技术分享会,你可以对自己专长的方向研究一段时间以后,相关的技术演示给大家看。线上可以来直播或者把自己学到的东东录制为教程,或者参加一些技术等会线下论坛等。
分享是一个很好的实践,同时也会刚你暴露出来一些不足之处,大家都知道。我们程序员不善言谈,说话紧张,表达能力,或者逻辑思维能力都有待于提高,这些都是需要提高的地方。即使将来一天不做程序员了,弥补了这些不足之处也会是一笔巨大的财富。
做好规划,每天进步一点点,一年下来,你可能就比别人进步了好多,不管别人怎么想怎么说,干就是了。毕竟这个社会是现实的社会,很多人像我一样家里没矿,这个时候只能靠实力说话了。
如何学习?
接下来来看看有一些进阶学习的方向:
钻研技术:
首先来看看 Android 有哪些方向,列举几个常见的:
- 应用层开发,日常业务开发,主要还是原生开发,就业方向基本饱和,大部分只招高级工程师;
- 游戏开发,相比应用开发更吃香,有 Unity-3D 等游戏引擎;
- 跨平台,比如 Flutter、RN,从成本上考虑,跨平台是个不错的选择,我们 Android 有必要密切关注下;
- 安全开发,一些对安全性很高,比如银行项目,熟悉 Https、支付密码安全、应用加固等;
- SDK 开发,将应用里的部分功能独立了出来,封装成 SDK 提供给合作伙伴使用;
- 音视频开发,比如音视频直播/点播功能,则需要了解音视频编解码的传输协议,编解码方式等;
- 图形开发,比如美图、天天P图,对图形处理要求十分高;
Framework 开发,手机厂商定制手机为主,比如小米、魅族等; - 驱动开发,同上,更多是在和 Linux 打交道;
- 如果你对技术感兴趣,想做到专家级别,可以在以上这些方面深究下去,总之,劳资有技术,不怕没饭吃。
如果你不知道怎么学习,我给大家提供一个方向,进行体系化的学习!
除了上面的学习路线,还给大家整理了一份Android进阶学习资料,主要为安卓相关知识点及面试资料为主,在这个PDF中,通过详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用。
帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这个PDF中有所收获。一些基础不好的,这里也有一份安卓基础资料包,帮助巩固基础。
以下是这份PDF主要内容:
- Android 核心技术:介绍 Android 开发中常用的核心技术,比如自定义 View、Handler,以及一些开源框架的原理实现,来夯实你的底层能力。只有底层能力足够出色,之后的进阶之路才会更加轻松。
- 常见问题剖析:介绍一些项目中常见的疑难问题,使你能够对现有项目做出合理的重构优化。
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:
《486页超全面Android开发相关源码精编解析》 《960全网最全Android开发笔记》 《379页Android开发面试宝典》以上内容均放在了开源项目:【github】 中已收录,大家可以自行获取(或者关注主页扫描加微信获取)。
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
网友评论