App架构师成长路线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了App架构师成长路线相关的知识,希望对你有一定的参考价值。

点击关注 异步图书,置顶公众号

每天与你分享 IT好书 技术干货 职场知识


技术分享图片


参与文末话题讨论,每日赠送异步图书

——异步小编


架构师,软件技术领域一个高大上的名词,业界有言“人人都是产品经理”,却很少听到“人人都是架构师”。其本身涉及的复杂庞大的跨领域知识体系除外,对于架构一词,其实很难去完整地定义,我们也没必要过于纠结,就如我们为什么要登山,因为山在那里,执着前行,或许还未曾知晓路在何方,抑或你都不曾思考要去何方,但至少你已经在路上,while(!(succeed=try()))。成长为架构师是一个过程,而不是一个结束,现在,就让我们开启移动应用架构师之路吧。

 什么是架构师? 

架构师是为满足某种架构设计的目标而从整体上构思把控的角色,在软件行业,又会细分很多,如系统架构师、企业架构师、应用架构师、业务架构师等,本书是针对App应用架构师进行阐述的。构建一个完美的架构,一般需要具备下述特征。

  • 具备客户要求的功能。

  • 能够在要求的工期内安全地构建。

  • 性能足够好。

  • 可靠。

  • 可用,且使用时不会造成伤害。

  • 安全。

  • 成本可接受。

  • 符合法规标准。

  • 将超越前任及其竞争者。

总结一下,架构的核心就是功能、安全、性能和稳定。其实,在具体架构实践中,我们很难完整系统地全部完成上述特征,架构是一种折中,“架构师玩的是折中的游戏,对于一组给定的功能需求和品质需求,没有唯一的正确架构和唯一的正确答案”。作为架构师的我们,需要考虑的是如何做得更好,如何避免负面影响。

App架构师的核心职责包括选型规划、架构设计、技术攻关、沟通协调、疑难攻略等,这些对架构师来说应该都是通用的。对美的追求,我认为是架构师最崇高的目标。

 程序员发展路线

其实地上本没有路,走的人多了,也便成了路。——鲁迅

踏上架构师之路前,我们先来聊聊程序员的发展路线。先看看国内的大公司的程序员发展路线,笔者整理了大致的职级体系对比图,仅供参考,如图1-1所示。


技术分享图片图1-1 职级体系

结合自身发展,我觉得程序员的发展路线应该主要有两条——专家线和管理线,管理线上,不同公司策略不同,大多都是从中间的某个级别道路分叉为管理,如图 1-2 所示。不同级别对应的角色和承担的责任自然不一样,例如资深工程师,需要在技术的深度和广度两维度上都有所积累和沉淀,而架构师除了技术本身外,技术之外的其他领域知识也是必须沉淀的。当然,从长远一点说,若需要结合具体的事业路线,这两条路在东西南北4个方向的事业路可以分散,分散到四象限矩阵,分别对应了职员、创业、SOHO 和投资,如图1-3所示。

技术分享图片图1-2 程序员职业路线


技术分享图片图1-3 程序员事业路线

 App架构师技能矩阵  

前面阐述了程序员发展路线,本节我们来聊聊作为架构师的你或者正在架构师路上的你,需要怎样的技能矩阵。

App架构师画布

在阐述技能图谱之前,我们先借鉴《精益创业实战》[3]一书中的精益画布商业模式,来创造一幅我们的App架构师画布,如图1-4所示。认识自己,这是开始做任何事情的基础。职业定位和事业定位,参考图1-2和图1-3所示,自己是不是真的打算踏入架构师这条路?目标和定位清晰后,该如何开始呢?毋庸置疑,就先从本书开始吧,图1-5为App架构师应该具备的基本技能,那么,开启你的疯狂成长之路吧。成长之路离不开学习,学习又必须有一定的方法,如何正确地学习,请参考本书“架构师那点事”章节内容。光学不练也不行,你需要一个平台或者一个项目去演练,去实践,走过的路才是你自己的路,让我们培养架构师思维,朝着架构师前行。最后,说到得与失?任何事情都存在一定的机会成本,要提前考虑清楚。

技术分享图片图1-4 App架构师画布

技能图谱

将技能图谱/技能矩阵用于自己的学习和成长,这是笔者尝试过的非常不错的一种方式,推荐给读者,值得大家体验。针对App架构师的技能图谱,笔者进行了完整梳理,如图1-5所示,本书后面内容基本会覆盖其中大部分知识点。诚然,任何单方面的思考和决策都是不全的、片面的,仅供参考,同时推荐大家参阅Programmer Competency Matrix[4]和七牛云的漫画电子书《架构师技能矩阵》[5]。


