Android开发如何学习,鸿洋推荐,必属精品,手把手教你写Android项目文档

在这个互联网上,信息是爆炸的,知识是过载的,观点是鼓噪的,热点是速朽的。而反过来,「专注在一件事上,精益求精、持之以恒的态度和行动,则是最为稀少与珍贵的。」

我一直都相信一句话——「具备突出的优点比没有明显的弱点要重要的多」。

对此,我自然而然地就想到了业界常说的“T”型人才,要高效地成长为“T”型人才,我们得先做出那一竖,即「应先在某一领域深入钻研后再去涉猎其他领域,这样更能触类旁通,对提升那一横的含金量也很有好处。」

而不少事实也证明了,「浅尝辄止的人很可能将一无所获,而专注投入走到最后的人将会获得超额收益。并且,每个人的精力都是有限的,如果你不专注,就很有可能永远在多个“缓慢起步期”徘徊。

并且,人是无法做到十全十美的,因为可提升的方面实在太多,在有限的精力与时间之下,我们只能竭力发挥自己的优势,将其发挥到淋漓尽致。对此,我们需要「学习齐白石先生那种长期专注和一丝不苟的精神,去把一件事情做到极致。」

6、花费20%的时间去涉猎不同领域的知识

「学习高手通常都会有意识地把不同领域甚至不同学科的知识摆放在一起,然后尝试去分析、比对它们之间的潜在关联,甚至当那异质的素材堆叠在一起时,仅仅是潜意识的推动,就可以让这种隐藏的关系浮出水面。」

在当今,有很多医学的难题长期无法解决或者没有进展的一个主要原因就由于大多数的医学研究者因为多年专业教育塑造的知识壁垒导致缺乏足够的知识广度而造成的。

因此,我们需要需要去花费20%的时间去涉猎不同领域的知识。在学习时间的分配上,我通常会采用「二八分配」的原则,即把80%的时间专注在主业上,把剩余的20%的时间用来去接触各种不同领域的知识或补足自己的知识短板。

知识短板会严重阻碍我们进步。准确识别它们的最佳方式之一就是「看看自己在哪些工作上花费了大量时间,或者一直进行重复性的劳动」。例如没有掌握键盘快捷键可能就是一个知识短板。

7、构建呈阶梯式难度的关卡

人是需要一些挫折、失败或者高难度的挑战来刺激的。如果总是一帆风顺,就会一直待在自己的“舒适区”里不肯出来,潜能就无法被充分地激发。

因此,我们应该「为自己的学习适当地增加必要的难度,例如在学完知识后延迟一段时间再做练习,而这种稍难的考验正好能强化我们对这些知识的存储和构建。」

我们应该学会去「构建适合自己的“个人挑战阶梯”」,拿学英语来说,一个比较好的”英语学习挑战阶段“如下所示:

背单词 => 考托福 => 考 GRE => 听英语电台(VOA、BBC)=> 听各种地方口音的英文 => 英语脱口秀

遇到的挑战越大,获得的快感也越强。好的挑战阶梯的设计能够给与我们足够的挫折与失败,而这将会大大加速我们的成长速度。

「我们应该做一个主动探索的学习者,不断地为自己设计出有难度的”非标准动作“,在挑战中获得才能的提升与飞跃。」

8、如何更加高效地读书?

要想真正掌握一本书的核心内容,需要读三遍。

  • 第一遍:「细读,目的在于完整阅读全书,并且划出重点,写上读书笔记。」

  • 一个月后读第二遍:「扫读,主要快速翻阅第一遍阅读时做的笔记和划的重点,目的在于加深记忆。」

  • 半年后第三遍:「忆读,读的时候只看目录,然后去回想内容,如果回想不起来,再去进行扫读。这样三遍下来,基本上一本书的核心内容就能够很好的吸收。」

9、切忌完美主义

学习不是要么0分,要么100分的。80分是收获,60分是收获,20分也是收获,「有收获才是最重要」。但是因为着眼于自己的不完美,最终放弃了,那就是彻底的0分了。

