image
image
13 年, 我从一个二本学院的化学专业毕业. 许多同学毕业后都是在制药工厂上班, 朝九晚六, 拿着微薄的工资. 那个时候的自己很迷茫, 总觉得未来不该如此淡然无味. 一波波得招聘信息里面, 最热门也最诱人的是互联网 / IT 领域.
顺势而为勇者胜. 当机立断, 我决定转战互联网行业.
不过, 那时的我仅仅会一些 C 语言, 投了几十份简历都石沉大海 -- 就我这专业, 就我这经验, 想要很好的 offer 应该有点天方夜谭吧, 现实也的确给了我响亮的一巴掌.
不服输, 我堵上了所有的勇气立志从头开始全面学习 IT 互联网相关的知识.
生活总是会眷顾有准备的人, 不久我还是拿到了一个 offer, 虽然公司不大, 但总算也是对自己努力的汇报.
1. 对基础原理不断挖掘
进入公司, 我的职位是 Linux 应用开发工程师, 做 App 网络传输模块, 本质上就是把本地的数据通过 socket 传输到服务端. 用到的技术是 C 语言, 网络编程, 多线程编程.
那时是最痛苦的几个月, 因为非计算机出生, 很多东西都不会, 经常程序段错误, 都不能定位到问题代码.
当时处于试用期间, 秉承着不成功则成仁的心态开始恶补相关的基础知识以及代码规范. 那时网络上没有现成的视频资料, 艰难地把计算机专业的书籍自学了一遍. 例如, 数据结构与算法, 计算机网络, 操作系统原理, 计算机体系结构......
image
熬过了试用期, 产品也上线了, 第一次体会到成就感爆棚的感觉.
现在回头看, 经验就 5 个字: 原理很重要. 很多看起来没用的原理, 其实是重要基础. 比如:
你能讲清楚函数的调用过程吗? 是怎么调用的? 怎么返回的? 参数是怎么传递的? 函数的内存布局是怎么样的?
如果了解这些原理, 就可以快速使用各种开源库. 可以更快地熟悉各种中间件 sdk 的使用方法. 刚入行技术不求多, 熟练掌握一项技术, 能把原理讲清楚, 拿得出手才有基本竞争力.
2. 专注方向
了解技术全貌, 做合格架构师
基础仅仅是开始, 技术要有应用场景, 转化为产品才能最大化地产出价值.
后来, 我自学了 Android 开发, 比如 UI 开发, 网络开发. 当时也是夜郎自大得以为 UI 开发就是 Android 的全部. 投递了很多大厂的 Android 岗位, 却没有收到面试邀请. 回过头来再做分析岗位需求时, 才发现自己技术栈背景确实不匹配, 就算进了面试, 好多问题也都答不上. 比如:
1. 动态化混合渲染技术架构是怎么样? 怎么提高开发效能?
2. 产品的 DAU 有多少, 如何保证稳定性高且可用的?
3. 如何跟踪用户行为, 利用大数据完善产品功能, 降低运营成本?
这些问题让我意识到, 语言, UI 和原理只是程序员的基本技能而已.
想要进一步发展, 不光只考虑个人技术, 必须在整个产品生命周期, 开发, 运维, 能效上有合理的架构, 进而满足行业的发展需求. 你不光需要考虑业务需求如何实现, 更多的重心需要关注开发提效, 大团队并行开发协作, 大流量稳定性保障.
image
学习 Weex 技术, Rn 技术后, 颠覆了我对移动 App 开发的认识. 如果写 native 页面, 可能一天一个页面, Android iOS 就需要 2 个人日, Weex 是跨平台渲染, 一份代码可以在 Android iOS 两个平台使用. 那开发一个页面就只需要原来一半的资源. 通过新技术合理架构提升研发效能, 动态化技术提升发布成本.
无论程序多么完美, Bug 永远存在. 对于线上故障, 如果不能提前预防以及快速解决, 损失可能不堪设想. 所以线上运维, 异常监控, 性能监控, 数据埋点是优秀架构师的必备技能.
自学的过程是痛苦的, 移动端的技术日新月异, 很多前沿的技术还没有体系化的书籍, 只能在论坛, 博客等看零碎的文章, 学习效率比较慢. 要想高效的学习一线技术, 网络课程是一种新的选择. 有老司机指导方向, 避免走弯路, 事半功倍.
3. 沉淀经验
适应发展, 做技术的领头羊
有良好的技术基础, 学会了行业流行的框架, 可能只是获得了进入大厂的敲门砖. 多少人努力进入大厂, 最终默默无闻地进去, 悄无声息地出来. 没错, 平台很重要, 但更重要的是你能在这个平台上发展到什么程度.
这个日异月新的时代, 不光需要 Follow 一线技术, 更重要的是要引领时代, 才能在技术快速发展的阶段不被淘汰, 或者才能在下一次技术革命中抓住机会.
如果仅仅只掌握 Android 本身的技术是不够的, 比如说在 iot 时代有这样一个需求: 做一个 App 完成智能硬件的一键 Wi-Fi 配网. 这个就需要对 TCP/IP 协议栈, Wi-Fi 加密, 网络抓包等有深入的理解.
所以最重要的是突破当前岗位需求的设限, 对各种技术融会贯通, 创造新的技术框架, 做技术的领头羊, 适应时代发展.
技术人成长不能再单打独斗, 要学会与人交流, 学会将别人的知识为自己所用. 如果你依然觉得有些茫然, 不如跟有多年 Android 开发经验的资深工程师聊一聊.
最后附上小编整理出来的 Android 相关的学习思维导图, 让大家有个学习的方向, 早日拿到大厂的 offer.
Android 进阶
image
image.PNG
需要这些安卓学习资料和面试资料的大伙需要的关注 + 点赞 + 加群: 185873940 免费获取!
群内还有许多免费的关于高阶安卓学习资料, 包括高级 UI, 性能优化, 架构师课程, NDK, 混合式开发: ReactNative+Weex 等多个 Android 技术知识的架构视频资料, 还有职业生涯规划及面试指导.
来源: http://www.jianshu.com/p/df2127b1469c