一个Android 架构师的成长之路
前言
总所周知,当下流行的编程语言有Java、PHP、C、C++、Python、Go等。其中,稳坐榜首的仍然是Java编程语言,且在以面向对象思想占主导的应用开发中,Java往往成为其代名词。Java语言的背景强大,开发者众多,一直发展都不错。从普遍的企业的角度来看,存在的问题是:后台被认为是技术核心,客户端却被认为技术含量不高,甚至小企业会让后台人员顺便开发简单的客户端,或者让后台的架构师管理客户端几个人。事实上,客户端技术和后台技术的侧重点完全不同,连编程语言都不同(Android使用Kotlin编程语言的逐渐普及)。另外,后台的人跟用户相对离得太远,而客户端是直接面向用户的,与产品人员沟通更直接。所以,我认为企业产品真的是为了给用户用,那么选客户端背景的人员去做移动架构师更好一点。
一、移动架构师职位介绍
(1)移动架构师公认的职位描述是什么?
事实上并没有非常准确的职位描述。不过我可以尝试给出了一个:
设计当前架构。包括新技术方案的制定或评审。
改进过去架构。根据业务的发展或者技术债务的原因,重构当前技术方案并且推进实施。
前瞻未来架构。技术方案调研和分析,随时准备好对新技术的使用。
推进技术方案实施。解决实施过程中具体的技术问题。
技术分享和培训。推进技术交流和新技术的使用。
人员的招聘。技术面试。
(2)移动架构师是否还要日常编码,如果需要,比例是多少?
虽然带有管理色彩,但仍然以技术为主。所以代码是必须要写的,架构师不写代码,就成管理了。写代码的比例应该至少是 40% 的工作时间以上。
(3)移动架构师的成长路线是什么样的?
可以先试着解决当前业务中的技术问题,然后再培养自己的技术前瞻性,为业务的未来储备技术。架构师立命的根本还是技术,所以在移动开发技术上研究的事情都要尝试去做。另外,技术人员通常不善于表达,而架构师的很多工作(例如技术分享,培训,面试,推进技术方案实施)都是需要沟通工作的。另外优秀的移动架构师能够对业界都有所影响。所以,作为一个移动架构师,锻炼自己的表达能力也是必要的一条成长路线。
(5)移动架构师是否需要学习前端、后端开发技术?
这等于问要不要扩展技术“广”度,而架构师标签之一就是“广”。不过是看个人的精力能够达到多大的广度和深度了。
(6)移动架构师是否需要设计整个 C/S 架构?
这点倒是夸张了,配合后台人员设计应该是可以的,总负责的话,挑战略大了一些。
(7)移动架构师如何进行团队沟通工作?
1、与CTO总监的合作。首先从思想上要认识到两者是利益完全一致的。总监为架构师拓展上升空间,而架构师将总监的规划切实落地。保证足够的沟通,可以约定一个固定沟通机制,比如每2周一次,让双方在思想上保持同步和一致。架构师应该带着方案和CTO沟通,讲清楚A、B方案的优缺点。可以让CTO根据从上层去考虑做决定,就算架构师本职的决策,也最好先取得CTO的认可。如果出现意见分歧,最好的方式是先搁置,等条件成熟了,很可能意见会趋于一致。如果不能等,只要CTO的意见不是太离谱,还是按照CTO的意见执行比较好。如果有十足把握,认为自己的方案很好,那么也要得到CTO的许可和谅解,否则千万不要擅自去做,因为最后的锅不是你一个人能背的。
2、与其他部门的合作。产品部门一般不懂技术,架构师的作用就是帮他解决这个问题,这个很好理解。在理解了产品需求后,进行技术可行性分析。在不改变整体方案目标的前提下,从技术的角度,提出改善意见,修改设计,目的是方便实现。与后台架构师搞好合作,从后台到前台,整条链路太长,一个人管不过来,需要两人好好合作,共同把好技术关。拉拢好测试部门,要当作开发的朋友看待,是自己人。如果关系够好,考虑让测试人员在“自测”阶段提前介入,帮助开发人员提供测试案例。运营部门的关系稍微远了一点,关键点是及早介入。防止临上线了,加入一堆的运营需求,就可能影响产品投放时间了。总之与其他部门以合作为主,挣取及早沟通,将风险消灭在反生之前。
3、与团队成员的合作。移动开发团队人数不多,但是部门和开发语言多。有IOS,android,还有JS和Java网关。如果一个部门超过3个人,应该设置一个Team-Leader,进行授权实现间接管理。对于自己擅长的技术亲自去实现,和兄弟们一起战斗,深入到团队中。思考团队提升和储备,应让中层人员在一线作战,高层人员作指导,初层人员打酱油学习。对于自己不擅长的技术,可以采用“结对编程”的方法,让两个开发者在一台电脑上开发,一个编写另一个观察,程序基本是相同的,还是能够理解和参与讨论的。与几个Leader,要重点在于沟通,在大方向上保证思想一致,给他们空间适量授权,并协助他们做出成绩。重点注意团队的正能量以及活跃的气氛,人不是机器,和谐的氛围比冰冷的制度和惩罚要好得多。记录团队的功绩和成果,提高团队成员集体荣誉感,将奋斗目标引导到“自我价值”上来。
二、Android架构师技术介绍
- 架构与设计
- 设计模式
- 重构
- 网络编程框架
- TCP格式三次握手与四次挥手
- HttpClient
- HttpURLConnection
- Volley
- OkHttp
- Retrofit
- UI架构模式
- MVC
- MVP
- MVVM
研发工具
集成开发环境
- Android Studio
- Sublime Text
版本控制系统
- svn
- git
- gitlab
- github
- mercurial
调试工具
- ADB
- DDMS
- Stetho
- LeakCanary
- ClassyShark
- Postman
- markman
CodeReview工具
- Gerrit
- Phabricator
构建工具
- Gradle
- Buck
效率工具
- 番茄钟
- Markdown
- WakaTime
- Focus Matrix
- evernote
移动安全
- 代码和资源混淆
- 反编译
- 密钥管理
- 安全编码
- 应用加固
专项技术
- App 瘦身
- MultiDex
- 插件化
- 推送技术
- Crash 统计
- 函数式编程
- 启动保护
- 在线热修复
- AOP
- React Native
- Hybrid
- SDK化
- 依赖注入
软技能
- 知识管理
- 团队Wiki
- 团队论坛
- 时间管理
- 四象限法则
- 帕累托法则
- 番茄工作法
- 目标管理
- Smart 法则
- 思维导图
- 甘特图
- 项目管理
- 边界思维
- 过程思维(WBS)
- 风险思维
- 干系人思维
- 整合沟通
- 团队管理
- 招聘面试
- 梯队培养
- 技术规划
- 团队规范
- 个人管理
- 技术博客
- 技术分享
- 会议演讲
- 领导力
- 持续学习
周边技术
- 产品交互设计
- 后端技术
- HTML5
- iOS
移动测试
单元测试
- JUnit
- Robolectric
- Mockito
UI自动化测试
- Monkey
- MonkeyRunner
- UIAutomator
- Robotium
- Espresso
- Appium
持续集成
- Jenkins
- Travis CI
- fastlane
静态代码扫描
- CheckStyle
- FindBugs
- PMD
- Android Lint
- Infer
性能优化
- 启动优化
- 代码优化
- 内存优化
- 电量优化
- 布局优化
- 网络优化
编程语言
- Java
- C
- C++
- Javascript
- Groovy
- Kotlin
我给大家准备了一个明确的安卓架构师学习路线以及在文章最后准备了学习资料
- JAVA语言进阶与Android相关技术内核
- App开发框架知识体系(App亦对象)
- Android前沿技术
- Android App全方位性能调优
- 微信小程序与Hybrid混合开发
- 高级进阶必备篇
关注+转发,私信关键词 【资料】即可获取更多有关安卓开发的资料(面试资源与经验总结,BAT内推,高级UI、性能优化、架构师课程、NDK、混合式开发全方 面的 Android高级实践技术讲解以及在线答疑等。)!
一个Android 架构师的成长之路的更多相关文章
- 一名前端Web架构师的成长之路(转载)
本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路.如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员 ...
- Android 架构师技能图谱
# Android 架构师技能图谱 ## 架构与设计 - 设计模式 - 重构 - 技术选型 - 特性 - 可用性 - 性能 - 包大小 - 方法数 - 文档 - 技术支持 - UI架构模式 - MVC ...
- android大牛高焕堂最新力作-android架构师之路
android大牛高焕堂 个人介绍: Android专家顾问,台湾Android论坛主席,现任亚太地区Android技术大会主席,台湾Android领域框架开发联盟总架构师.发表100多篇Androi ...
- 阿里Java架构师谈谈架构和如何成为一个Java架构师
架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构. 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系. 该体系结构不是可操作的软件. 具体来 ...
- 要成为一个 Java 架构师得学习哪些知识?
作者:zhuqz链接:https://www.zhihu.com/question/29031276/answer/54631312来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- 百度在职 iOS 架构师的成长笔记,送给还在迷茫的你!
前言 我们经常在网上会看到这样的文章,你的同龄人正在如何如何.......这是典型的贩卖焦虑的文章.的确,现阶段,刚毕业几年的年轻人,面临车,房子等,有时候压力挺大的. 但你过度焦虑的话,每天生活在恐 ...
- Android架构师吐槽腾讯王者荣耀的程序员,排位匹配算法怎么搞的,每次都输
腾讯王者荣耀的开发来来来出来聊聊,真是日了狗了,多次离上王者还差两三颗星的时候队友就开始水的一塌糊涂,对面就牛逼的不行. 又连跪回去了,被对面把屎都打出来了,实在忍不住来吐槽,你们这个排位匹配算法到底 ...
- 【架构】生成全局唯一ID的3个思路,来自一个资深架构师的总结
标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...
- Android 架构师技能图谱(转载)
架构与设计 设计模式 重构 技术选型 特性 可用性 性能 包大小 方法数 文档 技术支持 UI架构模式 MVC MVP MVVM 研发工具 集成开发环境 Android Studio Sublime ...
随机推荐
- RE最全面的正则表达式----终结篇 特殊处理
三.特殊需求表达式 Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0- ...
- UVA - 1152 --- 4 Values whose Sum is 0(二分)
问题分析 首先枚举a和b, 把所有a+b记录下来放在一个有序数组,然后枚举c和d, 在有序数组中查一查-c-d共有多少个.注意这里不可以直接用二分算法的那个模板,因为那个模板只能查找是否有某个数,一旦 ...
- SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
- Selenium Webdriver元素定位的八种常用方式【转】
在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...
- Cacti 管理员密码忘记找回
1.登陆数据库: # mysql -uroot -p MariaDB [(none)]> show databases; +--------------------+ | Database | ...
- unity游戏开发_对象池
现在假设游戏中我们需要实现一个这样功能,按下鼠标左键,发射一颗子弹,3秒之后消失.在这个功能中,我们发射了上百上千发子弹,就需要实例化生成上百上千次.这时候,我们就需要使用对象池这个概念,每次实例化生 ...
- PHP 递归读取无限级分类
/** * [获取第一级分类] * 20170829 * * @return array */ public function getCateList(){ $this->catelog = [ ...
- Dart语法学习
Dart语法学习 目录 参考资料 语言特性 关键字 变量与常量 数据类型 运算符 operators 控制流程语句 异常 Exceptions 函数 Function 类 Class 类-方法 类-抽 ...
- 分布式唯一ID生成算法-雪花算法
在我们的工作中,数据库某些表的字段会用到唯一的,趋势递增的订单编号,我们将介绍两种方法,一种是传统的采用随机数生成的方式,另外一种是采用当前比较流行的“分布式唯一ID生成算法-雪花算法”来实现. 一. ...
- Keras(一)Sequential与Model模型、Keras基本结构功能
keras介绍与基本的模型保存 思维导图 1.keras网络结构 2.keras网络配置 3.keras预处理功能 模型的节点信息提取 config = model.get_config() 把mod ...