技术分享图片图1-5 App架构师技能图谱

该读什么书?

目前,市面关于App开发的书籍,较多以片面的技术开发为切入点,未能对移动应用开发进行系统性的讲解,尽管可以令读者在短时间内掌握App开发方法,但是随着App使用越来越多,App架构越来越复杂,从长远来看,我们需要的不只是普通的App开发人员,更需要一个能从架构体系上对App开发有全面了解并能全程掌控的技术人员。这里推荐一本书《App架构师实践指南》

本书第一篇从App系统架构师的成长路线轻松切入,一目了然地让读者明白App架构师到底是做什么的,然后通过App基础语法、开发工具等基础知识,阐述了App开发的基本功。第二篇正式展开描述了架构师必备的关于App开发过程中所需的综合技巧,其中涵盖了App常用模块设计、App架构和重构、质量和稳定性、性能优化、安全逆向及热门技术等内容,深入浅出地将一个合格架构师应该掌握的内容娓娓道来。第三篇从团队合作的角度描述了App架构师如何高效地开发和管理一个App项目,并使该项目具有可持续发展的可能。第四篇则以轻松的口吻向所有希望通过本书完成App“码农”向“架构师”升华的程序员们介绍了一些心得体会。

移动互联网是未来物联网世界和大数据世界的基础设施,App开发是移动互联网目前产生价值最核心的技术。我们有理由相信,随着App开发需求的日益强盛,App架构师也会越来越得到重视,并成为App开发产业的中坚力量,那么这本书就能给予这些人希望和助力。


技术分享图片

《App架构师实践指南 》

  SkySeraph 潘旭玲 著

点击封面购买纸书


一本讲解从程序员转变为架构师需要了解的技能和思想,明确地给程序员指引了移动架构师成长的路线,是想成为架构师的程序员实用指南。

全面介绍了在移动应用开发的架构设计和性能优化方面的知识,是架构师的必备书籍 。讲述了移动应用架构师需要了解的技能、思想等整体的发展方向,是移动架构师成长的路线图。

读者不仅可以学习到移动应用的开发技术,更能收获到在实战项目中会用到的各种工程化的知识,是架构师的学习宝典 。

本书目录:

第一篇 基 础 篇 

第1章 App架构师成长路线 2 

1.1 架构师定义 2 

1.2 程序员发展路线 3 

1.3 App架构师技能矩阵 5 

1.3.1 App架构师画布 5 

1.3.2 技能图谱 5 

1.4 本章小结 6 

1.5 推荐资料 7 

第2章 App基础语法系列 8 

2.1 编程语言 8 

2.1.1 那些年,那些语言 9 

2.1.2 聊聊Swift 11 

2.1.3 Swift 3和Java 8新特性 13 

2.2 面向对象思想 14 

2.2.1 编程范式 14 

2.2.2 封装、继承与多态 15 

2.2.3 内部类的使用和思考 17 

2.3 线程与进程 19 

2.4 反射、注解与泛型 21 

2.4.1 反射与注解 21 

2.4.2 泛型 23 

2.5 本章小结 24 

2.6 推荐资料 25 

第3章 App开发工具系列 26 

3.1 IDE 26 

3.1.1 android Studio 27 

3.1.2 Xcode 29 

3.2 编译调试 29 

3.3 版本管理 31 

3.3.1 代码管理 31 

3.3.2 Git分支管理 32 

3.4 产品设计 34 

3.5 程序员珍藏 35 

3.5.1 抓包工具 36 

3.5.2 ADB 36 

3.5.3 Chrome开发插件 37 

3.6 本章小结 38 

3.7 推荐资料 38 

第4章 App SDK使用系列 39 

4.1 从Lifecycle说起 39 

4.2 大话UI 41 

4.2.1 关于布局 41 

4.2.2 常用控件 41 

4.2.3 自定义View 42 

4.3 存储和网络 43 

4.4 本章小结 43 

4.5 推荐资料 44 

第5章 开源库的选择和使用 45 

5.1 关于开源 46 

5.2 开源库的选择 46 

5.2.1 开源项目选择 46 

5.2.2 关于License 47 

5.3 开源库的使用 48 

5.4 本章小结 49 

5.5 推荐资料 49 

第二篇 核 心 篇 

第6章 App常用模块设计 52 

6.1 基础组件库 52 

6.1.1 构建你的基础组件库 53 

6.1.2 不得不说的图片库 54 

