前端开发人员的职业规划(移动端程序员如何突破职场瓶颈)
前端开发人员的职业规划(移动端程序员如何突破职场瓶颈)图片:Fresco,Gilde,Picasso网络库:包括Retrofit,OkHttp,Volley从 2015 年 React Native 开始,Weex、Flutter、Kotlin-Native 等跨平台框架相继出现,加上微信小程序以及手机厂商联合推动的快应用,前端技术在移动端有了越来越多的使用场景。因此,越来越多的公司也在组织架构上做出相应调整来适应这种大前端趋势。以前的团队构成以移动端程序员为主,如今除了 Android / iOS 开发之外,还有 RN / H5 / 小程序等开发人员。Android开发常用的第三方库:响应式编程:RxJava、RxAndroid,Google 的Agera
在市场紧缩以及大前端的趋势下,移动端程序员如何进行职业规划,保持竞争力?今天 100offer 邀请到了在爱奇艺负责移动端金融产品研发工作的孔涛,他将在文中与你分享大前端的发展趋势、Android 开发进阶所需技能,以及移动端程序员的职业发展路径。
作者简介:
孔涛,目前在爱奇艺技术产品中心负责金融产品的移动端研发。具备 7 年 Android 开发经验,曾在新浪、百度等大型互联网公司担任 Android 工程师,负责新闻、地图类等 App 研发工作。熟悉 Android 系统原理及大型 App 的模块化、组件化、插件化架构设计方案。
移动互联网时代到来之后,移动 App 成为新主流,需要开发 Android、iOS 端,曾经还有 Windows Phone 等不同版本,早期以 PhoneGap 等为代表的 Hybrid 形式和内嵌在 App 中的 WebView 开发为主,非常浪费人力物力。
从 2015 年 React Native 开始,Weex、Flutter、Kotlin-Native 等跨平台框架相继出现,加上微信小程序以及手机厂商联合推动的快应用,前端技术在移动端有了越来越多的使用场景。因此,越来越多的公司也在组织架构上做出相应调整来适应这种大前端趋势。以前的团队构成以移动端程序员为主,如今除了 Android / iOS 开发之外,还有 RN / H5 / 小程序等开发人员。
Android开发常用的第三方库:
响应式编程:RxJava、RxAndroid,Google 的Agera
网络库:包括Retrofit,OkHttp,Volley
图片:Fresco,Gilde,Picasso
依赖注入:Dagger2
数据库:Realm,ORMLite,GreenDAO,ObjectBox
数据总线:EventBus,otto
内存泄漏检测工具 LeakCanary 等
各个技能点如果详细拓展开,会形成相当庞杂的一张知识图谱,建议大家自行梳理总结消化。
3. OOAD 和设计模式
在架构设计方面,首先要掌握的就是面向对象的开发和设计。具体知识点包括:
面向对象三大特性:封装 继承 多态。
五大基本原则(SOLID 原则),单一职责原则,开放封闭原则,里氏替换原则,依赖倒置原则,接口分离原则。
23 种设计模式:常用的有工厂、单例、适配器、桥接、组合、代理、命令、观察者、策略、状态模式等等。
4. APP架构设计
包括 MVC、MVP、MVVM、MVI、VIPER、Clean Architecture、Flux。目前除了 MVC 外 MVP 和MVVM 用得比较多,具体的架构设计还要结合业务去考虑。
(二) 软技能
人在职场,行走江湖,想进阶高级程序员光有技术深度是不够的,还需要掌握众多软技能,注意综合职业素养的磨练。有很多人一开始重视程度不足,在职场后半段的上升过程中,容易遇到瓶颈。
下面是我个人总结出的高级程序员必备软技能,供大家参考。
1. 快速学习能力:包括技术深度和广度,能够不断探究新技术,不断学习。
2. 沟通能力:加强表达、阅读、编写能力,即使在技术发达的今天也绝不会过时。因为任何方式的沟通在企业内部都是非常有必要的。
3. 团队协作能力:开发人员很容易陷入孤立的人际交往状态,但开发工作永远都不可能是一个人完成,只有成员真正能融入团队内,顺利与其他同事沟通合作,才能体现出其真正的价值,被列为未来职位晋升候选人的几率也更大。
4. 时间管理能力:可以参考时间管理「四象限法则」,有重点地把精力和时间集中用于处理重要但不紧急的工作,这样可以做到未雨绸缪。
5. 影响力:一方面是业务影响力,另一方面是技术影响力。其中,提高技术影响力的方式包括:多参与技术分享,把积累的知识进行总结和传播;参加技术方案评审,把技术经验分享出去;帮助新同学解决技术问题;在博客、Github、StackOverflow 等平台上对外分享。
6. 文档编写能力:
代码注释。很多程序员很少写注释,或者注释过多,都是不合适的。多参考开源项目的注释规范。
编写技术设计文档。包括流程图,类图,功能时序图等等。
此外推荐一本书:《软技能——代码之外的生存指南》
工作 3-5 年后已经进阶到高级程序员了,很多人开始面临一个问题:未来发展方向是技术专家还是技术管理,哪一条职业发展路径更适合自己?
选择哪条路线,首先要明确自己想要什么。想做技术还是管理,都跟目标和职业规划有关,每个人的实际情况不同,目标就不同,建议尽量做和自己的性格相符合的选择,并且坚持。哪怕一时半会看不出效果,长期总是能够看到效果的。
1. 怎样的程序员适合做技术专家?
技术专家的核心就是深入而精通。对某个技术领域很熟悉、对代码编写保持热情、持续学习新的技术、能够静下心来做技术,而不是急功近利。性格相对内向、不擅长沟通协调、不希望花大量时间带团队、主要负责把关键技术做到专业和极致,这样的人更适合往技术路线发展,比如技术专家,架构师。
2. 怎样的程序员适合转型技术管理?
首先要明确,通常所说的技术管理者都需要做哪些事?
- 团队建设:人员激励、团队文化、梯队建设。
- 任务管理:任务分工、任务协作。
- 管理规划:新技术调研,支撑新业务的重构等。
相应地,需要的能力包括:向上汇报向下传达能力、团队管理能力、人员培养能力、上下游部门合作把控能力、业务需求沟通能力、重大问题的决断能力、长远目标规划能力、执行力等等。
综合来看,管理能力和技术能力的要求差别较大。作为技术管理者首先应该有角色认知的改变,不能以程序员的角度去看待问题,需要站在更高角度,从全局思考问题。推荐有志走管理路线的移动端程序员参考这本书:《成为技术领导者》。
3. 两种发展路径的异同点
(1) 不同点:技术专家更依赖个人技术能力,需要结合业务做好技术规划,框架设计,性能优化以及技术创新;技术管理者是协助团队一起把产品做出来,负责团队内外的组织沟通和相互协调。
(2) 相同点:终究需要面对管理,只是管理工作的多和少之分。即使你是架构师,也需要 lead 一个技术团队。
因此,不论你未来是走纯技术路线还是非技术路线,都需要增长自己的管理技能,因为到最后总归是需要管理沟通的。当你级别非常高,却还不跟任何人打交道,完全靠个人能力来贡献的情况是很少见的。
4. 如果选择错误,是否还有二次选择机会?
我认为需要先把职业目标和职业规划想好,经常改变对职业影响较大。
(1) 技术转向管理:要提前掌握相关管理知识并在角色认知上做出改变,以团队为出发点去思考问题,对业务了解更多,提高部门内的影响力,有合适的晋升机会可进行转型。
(2) 管理转回技术:如果你面对诸多跨部门沟通,在性格等因素上感觉不合适,需要尽快做出决策,转回技术开发。
三. 大前端趋势下,移动端程序员如何保持竞争力?我从招聘网站上摘录了某些一线公司的职位描述要求:
3 年以上工作经验、深入了解移动端的底层和原理、独立主导或开发过一款以上产品的核心项目、丰富的项目经验或管理能力、有 React Native 或者Weex 的实战经验、掌握一些前端开发技术,HTML / JavaScript / CSS 等。前后端开发经历是加分项。
可以看到,市场对 Android 程序员的要求越来越高,除了深入掌握 Android 底层原理,对前端 JS 等技术也有要求。
今天我们已经进入了终端碎片化的时代。从 2007 年 iPhone 第一代发布至今的 12 年里,智能手机并没有被取代的迹象。但创新仍在继续,比如智能手表、TV、眼镜、头戴 VR 等等,可以想象这样的设备仍会继续增多。
这些新设备也是新平台,与智能手机类似,可以安装第三方应用,且这些平台基本都支持浏览器或内嵌浏览器引擎。早期 Hybrid 和后来 React Native 等探索,在显示终端应用的开发上,前端开发已成为必备技术。
因此,大前端趋势对移动端程序员而言,最大的影响就是新的移动开发技术栈。
移动设备作为主流终端,其应用开发技术也应该是大前端最关注的技术。以前移动开发技术栈以原生开发为主,现在的趋势是跨平台技术愈演愈烈。
那么,在如今技术快速变化的环境下,移动端程序员该如何保持竞争力?
首先,加强 Android / iOS 技术深度储备,深入理解系统底层原理,对新技术持续投入。
其次,逐步完善前端技术栈,广度扩充,熟悉前端 JS,以及 RN,flutter 等跨平台框架。
最后,选择 Android 细分领域并提高,比如应用开发、逆向安全、音视频、车联网、物联网、手机开发、SDK 开发和智能电视盒子开发等等,在其中选择一个并不断深入。
四. Q & A(Q代表网友提问,A代表孔涛回答)
Q: 您是从什么时候开始带团队的?刚开始从纯技术转向管理岗会遇到什么困难?如何克服?
A: 我从4年前左右开始带团队,由一个人独立贡献到多个人的团队开发贡献,一个人能力有限,驱动大家解决问题,这其中有心态的变化是需要克服的。有一种决策认知的改变。
Q: 我一直在中小型公司做小团队管理者,后续发展突破口在哪里,是否可以进入大厂转技术路线?
A: 你的突破点在于技术上的提高,这是一条不错的路线,在大厂里做技术是没有问题的。但如果你想继续做管理的话,就要先提升一些大厂的经验,做技术,再慢慢转到管理
Q: 在创业公司带大团队和在大厂带小团队,哪条路更有优势?
A: 这没有绝对答案。如果你之前在大公司里带过小团队,积累了经验,去创业公司带大团队是没有问题的。但是反过来,如果你经验不足,且缺乏一些对新事物的认识的话,去小厂带大团队可能会遇到一些瓶颈。所以个人建议先去大厂锻炼锻炼。
想突破职场瓶颈?点击「了解更多」来100offer看看工作机会!