开头

在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。 我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的G点。

可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个和计算机打交道的工作,其实不然。软件工程不只是和代码打交道,更重要的是和人打交道,是一份社会性质很强的工作。在大部分公司里面,尤其是大厂,牵涉到的人,组,都是非常非常多的。在小厂,人与人之间交流意见和设计可以口口相传,心领神会,但是一旦人开始多了,就只能靠文档了。除非你可以厉害到一个人把所有代码撸完,不然还是最好老老实实的夯实自己写文档的能力。

如果你有写技术博客的习惯,那么恭喜你,相信你已经对如何抓住文档受众的技巧有所了解了。这对你在大厂生存有很大的帮助。如果没有也不要伤心,这篇文章就是为你精心设计的。

在这篇文章里,我会大致的把一份安卓的项目设计文档的骨架,和一些我工作中实际遇到的正反例都列出来,方便大家以后在工作中实践。

一 、Java 后端

在我写过的 《Android程序员的Java后台学习建议》 中提到,因为 Java 的先天优势,Android 开发者在转岗选择时,转 Java 后端占据很大比例,因为 Java 后端岗位需求量较大,同时技术迁移成本也较低,比如现在 Java 开发中应用最广泛的 Spring全家桶:

作为 Android 开发者,如果你使用过或了解过 Dagger,那么理解和使用 Spring并不难。通过各类注解如 @Contorller@Service@Configuration等去标明类的用途,通过@Autowired 去注入使用的方式,相信会让你倍感亲切。

如果说 Spring 是类似 Dagger 的注入和管理实体的容器框架,那么 SpringMVC 就是基于 Spring功能之上添加的 Web 框架。

对于 Android 开发而言,MVC 肯定是不会陌生的,实际上后台开发人员通常就是写个 Controller 提供个 Model给你。而 HibernateMyBatis 都是持久层框架,属于能方便使用如 MySql 等数据库的 ORM 框架。

如果说 SpringSpringMVC 是 Android 开发者较友好的选择,那么 Spring Boot 则是你的“绿色通道”。 Spring Boot又称之为全家桶,因为它集齐了各类常用的开发框架,同时降低了 Spring 开发的门槛,更是简化了各种配置过程,而且 Jetbrains大家庭支持它!所以现阶段而言,个人认为 SpringSpringMVCSpringBoot 是 Android 开发者学习入门 Java Web 的不错选择。

当然,作为 Android 开发者转后端,最大的问题就是开发思路和领域的变化,你需要关注的不再是当个设备上的业务逻辑,更需要关注的是大数据、并发、性能优化、分布式等等,这些都是转岗的你需要从头开始的,这是无可避免的成本。

二、大前端

大前端在我理解中,一般包括 Web 前端、客户端、跨平台的集合。对于 Android 开发而言,继续从事 UI 与用户交互逻辑也是一条谋生之道,但是受市场红利结束、开发成本等影响,拓展能力成为大前端开发也是趋势之一。

在我的 《我的移动开发春季历程》 说过:随着各类移动跨平台的兴起,在 ReactNative、Weex、Flutter、 等框架的加持下,Android开发的能力已不再局限于 Android 领域,而各大厂商近些年也针对跨平台的不足进行逐步完善。

但这并不意味着原生开发的“没落”!无论哪种跨平台的加持,最终都离不开你的原生系统能力。大潮过去后更多是淘汰“裸泳”,而如今的市场愈发趋向大前端,竞争之下我觉得移动开发的边界可以更广。

所以有 Android 平台存在就会有需求,而利用跨平台开发,能让我们的能力更快的覆盖到 iOS 平台,同时如 ReactNativeFlutterWeex 等,能够让你逐步接触并熟悉 Web 前端的世界,之后如 uni-appmyvueChameleontaro 等框架还能丰富你的小程序能力,从而让你的业务能力走向新的巅峰。

三、物联网

Android 平台和 iOS 平台最不同的就是它的开源和影响力,多年后的今天,Android 已经不仅仅代表着手机平台,在电视、机顶盒、楼宇安防、自动售卖、广告展牌、智能家电、车载等领域都已渗透并精进,就像我 Android QQ 群内的小伙伴,现在还从事 App 开发的反而不多,但是在以上领域继续耕耘 Android 的反而很多。

5G 时代下物联网领域很有可能具备新的机会,华为的鸿蒙智慧屏、无人驾驶的车载平板、其他各类利用 Android 实现的无线智能平台,这都是 Android 开发者可以耕耘的机会。

当然,光是学习或者“纸上谈兵”,最终只会徒生焦虑,所以‘学习最好的方法就是“动手”,开源项目是你最好的学习方法,自己动手练练,才是你“转岗”的最好尝试。