「不完美其实是常态,根本不会影响我们学习更多更深入的内容」。但是在自学过程中,很多同学却要求自己在自己制定的每一步计划中都达到“完美”,才进行下一步。最终结果,通常都是“放弃”。

而不要“完美主义”,不代表学习可以草率前行。「每个人都必须要找到适合自己的学习节奏」。如果在自己又因为自己的学习进度而沮丧的时候,问自己一句:是不是自己又犯“完美主义”的毛病了。

10、不要过度“学习路径依赖”,学习要冲着自己的目标去。

例如想学机器学习,就去直接学习机器学习。学习过程中发现自己的数学不够用,再回头补数学即可。例如我之前在写 深入探索 Android 内存优化(炼狱级别) 与 深入探索 Android 包体积优化(匠心制作)时,发现有不少优化方式都使用到了「编译插桩 + Gradle 自动化构建」相关的技术,因此,我又回过头去系统学习了编译插桩与 Gradle 自动化构建的知识。

11、不要迷信权威的“好”教材、不要看不起“薄薄”的“傻”教材

每个人必须要去探索学习如何寻找适合自己的学习材料。适合你的教材不一定是权威的,「可能有一些你看不起的学习材料,就是是你入门某个领域的关键。」

「**先用薄教材入门,再找“厚”教材,是我百试不爽的学习方法。因为“薄”的教材能让你以最快的速度看完,对整个学科有一个全盘的认识,薄会将你入门这个领域的难度降至最低,短期学习完之后会让你产生更多的兴趣与成就感。**这一点往往更加重要,因为学习,不是100m短跑,而是加长版的马拉松。」

12、不要迷信单一教材。

在大多数情况下,学习不是一本固定教材可以搞定的。非要找到一本“最适合自己的”教材,然后就一头扎进去,其实是不科学的。

建议每一个技术点都需要「筛选多个优秀资源去进行 学习、实践、思考、总结。因为不同的作者对同一个事物会从不同的角度做解读,这能够帮助你更深刻的认识一个概念。」

13、学会复盘

「在每天晚上睡觉的前半小时之内,我们需要复盘当天的学习情况,哪些完成哪些没完成的需要记录,为明天做一个衔接的准备,以确保当前的学习进度是可控的。」

14、量变到质变

仅仅对着一个问题思考,很多时候都是死胡同。因为我们见识的还不够多,就不足以帮助我们去总结出更加“普遍”问题解决的规律。

我们不要企图通过一个问题就理解问题的本质,这其实和企图通过一本教材就精通一个领域的想法是一样的,是不现实的。

其实大多数问题,都是需要“回头看”的。对一个领域理解的越深入,回头再去看那些曾经的问题,都会产生新的视角,对于很多曾经想不明白的问题也豁然开朗。这也是“进步”的根源。「很多时候,你发现对一些问题“百思不得其解”,或许不是因为自己“笨”,而是因为“还不够努力”。」

2如何分析问题?

1、分析问题的重要性

只有「挖掘出问题的核心和根本」,才能针对性地提出改进或者完善流程,来避免类似的问题再次出现。

2、5WHY 分析法

核心是「追究根本原因」。例如针对线上的屏幕适配问题,我们可以提出五种对应的改进方案:

  • 1)、开发者要吸取经验,尽量采用普适性较强的写法。
  • 2)、对一些组件进行封装,避免类似的适配问题。
  • 3)、有新设备上市,要尽早采购。
  • 4)、QA 的测试用例要多人评审,尽量保证用例覆盖全面。
  • 5)、通过一些自动化检测手段,对适配问题进行检测。

3、第一性原理

有问题时,运用第一性原理,多读官方文档或源码。阅读源码的本质:优秀框架背后的「设计模式与架构」。

此外,对于一些难以用技术解决的问题,可以从需求的角度去解决。

3学习十步法

对技术人成长最重要的三个因素通常都包含如下三个要点:

  • 1)、「学习-不断提升自身深度与广度的能力」。
  • 2)、「思考-即解决问题的能力」。
  • 3)、「实践-大量的实践能让我们真正地理解一个技术的本质」。