6.1.3 浅谈网络库和加密 61 

6.2 常用业务模块 65 

6.2.1 启动引导模块 65 

6.2.2 注册登录模块 66 

6.2.3 运营统计模块 67 

6.3 编译打包 68 

6.3.1 打包方式和流程 68 

6.3.2 Gradle实用技巧 71 

6.4 版本适配 75 

6.4.1 ios App适配 76 

6.4.2 Android App适配 77 

6.5 本章小结 78 

第7章 App架构和重构 79 

7.1 从组件和模块说起 80 

7.2 组件化、模块化和插件化 80 

7.2.1 三个概念 80 

7.2.2 App插件化 82 

7.2.3 App组件化 83 

7.3 UML基本功 86 

7.3.1 UML工具 86 

7.3.2 常见UML图 87 

7.3.3 UML实例 88 

7.4 大话设计模式 88 

7.4.1 六大原则 89 

7.4.2 设计模式总览 89 

7.4.3 设计模式实践 90 

7.5 接口设计 91 

7.5.1 API,What and Why 92 

7.5.2 How API 92 

7.6 常见架构模式 95 

7.6.1 MVX模式 95 

7.6.2 常见软件架构 97 

7.6.3 从组件化角度看App架构 100 

7.7 重构未眠夜 102 

7.7.1 重构概览 102 

7.7.2 架构重构 103 

7.7.3 代码重构 104 

7.8 架构设计够了么 106 

7.9 本章小结 106 

7.10 推荐资料 106 

第8章 App质量和稳定性系列 108 

8.1 质量标准和稳定性指标 109 

8.1.1 应用的核心质量 109 

8.1.2 稳定性衡量指标 109 

8.2 质量和稳定性手段 112 

8.2.1 质量监控 112 

8.2.2 问题处理原则 115 

8.2.3 App持续集成 115 

8.2.4 代码质量监测 125 

8.3 笑谈Crash 138 

8.3.1 Crash基础和原理 138 

8.3.2 Crash收集和统计 142 

8.3.3 Crash分析 150 

8.4 测试专场 160 

8.4.1 测试综述 161 

8.4.2 兼容性测试 165 

8.4.3 性能和安全性测试 174 

8.4.4 自动化测试 174 

8.4.5 A/B Testing 180 

8.4.6 代码覆盖率 182 

8.4.7 线上演练 183 

8.5 本章小结 183 

8.6 推荐资料 183 

第9章 App性能优化系列 185 

9.1 性能分析 186 

9.1.1 性能维度 186 

9.1.2 性能优化 186 

9.1.3 性能测试平台 187 

9.2 硬件性能优化 187 

9.2.1 电量信息获取 188 

9.2.2 耗电分析 190 

9.2.3 电量优化 191 

9.3 UI和CPU性能优化 194 

9.3.1 基础原理 194 

9.3.2 流畅度度量 196 

9.3.3 卡顿分析和优化 201 

9.4 内存性能优化 206 

9.4.1 内存机制和原理 206 

9.4.2 内存分析工具 210 

9.4.3 泄露和溢出 210 

9.4.4 内存性能优化 212 

9.5 网络性能优化 215 

9.5.1 网络性能概述 216 

9.5.2 网络性能测试和流量度量 218 

9.5.3 网络性能优化 220 

9.6 App包Size优化 223 

9.6.1 App包Size优化概述 223 

9.6.2 App包Size分析 224 

9.6.3 App包Size优化 227 

9.7 App启动速度优化 230 

9.7.1 App启动方式和流程 230 

9.7.2 App启动时间度量 232 

9.7.3 App启动速度优化 234 

9.8 App代码优化 235 

9.9 本章小结 240 

9.10 推荐资料 240 

第10章 App安全逆向系列 242 

10.1 逆向概述 242 

10.1.1 App包组成 243 

10.1.2 逆向工具 245 

10.1.3 Root和越狱 247 

10.1.4 二次打包 247 

10.2 逆向分析 248 

10.2.1 静态分析 248 

10.2.2 动态分析 249 

10.2.3 Hook和注入 249 

10.3 安全测试 251 

10.4 安全建议 252 

10.4.1 混淆和签名 253 

10.4.2 加固加壳 262 

10.4.3 安全编码和隐私 263 

10.5 本章小结 265 

10.6 推荐资料 265 

第11章 App热门技术 267 

11.1 进程保活 267 

11.1.1 基础知识 268 

11.1.2 保活方法 271 

11.2 MultiDex 271 

11.3 RxJava 273 

11.3.1 RxJava基础 273 