设计模式学习笔记

设计模式系列学习视频

  • 以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容】。

9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)】。**

kotlin和python哪个好?驱动核心源码详解和Binder超系统学习资源,终局之战相关推荐

  1. HTTP流量神器Goreplay核心源码详解

    摘要:Goreplay 前称是 Gor,一个简单的 TCP/HTTP 流量录制及重放的工具,主要用 Go 语言编写. 本文分享自华为云社区<流量回放工具之 goreplay 核心源码分析> ...

  2. 新书上市 | Vue 3.0 核心源码解析,这本书给Vue学习提供新方法

    Vue.js 作为一款极简的 MVVM 框架,因其轻量.易上手,得到了众多开发者的喜爱. 自从 2014 年 Vue 诞生以来,这个框架设计的初衷,尤大说只是为了设计一个让自己用起来舒服的框架,随着受 ...

  3. 干了5Android开发还没掌握-binder-机制、驱动核心源码?我劝你早点改行吧

    bwr.read_consumed = 0; if (copy_to_user(ubuf, &bwr, sizeof(bwr))) ret = -EFAULT; goto out; } } i ...

  4. STM32进阶:使用STM32驱动ST7735S(内附核心源码)

    使用STM32驱动ST7735S(内附核心源码) 感觉很久很久没有来博客更新了,历经千难万阻,终于做出来了TFT显示屏的SPI驱动,这里分享以下核心源码,接下来一段时间开始准备考科一了,后面有时间了再 ...

  5. Dubbo核心源码之SPI扩展

    本文来说下Dubbo核心源码之SPI扩展 文章目录 概述 Java中SPI机制详解 Dubbo SPI扩展 扩展功能介绍 扩展源码分析 ExtensionLoader初始化 配置文件扫描 扩展适配器 ...

  6. 基础:Linux 核心源码是怎么组织的?-转

    本文将重点将将linux核心代码的组织方式. 目录 下面我们就谈谈linux核心源码的组织方式 如何阅读linux核心代码? 在谈linux核心源码的组织方式之前,我们先谈谈Linux核心代码的版本是 ...

  7. 外卖返利系统/美团/饿了么外卖CPS联盟返利公众号小程序核心源码

    我们都知道,目前两家巨头饿了么和美团点外卖都可以获得返现,其中饿了么是返利6%,美团是返利3-5%,具体要根据活动来. 也就是说按正常一个人用户点餐,你可以获得每笔外卖的CPS返利佣金,而且外卖的用户 ...

  8. MyBatis核心源码剖析(SqlSession XML解析 Mapper executor SQL执行过程 自定义类型处理器 缓存 日志)

    MyBatis核心源码剖析 MyBatis核心源码剖析 1 MyBatis源码概述 1.1 为什么要看MyBatis框架的源码 1.2 如何深入学习MyBatis源码 1.3 源码分析的5大原则 2 ...

  9. java linkedlist底层_手写Java LinkedList核心源码

    上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...

最新文章

  1. 【☀️C语言函数传参の结构体数组篇☀️】
  2. vuejs单文件组件:安装 webpack 和 vue-cli
  3. 5.2 使用pytorch搭建GoogLeNet网络 笔记
  4. 前端学习---css基本知识
  5. 关于清空object对象里的属性的两种方法
  6. center.php,mycenter.php
  7. 1-Tenor AF AFT400-实战-基本配置
  8. python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...
  9. oracle linux hugepage,LInux下为什么配置HugePages及配置步骤
  10. SoapUI接口测试——关联——参数化
  11. 台达B3伺服C#类库源码 Class
  12. jQuery封装的获取Url中的Get参数
  13. 蒋方舟:到清华不再做名人 狂热崇拜理工男生
  14. 第9章 保护Web应用----概念梳理
  15. 快速分析京东物流详情,并导出EXCEL表格
  16. 腾讯投 10 亿在武汉建中部最大研发中心
  17. pyinstaller 生成exe之后不报毒的终极方法(亲测可用)
  18. SQL SERVER 字符串转表函数
  19. Python通过m3u8文件下载合并ts视频
  20. html5带拖拽上传的图片gallary

热门文章

  1. html中文乱码怎么解决?
  2. Java Comparator比较器
  3. Illustrate Java Access Levels
  4. Linux挂载硬盘操作步骤
  5. 数据库可以存储哪些类型的数据
  6. 电力系统上的webdraw
  7. golang gin框架 CURD
  8. 【附源码】Java计算机毕业设计体检中心健康管理系统(程序+LW+部署)
  9. Flutter嵌入swift混合开发
  10. Vector多维向量定义