而学习十步法的精髓就在于「学习-实践-(思考出问题-学习-实践)-掌握-教授」这一系列过程。注意()内的过程(这个过程也被称为探索)通常需要多次反复进行直到最终掌握这个技术点。

「学习十步法充分利用了人天生的好奇心来帮助我们吸收更多的知识,这将会持续不断的激励我们通过实践向着目标前进,而不仅仅是读书或者听教学视频。」

在开始使用学习十步法之前,首先需要明确的是,「学习计划最好能结合工作计划,理论结合实际,快速学以致用」。因此我们应该「优先学习的是工作中会用到的或将会用到的技能」。

在完成了自己的本职工作之后,我们应该去尽量地考量公司中各个系统和业务模块,看看有哪些不合理和可以改进的地方,然后尽力地提升自己相关方面的技术,并去识别和优化它们,在优化的过程中我们可以优先参考其它公司的技术方案。

1、了解全局

了解全局的作用在于我们可以「快速甄别,决定哪些事情值得花费时间」,例如「做一些基础性的研究,例如网络搜索、查阅一下该主题的书的介绍性章节。」

2、确定范围

我们应该「聚焦学习范围,关注重点内容」。这儿需要充分利用自己在第1步中收集到的信息,找出自己的学习范围,也可以借助自己的学习理由来决定学习的范围。

选择一个专注而聚焦的范围,「明确学习范围的时候需要尽可能地充分考虑时间因素与衡量时间成本的性价比。」

那么,如何衡量时间成本的性价比呢?

  • 1)「评估掌握一项技能在短期和长期内对我们的重要性。」
  • 2)「我们应该对需求和时间成本评估,决定需不需要学,以此确定学习的目标。」
  • 3)「一些简单、仅仅需要了解的知识点利用碎片时间去完成即可,但如果是需要掌握甚至“精通”的一些知识点,我们需要为它划分出一整段的时间。」

此外,在这一步中,有两个点需要注意:

  • 1)有些知识的获取是需要「循环渐进」的,除非你已经有了非常扎实的基础,否则跳级进阶只能是吃力不讨好。2)有些知识点例如「源码、晦涩的一些概念」等等,只要它们是足够「重要」的,弄明白它们就是「非常值得」的。

3、定义目标

好的成功目标应该是「具体的、无二义性」的。例如在学习 ASM + Gradle 时,我定义的目标是:使用 ASM + Gradle 完成一个全局的 Bitmap 监控组件。

https://juejin.im/post/5e780257f265da575209652c#heading-70

4、寻找资源

目前,我学习的主要信息来源包括如下 「九个渠道」:

  • 1、「官方文档」:第一手资料。
  • 2、「源码」:第一手资料。
  • 3、「Github 开源项目」:定期查看 GitHub 的热门榜,看有没有需要的优质项目(至少每周一次)。
  • 4、「Awesome-Android-NoteBook && 豆瓣读书 - 计算机科学经典书籍」。
  • 5、「开源的权威资料」:例如《On Java8》即 Java 编程思想 (第五版)https://lingcoder.github.io/OnJava8/#/book/01-What-is-an-Object
  • 6、「极客时间」
  • 7、「慕课网」
  • 8、「百度云盘」
  • 9、「WanAndroid 优秀文章」

*鸿洋注:*开心,提到了 wanandroid.

在这一步,记得也要寻求一些好的薄教材/入门文章,在我们刚开始学习这个主题时,便会从它们开始。

5、创建学习计划

我们需要「根据自己个人的时间去制定适合自己的学习计划」。这一步我们可以把它看作自己写书时候的大纲,这里通常可以通过查阅图书的目录进行。

6、筛选资源

计划学习前要考虑清楚,一旦开始执行学习计划,就应尽量保持少的变更,除非后续发现计划有问题。因此这里我们需要多加一步去「选取品质最高的资源覆盖学习计划,对于一些购买性的资源可以通过查看评论的方式进行评估。」

