开头

在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。 我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的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. Datawahle文化衫来了!
  2. PTA基础编程题目集-7-16 求符合给定条件的整数集
  3. leetCode-删除排序数组中的重复项
  4. python中用于绘制各种图形、标注文本_python ImageDraw类实现几何图形的绘制与文字的绘制...
  5. 上课点名app_【APP种草】网瘾少年的自我救赎之最强锁机软件
  6. 线性瘤是良性吗_良性聚会:露营者如何构建开放源代码工具来解决时区
  7. Spark中foreachPartition和mapPartitions的区别
  8. 支持位移操作的环形字符串
  9. 8.0系统机器激活XPOSED框架失败The Xposed framework is not installed
  10. 收到阿里年终奖后,我感觉穷的睡不着,网友:贫穷限制了我的想象力
  11. linux 字符驱动 tty,打通linux的tty驱动的数据链路
  12. 【Opencv】 于仕琪 人脸68个特征点分布情况
  13. kindeditor跨域上传文件php,WebClient实现kindeditor跨域上传图片
  14. html调用js函数取随机返回数值并自动显示在html页面
  15. org.jboss.netty.internal.LoggerConfigurator.DESCRIBED is already registered
  16. 勒索病毒修复SQL数据库修复文档文件服务器中毒远程处理数据恢
  17. 2019二级建造师-法规-基础班-精讲班课程更新进度
  18. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)
  19. 正态分布下的最大似然估计
  20. 【Spark】基于Spark的大型电商网站交互式行为分析系统项目实战

热门文章

  1. RESTEasy的一些事情--配置
  2. 一般学3D建模多久能上手?
  3. Small World Theory
  4. CMMI五个级别旁解
  5. linux查看操作系统命令
  6. 湖南大学21夏训练三4.打牌
  7. Bigdecimal运算及注意事项
  8. 灵云快智-智能硬件-儿童手表 解决方案
  9. popen函数的简单应用
  10. c语言分治法实验报告,分治法实验报告范文