Android工程师所必经的三个阶段,你到哪个阶段了?
前言
最近一直在思考,作为一名软件开发工程师,到底应该如何实现自我成长,是否有捷径而言?其实断断续续有过很多思考,也有和各种年龄段的同学们做过不少交流,结合自身的经历,有一些感悟和思考。本文可能可以适用到其他端,不过由于自己是一名 Android 开发工程师,所以就姑且从一名普通的 Android 开发工程师的角度来进行表述吧。
整篇文章可能读下来会比较啰嗦和白话,但句句真言,字字真心,欢迎大家一起交流。整文也只代表个人观点,同学们都可以发表自己的观点即可。
我认为每一名软件开发工程师都需要必经三个阶段:
- 不知道自己不知道啥
- 知道自己不知道啥
- 不知道自己知道啥
- 看起来很绕,但实际真实如此。
不知道自己不知道啥
对于大多数刚刚接触到 Android 开发的学生来说,软件开发是一片浩瀚的海洋,这是一片全新的领域,有着自己的生态圈。所以初入开发行业的学生们,完全不知道自己还有哪些是需要学习的,所以这些同学通常会陷入一个非常迷茫的阶段,尤其是在校学生。
自己当初也是如此,天真的以为计算机专业就是开发游戏,倒腾电脑的专业,所以自己就成了计算机学院的一员。上大学后,才发现和自己想象的完全不一样,依然要学习好多的数学专业课和语言专业课,只是这个语言不再局限于英语了,而是一些从未听过的 C/C++、C#、Java、Python。
在学校的时候完全不知道自己应该学习什么,只能按照教学的安排一节课一节课的学习和实践,学校老师布置的任务也一如既往的简单,然而大家一片茫然,依然有很多的同学完全学不明白。努力得不到结果的感受,让一些同学越来越厌倦去上课,越来越厌倦考试。尤其是遇到编程操作性科目,更是大脑一片空白。
大学阶段学生们的普遍情况是,不知道社会需要怎样的人才,需要怎样的情况才能做一名合格的软件开发工程师,在懵懵懂懂中就毕业了。
一部分在校学习刻苦,比较有远见的同学在即将毕业的一年抓住了公司的实习机会,这时候他们先人一步接触到了商业项目。会发现公司的软件开发又是另一番景象,也许在学校学习的 Java 和 Python,但在公司却要承担起一名 iOS 开发的角色,于是在这里开始了他们的二轮学习。
因为身边有一群有经验的导师,这时候学习起来比学校轻松了很多,但依然是大多数时候不知道应该学习什么,对于自己而言,哪些是需要现在学习的,哪些是未来应该学习的。
如果这些同学足够幸运,遇到一个优秀的 mentor,可能会轻松许多,应该 mentor 会授人以渔,在给你安排工作的同时,还会教给你做自己的职业规划的方法论。
有了一个详细的学习规划,会轻松很多,自己的学习还有 mentor 的定期 review 和反馈,这时候成长起来更快。这也是为什么我建议职业生涯初期的学生挤破头皮也应该进入大厂的原因。
大厂通常都有足够完善的新人成长机制,而且身边的同学都是足够自驱和优秀的,在这样的环境中成长,真的是如同脚踏白云,一飞冲天。
通常而言,职业生涯的前两年也会一直有这样的状况,不清楚自己到底还有哪些知识需要学习,在完成了交代的开发任务后,就会陷入一个怀疑人生的阶段,不知如何提升自己的能力。
这时候大多数同学就会靠踩坑提升自己的实力,踩一个坑记一次,有的坑记忆不够深刻踩 3 次怎么也够了,但这些同学会发现,职业生涯成长非常缓慢,如果不幸,可能 10 年的开发经验,不过是一年的经验重复使用了 10 年而已。
学习填充
下面就给大家分享一个我自己工作几年以来总结的系统性成长进阶路线,给你们做一个参考。
Android进阶学习路线
一、基础技能:
- 深入Java泛型
- 注解深入浅出
- 并发编程
- 数据传输与序列化
- Java虚拟机原理
- 反射与类加载
- 高效IO
二、Android框架体系架构
- 高级UI晋升
- Android组件内核
- 大型项目必备IPC
- 数据持久化
- Framework内核解析
三、360全方面性能调优
- 设计思想与代码质量优化
- 程序性能优化
- 开化效率优化
四、设计思想解读开源框架
- 热修复设计
- 插件化框架解读
- 组件化框架设计
- 图片加载框架
- 网络访问框架设计
- RXJava响应式编程框架设计
- IOC架构设计
- Android架构组件Jetpack
五、NDK模块开发
- NDK知识体系
- 底层图片处理
- 音视频开发
- 机器学习
六、架构师炼成实战
- 架构设计
- 网上商城项目实战
- 新闻客户端项目实战
- 多格式播放器项目实战
- Gradle自动化项目
七、微信小程序
- UI开发
- API操作
- 微信对接
八、Hybrid开发与Flutter
- Html5项目实战
- Flutter
知道自己不知道啥
大多数人工作 3 年后,会陷入这个阶段:知道自己不知道啥,明白自己的薄弱之处。
这个时候其实很好办,因为自己知道问题出在哪里,当然好对症下药,刚好我也就是处于这个阶段。
这个阶段的同学最大的问题是时间不够用,大多数这个阶段的同学可能都已经濒临成家养家的压力,生活中的琐事和压力都多了起来,工作中可能也已经成为主程,除了要完成一些技术难题的攻坚,可能还需要指导一下新人,所以一定会出现时间极度不够使用的情况。
时间不够是最难解决的问题,可能也是最好解决的问题。时间确实就像海绵,挤挤总是有的,即使有时候我们会出现挤不动的情况,但那一定只是一个短期状况。
这个阶段的同学最需要读书,因为这些同学通常都已经有了自己的知识体系,也明白自己的薄弱之处在哪里,这时候就需要做专项提升,越到这个阶段,就会越发现基础知识的重要性。很多东西,真的需要学懂本质,这也是为什么大多数面试官都喜欢考察基础问题,因为真的基础才是根本,一个基础优秀的同学从来都不会太差。
我也是最近半年通过部门开展的读书活动才爱上了读书,书读百遍,其义自见是真理。很多书籍需要你反复软磨硬泡几次,每一次阅读都是一次认知的提升,而认知的提升最终会带给你财富的变现。
我希望自己在这一个阶段能产出更多有价值的文章,在这之前,我当然也需要做知识的基础夯实,于是有了系列,扫盲。
接下来,我还会从开源框架等开始,给大家带来一系列文章的产出。下面是我已经整理的一系列开源库相关的实战资料(含源码),有需要的点击蓝字免费获取。
【高级Android组件化强化实战(附源码)】
【深入理解Android插件化技术(附Demo)】
【Jetpack架构组件从入门到精通】
【Android热修复框架入门进阶指南】
不知道自己知道啥
工作很久后,不少工程师会陷入第三个阶段:不知道自己知道啥。
这时候,因为大多数知识已经成为了自己的血肉,很多设计理念和架构都会让自己觉得理所当然,但真要较真起来,可能自己也弄不清楚到底是源自于哪里。
很多时候,这些同学会更加明白自己的不足之处在哪里。但时间却更不够用了,他们大多数都已经成为了团队的领袖,成为了队伍的灵魂,开始负责起团队的大小事务,不能只关注到技术本身,而要关注很多技术之外的东西,比如产品感,项目推动能力,管理能力。大多数时候,Leader 决定了团队的天花板,一个好的 Leader 能让团队的天花板更高。
但非常尴尬,这个阶段的同学基本都有了自己的孩子,需要拖家带口,需要处理人情世故,很难再把技术做的足够纯粹,即使很明白自己的技术不足之处在哪里,却很难抽出时间去处理,因为这时候,可能软素质的提升才是当务之急。
总结
总的来说,一名工程师都会经历上面的三个阶段,我们不能去扭转什么,我们唯一能做的,就是让每个阶段提前,这样才可以让自己的精力在技术上投入更多。
Android工程师所必经的三个阶段,你到哪个阶段了?的更多相关文章
- Android 工程师如何快速学会web前段
Android 工程师如何快速学会web前段 今天主要聊一下本人最近在学习web前段的感受,最近html5是越来越火了,前段时间公司做了一个项目然后让我们“android”的程序猿过去帮忙把客户 端框 ...
- Android工程师入门(二)——不忙不累怎么睡。。
安卓开发迫在眉睫,这周入个门吧! Android工程师入门(二) 四.在界面中显示图片 ImageView 是显示图片的一个控件. --属性 src——内容图片: background——背景图片/背 ...
- android开发之路04(初级android工程师必会,你懂得!)
Android初级Android工程师重点掌握内容如下: 1.Android开发基础: ①UI界面设计: ②SQLite数据库: ③android四大组件: ④android网络编程: ⑤androi ...
- Android工程师必会做的20道题
一.单选题 (共7道题,每题5分) 1.使用AIDL完成远程service方法调用下列说法不正确的是 A.aidl对应的接口名称不能与aidl文件名相同 B.aidl的文件的内容类似java代 ...
- Android 工程师
转发:https://zhuanlan.zhihu.com/p/30429725 这句话我真的憋了好久.Android 工程师只要关注我,我就能让你达到大师级水平,不是面试时的吹牛逼水平,不是自我欺骗 ...
- 如何成为一名合格的Android工程师?
首先需要申明的是,我并不是一名合格的Android工程师,无论从开发经验或者是技术水平上来说,我都没有资质承担以为Android工程师的责任,但是我把它作为一个目标,也一如既往的努力着.如果我的论点有 ...
- 腾讯音乐Android工程师一面面试题记录,拿走不谢!
最近参加了一次鹅厂音乐Android工程师面试,这里凭记忆记录了一些一面的面试题,希望能帮到正在面试的你! 1.Java调用函数传入实际参数时,是值传递还是引用传递? 2.单例模式的DCL方式,为什么 ...
- 转行|如何成为企业想要的Android工程师
没经验 一来没钱 二来没时间 三来投简历没人要 四来就算忽悠进去了,也做不了,亚历山大,迟早被踢 1.做好手上的工作 不要裸辞 忌讳心猿意马的心态,当有两个选择的时候,往往 所以要专注于当下手头上唯一 ...
- Android工程师常见面试题集
本文汇总了朋友同事在面试过程中被经常问道的一些问题,讲解不详细,有需要特别了解的可以留言告诉我.持续更新中…… 1.接口回调机制 ①定义一个接口,定义接口中的方法: ②在数据产生的地方持有接口,并提供 ...
随机推荐
- Redis 雪崩、穿透、击穿、并发、缓存讲解以及解决方案
1.缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程 1.redis集群大面积故障 2.缓存 ...
- C++实现二分法详解
二分法是在一个排好序的序列(数组,链表等)中,不断收缩区间来进行目标值查找的一种算法,下面我们就来探究二分法使用的一些细节,以及常用的场景: 寻找一个数: 寻找左侧边界: 寻找右侧边界. 一.二分法的 ...
- Linux从头学02:x86中内存【段寻址】方式的来龙去脉
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- Solon 1.5.11 发布,增加国际化插件
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- [心得体会]Spring注解基本使用方法
涨知识系列 Environment environment = context.getEnvironment(); 在Spring中所有被加载到spring中的配置文件都会出现在这个环境变量中, 其中 ...
- Mybatis学习(7)实现mybatis分页
上一篇文章里已经讲到了mybatis与spring MVC的集成,并且做了一个列表展示,显示出所有article 列表,但没有用到分页,在实际的项目中,分页是肯定需要的.而且是物理分页,不是内存分页. ...
- Pycharm上python运行和unittest运行两种执行方式解析
前言 经常有人在群里反馈,明明代码一样的啊,为什么别人的能出报告,我的出不了报告,为什么别人运行结果跟我的不一样啊... 这种问题先检查代码,确定是一样的,那就是运行姿势不对了,一旦导入unittes ...
- Django基础-003 配置Django自带的后台管理,操作数据库
插入测试数据,可以自己写页面来插入数据 也可以使用Django自带的后台管理,来操作数据表 1.创建用户 python manage.py createsuperuser 2.在浏览器输入地址,进入D ...
- 一行代码打印python之禅
就这一句: import this 输出: The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is be ...
- python的代码块和if条件表达式
代码块和if条件表达式 代码块 什么是代码块 以冒号作为开始,用缩进来划分作用域. 在之后的学习当中,使用if条件语句.for.while循环语句.定义函数.定义类等诸多地方都会涵盖代码的概念. 什么 ...