11.3.2 RxJava应用实例 276 

11.4 Hybrid 281 

11.5 HotFix 282 

11.6 AOP 283 

11.6.1 OOP与AOP 283 

11.6.2 AOP应用实例 283 

11.7 本章小结 286 

11.8 推荐资料 286 

第三篇 产 品 篇 

第12章 App是如何练成的 290 

12.1 App练成 290 

12.2 开发流程 291 

12.3 也谈版本号 292 

12.4 本章小结 293 

第13章 项、产、设、运“四天王” 294 

13.1 项目管理 294 

13.1.1 敏捷Scrum 295 

13.1.2 班车模式 298 

13.2 产品思想 298 

13.2.1 产品经理 299 

13.2.2 产品思维 299 

13.3 设计理念 302 

13.3.1 UI与UX 302 

13.3.2 设计理念 304 

13.4 推广运营 306 

13.4.1 运营指标 306 

13.4.2 大话推广 309 

13.4.3 运营之道 310 

13.5 本章小结 310 

13.6 推荐资料 310 

第14章 我的高效团队 312 

14.1 从代码规范开始 312 

14.2 不得不说的Code Review 313 

14.3 晨会,高效一天的开始 315 

14.4 沟通和团建 315 

14.5 别忘了技术分享 316 

14.6 面试,面试,再面试 317 

14.7 自管理,扁平化 318 

14.8 最后,聊聊加班 319 

14.9 本章小结 319 

14.10 推荐资料 319 

第四篇 拓 展 篇 

第15章 架构师那点事 322 

15.1 大话全栈工程师 322 

15.2 架构师思维 323 

15.3 学而时习之 324 

15.4 软技能 325 

15.5 本章小结 326 

15.6 推荐资料 326 


技术分享图片

《深入理解Spring Cloud与微服务构建》

方志朋 著 

点击封面购买纸书


谈到微服务,大家众说纷纭,但却很难有一个清晰的概念来描述。微服务不是“银弹”,我理解的微服务是一种文化,而我们要做的就是将微服务的理念运用到实际开发中。经过一系列的技术选型,最终Spring Cloud凭借其成熟的组件、完善的一站式解决方案,最终成为了我们落地微服务的选择。

此时的Spring Cloud相关资料在国内还是凤毛麟角,没有完整的中文书籍和教程可以参考,只有官方的英文文档以及网上零零散散的教程可以阅读。就是在这种情况下,本书的作者方志朋在公司技术选型以及后续的微服务落地过程中,逐渐有了自己的积累和理解,同时在博客中连载了“史上最简单的Spring Cloud教程”。此教程一出,就受到广大程序员的欢迎,因此最终整理为此书。

纵览全书,文字清晰明了,通过理论结合实践的方式介绍了Spring Cloud的每一个组件的实践,并解读了部分源代码。图文并茂,语言朴实,不愧为“简单”之名。本书融合了作者实施微服务的一线经验和心得,具体指导了Spring Cloud在落地方面的实践,非常值得参考。


技术分享图片

《微服务分布式架构开发实战》

 龚鹏rico 著

点击封面购买纸书


本书并没有过多的探讨理论性的东西,基于现有成熟框架,围绕实际项目中遇见的具体需求,以微服务分布式架构的角度去逐一分解并且实现这些需求。掌握这些知识的读者,完全有能力快速搭建出可靠、高效、灵活的微服务分布式架构。

技术分享图片

点击图片报名

今日话题

说说你对架构师的认识?截止时间4月15日17时,留言+转发本活动到朋友圈,小编将选出3名读者赠送异步新书一本。

延伸推荐

2018年2月新书

2018年1月重磅新书

小学生开始学Python,最接近AI的编程语言:安利一波Python书单

政策升温:大家都在学大数据,一大波好书推荐

8本新书,送出一本你喜欢的

AI经典书单| 入门人工智能该读哪些书?


技术分享图片


长按二维码,可以关注我们哟

每天与你分享IT好文。


在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步图书一本。赶紧来参加哦!

扫一扫上方二维码,回复“关注”参与活动!

点击阅读原文,购买《App架构师实践指南》

阅读原文


以上是关于App架构师成长路线的主要内容,如果未能解决你的问题,请参考以下文章

架构师成长路线图

架构师成长路线图

架构设计杂谈001-软件开发人员的成长之路

架构师花费近一年时间整理出来的安卓核心知识,移动架构师成长路线

java架构师成长路线-高并发网络编程的分类

我用了7年时间成长为阿里Java架构师,你呢?(附学习路线图)