短短几年时间,我们已经走进了一个“移动应用决定一切”的时代。移动应用的创意、功能、质量的好坏,决定着用户口碑、留存率等关键指标,能够左右创业公司的成败,也对行业竞争和营销效果有着重大影响。
在这种情况下,移动开发变得至关重要,每一个公司都希望招到更多更好的移动开发者,它们需要一个更好的职位来吸引和留住真正的资深人士。另外,移动开发领域技术更新换代很快,随着设备能力的提升,技术也越来越复杂,需要整体的掌控者来决定移动客户端的架构和技术选型,市场呼唤着新的工种降临,而我们将它称为移动架构师。
为什么要有移动架构师
从开发年限的角度来看,iPhone 初代发布至今已经超过 8 年时间,即使不算功能机时代,我们也有超过 5 年经验的移动开发者,已经满足了大部分设有架构师的开发领域的年限要求。当然,这只是必要而非充分条件,要回答为什么要有移动架构师,我们可以从两个角度来看,一个是移动开发的发展,另一个是移动开发者。
越趋复杂的移动开发
如果你今天要开发一个移动应用,相关的技术选择会让你眼花缭乱:开发 iOS 应用,从语言上就有 Objective-C 和 Swift 可以选择;开发 Android 应用,使用 MVC 还是 MVVM;如果同时开发两个平台,是否要尝试 React Native;甚至到底有没有必要开发原生应用,还是用 HTML5 技术解决?
这些只是移动开发技术选型很表面的一部分,深入到细节,你会发现需要做更多的选择,需要了解更多的技术。要掌握它们,需要长时间的学习和实践。
之所以出现这种情况,是因为随着移动设备能力的提高,以前很多无法使用的技术现在有了用武之地,而苹果和谷歌在很多地方并没有标准化,反而在推出更多的技术,比如 Swift,比如近来的 Flutter (前 Sky 框架),开发者可以灵活使用多种开发手段来实现想法。但对于开发团队来说,过于灵活有时候反而是有害的,团队成员需要遵循相同的规范,谨慎的选择技术,才能进行高效的协同开发。
对于这种情况,目前有些团队采用模块式开发,除了一些规范以外,自行决定、或者经过商讨决定各自负责的部分该使用何种技术。这在一定程度上能解决问题,但是这种模式会遇到单点问题,一旦某个模块由于意外无法及时更新,会拖慢整个项目的速度。因此,移动开发团队需要有确定整个架构的技术决策者。
无处安放的移动开发者
移动开发人员越来越吃香,初出茅庐的新手就能够获得不错的薪酬,而有 2-3 年经验的移动开发者更是抢手的香饽饽,其薪酬直逼其它开发领域的中高端水平。但有一部分移动开发者却很焦虑,他们是那些拥有超过 4、5 年经验的资深开发者。
他们焦虑的来源,来自于移动技术的快速演变和后辈开发者的追赶:如 Swift 的出现,将 iOS 开发者拉到了同一起跑线,开发者的经验虽然仍然有用,但也大大贬值;90 后、甚至 95 后也开始进入移动开发领域,他们的精力更加旺盛,对于新技术接受更快,面对优秀的年轻开发者,自然会涌起落伍的恐慌和焦虑。
面对这种情况,有的资深移动开发者转向其它领域,比如后端开发,因为这是一个经验可以更好发挥价值的领域;有的去钻研 Android 源码、Objective-C Runtime,希望对技术了解得更深入从而让自己难以替代;还有的干脆转向技术管理,从此渐渐挥别技术,走上另外一条职业路线。
资深的开发者,有家庭、房贷等的拖累,却还要和年轻人比谁的代码写得更多更快,这是很悲哀的事情,也难怪他们做出这样的选择。给他们一个更好的职位,打消他们的不安,让他们的经验更好的发挥价值,是公司的管理团队必须做的事情。
移动架构师能带来什么
移动架构师并不是笔者生造出来的,在国外,Mobile Architect 是一个受认可的职位,在国内,阿里系设有移动端架构师,手机百度也设有类似的系统架构师,不过相比于国外中小型公司招募移动架构师,国内的中小型公司还没有这个意识。
类比其它领域的架构师,架构师首先要做的两件事是架构设计和技术选型,如果从时间维度来考虑则是:
- 设计当前架构。包括新技术方案的制定或 review。
- 改进过去架构。根据业务的发展或者技术债务的原因,重构当前技术方案并且推进实施。
- 前瞻未来架构。技术方案调研和分析,随时准备好对新技术的使用。
除此之外,移动架构师能为公司和团队带来的价值还有:
- 知识传承和分享。架构师需要让团队成员理解自己的架构设计,了解各自需要负责的部分,这可以帮助团队更加快速的成长,同时将知识沉淀起来,降低团队减员带来的伤害。
- 技术方案的协调和推进。架构师要保证自己设计的方案能顺利执行,因此需要对此进行关注。
- 人员招聘。架构师需要将技术方案划分到岗位,如果没有相应的人来做,那么需要招募到合适的人。
- 解决技术难题。这条应该是技术专家的职责,但在移动开发里,资深开发者多半会深入钻研某一个领域,成为技术专家的可能性很大。
除了对公司带来的价值,移动架构师对开发者本人来说,可以从重复编码的体力劳动中抽离出来,从更高的层面来思考技术,对于他的技术能力提升也很有帮助。另外,这也是他除了转其它开发岗、转管理的另一条职业晋升路线。这条路线将是技术路线,可以贯穿终身。
比如 Delphi、C#之父 Anders Hejlsberg 现在的职位就是 C#和 TypeScript 的首席架构师,对于终身编程的他来说,这是一个非常适合的头衔。
技术负责人还是移动架构师
有人也许会说,已经有移动技术负责人了,还要移动架构师做什么。在小团队里面,也许技术负责人不仅要管团队、带新人,还是主力编码人员,在这种团队也许并不需要架构师,但如果他们能招到另一位资深的移动开发者,让他来担任架构师,不仅能让他安顿下来,相信也能大大减轻技术负责人身上的重担。
另外,技术负责人的晋升路线是移动技术负责人 - 移动研发总监 / 技术经理 - 项目经理的一条管理路线,即使在当前仍然需要和代码打交道,在未来也必然会越来越减少这方面的工作,所以,技术负责人和移动架构师从长期来看并不冲突。技术负责人一般只有一个,架构师可以关注不同的领域,在大型团队里可以有多个。
所以,无论是大公司还是中小团队,如果有余力,还是需要招募移动架构师。
未能解决的问题
当然,由于笔者调研所限,并不能完整的讲清楚移动架构师的方方面面,比如下面的问题:
- 移动架构师有没有一个公认的职位描述?
- 移动架构师是否还要日常编码,如果需要,比例是多少?
- 移动架构师的成长路线是什么样的?
- 移动架构师是否需要学习前端、后端开发技术?
- 移动架构师是否需要设计整个 C/S 架构……
对于这些问题,以及文章没有提到的问题,欢迎读者在下方评论或来信探讨,另外,我们也将在 ArchSummit 北京 2015 全球架构师峰会上举行移动架构师闭门会议,邀请国内资深的一线移动开发者,来共同探讨这些问题。
评论