7、开始学习,浅尝辄止

这一步的关键在于「过犹不及」。你会很容易就失去自控力,开始消化计划学习中列出的所有资源。但是,你会发现,如果你能经受住这样的诱惑,你会取得更大的成就。我们应该要「专注于掌握自己所需的、能在下一步动手操作的最小量的知识。」

「好记性不如烂笔头」,在学习的过程中,学习的东西至少要做好笔记(印象笔记、有道云笔记),并且后续需要「按照一定的间隔时间去反复复习」。

8、动手操作,边玩边学

万事无他,唯手熟尔。教育的首要目标,并不在于”知“,而在于”行“。

对于计算机领域的学习来说,教材的意义其实远远小于实践的意义。

真正动手实践去编程是异常重要的。这就好比学游泳,必须下水去游泳;或者学开车,必须亲自上路。否则你说的再头头是道,一个小学生文化水平的人,只要他开过车,游过泳,都能在这两个领域瞬间秒杀你。

真正的学习上的提高,就发生在实践的过程之中。例如,「debug 就是一种高效的实践方式。它不仅仅是找到代码错误,解决错误的手段,其实更是一个重要的学习手段。

因此,我们应该「通过探索和实践进行学习,在实践中碰到的问题会引导着我们走向真正重要的方向。当回过头寻找问题的答案时,不只是这些问题迎刃而解,而且你记得的东西比你学习到的东西多得多,因为你所学到的都是对你很重要的东西。

此外,在实践中,「在某些关键动作上刻意练习,也会取得事半功倍的效果」。因为不停的练习和思考可以改变大脑结构,大脑像肌肉一样,挑战越大,影响越大,学习更高效,并且也会产生突破性。

9、全面掌握,学以致用

我们「没有必要把收集到的所有资源全部仔细看一遍,而应该以解决在动手操作中发现的问题为主要目的」。试着把自己正在学习的内容与最终目标关联起来。「你掌握的每个模块,都应该以某种方式推动着你向着终极目标前进。」

在这一步中,我们可以将测试练习与分散练习这两种学习方式结合起来使用,以达到最佳的学习效果。同时,我们最好能给自己设置一系列的挑战阶梯,例如对于学习音视频的同学可以给自己设置如下的挑战阶梯:

使用 Android 音视频 API实现一个播放器 => 使用 FFmpeg 与 OpenGL 实现一个播放器 => 定制 FFmpeg 的源码、掌握 OpenGL/Vulkan 的高阶用法实现功能更加强大的播放器

学习某一个技术其实到最后会形成一颗「技术树」,我们可以使用「思维导图 => XMind || 幕布」进行描述。而对于一些涉及「流程」相关的技术点,我们可以使用「ProcessOn」来画流程图。

10、乐为人师,融合贯通

如果你能将自己所学的东西都教给别人,那么你不仅能够记住,而且还能够理解得更加深刻。

重点在于,我们需要花时间将自己所学到的东西从大脑中提取出来,以别人能够理解的方式组织起来。「在经历了这整个过程之后你会发现,有很多你以为自己明白了的知识点,其实并没有摸透。这一步对保持信息以及深入理解知识而不仅仅只是流于表面至关重要。」

在教学的过程中,有一些内容是必不可少的,例如:

  • 「是什么?」

  • 「为什么?即它解决了什么问题。」

  • 「优缺点。」

  • 「对比同类技术的不同/相同点。」

  • 「如何使用?」

  • 「如何解决问题的?即内部的实现原理。」

  • 「归纳时注重核心知识与关键细节,并尝试去类比不同领域或不同学科之间的知识。」

  • 「重要的过程、结论。」

分享就是一种很好的教学方式,而且它的时间成本也相对较低,目前常见的有「三种分享方式」:

  • 1)、「博文文章/专栏」
  • 2)、「网课技术视频」
  • 3)、「部门/社区内的技术分享」

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!

最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。

希望大家都能找到合适自己满意的工作!

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-MeTwWgfs-1712616899979)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-RSGwFI72-1712616899980)]

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值