很多做android开发的同学都想更快更省。真的是这样吗?有了前人的经验,我们的目标可以更加明确,可以有计划、分阶段地去学习,但学习的方式不会改变。我们会遇到别人遇到的事情。那么在这里,我想表达一下我们对android学习之路的理解,分享一下我收集的前辈们的经验,让前方的路不再黑暗,让脚下的路更直,仅此而已~作为一个人,我们在迷茫时怎么想,如何看待自己,如果你不知道,那么请阅读以下内容:开诚布公地继续抱怨,分享你自己的学习想法。我要看我的文章至少有1年以上的开发经验嘛,至少都是精通初级coder。在这个阶段乃至接下来的几个阶段,Androidcoder其实是焦急和焦虑的。一是环境没有以前那么火爆,找工作更难了。对coder的要求也越来越高;二是码农在学习过程中发现了很多知识点和方面。这些东西太多了。读完A,BCDEF就会联系起来,涉及到很多java等其他知识点,比较难,也比较费时间。以上种种,让大家不再有信心,环境也变得紧张起来,于是产生了焦虑。你不必因此太着急。着急是可以的。这些东西迟早会成为我们的食物。我们必须学习并度过难关。当然,我们越早通过越好。这涉及到如何学习,会学习的coder效率会很高,学得更透,记得更牢,还会记录相关的技术博客,所以基本上学了哪些知识点没有吸收的就不用再重复学过的,基本遵循以下原则:全面学习“我知道我不会”的知识,建立自己的“知识体系”学习“我不知道我不会”的知识knowhowIcan'tknowit"我推荐的学习思路:学会记录未知平时注意记录那些你没听过或者不懂的点。如果有链接,就把链接写下来,然后根据自己的理解进行归类,并分清轻重缓急,让自己时刻有一个清晰的认识。我们不知道我们知道多少,但我们知道的很少,我们想看的时候可以马上找到相关的资料。学习选择自己能学到的知识点是最好的。不管我们水平多高,总有可以学的东西,那我们应该学什么呢?当然,我们应该学习那些我们认为我们可以理解和学习的东西。它与您在工作中使用的很接近。完全不懂的知识点记得去学习。学习是没有用的。如果你对这个知识点完全不懂,说明你对相关的基础知识完全是一片空白。您必须从头开始从基础知识开始。这就像一棵技能树。你还没有点击它!对于不懂一半的知识点也说明你缺乏相关的基础知识。想要学,就得从基础知识开始,但相对难度要低很多。学会系统地学习知识点。一般大家都知道,较大的知识点是由许多相互关联的小知识点组成的。我们知道也不知道。简而言之,必须有一些或很多。一个不熟悉的知识点如何学习?我建议在谷歌、百度、简书、掘金等各大平台搜索这个知识点的关键词,然后粗略的看几十篇或者一定数量的文章,梳理一下涉及到多少个小知识点这个知识点,然后自己记下来,整理归类写一篇概述文章,然后从简单的开始,按照涉及的顺序一个一个学习,这样才能有效的做到系统学习。东看一锤,西看一斧,到头来要花不少时间。你们中的大多数人还有很多东西是你错过的,你觉得你没有学透。目前的开发知识是系统的。我们去学的时候也要有系统,才能有效果。了解如何有效保存学习经验。这是上述的延续。我们终于搞清楚了一个小知识点。学透了大家很快就会忘掉,我也是!非常透明的理解在几天后开始变得模糊。目前行之有效的方法只能通过敲完demo后系统地写技术博文来实现,以获得代码层面的透明。这样做的好处是:第一,我们在纸上忘记后,可以通过博文马上回忆起来;第二,我们选择系统地学习,中间随时可以停下来去做手边更可怕的事情。学完了再回去继续学习这个知识点,因为通过前面的考察已经建立了学习序列,可以继续这个序列去学习未完成的部分。当你在工作的时候,你的大部分空闲时间都是碎片化的,以至于我们分段学习新知识。上面系统的学习计划特别适合我们。技术博文,没有系统的盲目学习是一大损失。我不记得我之前学到了什么。可见如何学习。懂得学习是一门大学问,也是一个coder走向成熟的标志。对我们影响最大的是如何学习。想想看~2018年的冬天,真的好冷。每个人都在谈论裁员。其实裁员一直都有,只是2018年的时候更多了。Android已经10年了,积累了太多的技术、知识点、技能、思想。这些前辈们知道这一点,并且正在创造新的想法。对于广大的底层码农来说,想赶上去是很难的。别说是自己创造的,但是现实中我们学习了很多开源框架,在实践中只是知道怎么用,更不要说有没有看过源码,甚至原理,什么的作者用来实现它的技术,这是大多数码农的现状,没有成长。说到大环境,在寒冷的冬天,依然有不少企业重新招人。在移动设备深入人心的今天,谁能离不开移动物联网设备呢?庞大的设备数量决定了移动终端的市场需求依然旺盛。企业需要什么样的移动打码机,中高端?从我们编写页面代码的入门级开始,要成长到中级并不容易。事实是平均2-3年成长到中级的人并不多。公司再次面试时,只能通过大量面试才能找到合适的高级开发人员。这个过程费时费力,说明大家的水平相对于需求来说还是太低了,需要加强!冬天冷的不是市场,而是行业的水平低下。我们这个移动开发行业,不进则退,永不改变。如果大家努力一年,都能有不错的收获,面试的机会也会大很多。《薪资Android中高级开发访谈——未来之路》的作者,对于迷茫的你,告诉我们,如果你不超过20K,说明你的Android不够好。一方面,技术能力和知识面太窄。建议尝试多个模块功能。不能只专注于自己公司的项目,其他方面也不是很精通。这样的结果对自己的发展并不是很好。(比如做好自己公司的功能,你不懂。问问其他功能模块,你也不知道。建议多方面开发,多做数据分析。比如,百度指数,阿里指数,APP功能指数,今日头条指数。然后自己往这几个方向发展。比如2018年到2020年,项目中的中小视频,社区中的中小视频,并且直播都会加入到项目中,有这方面经验的人很抢手)。第二:有的同学真有本事,能行;但如果能继续深入理解原理,或者知道原理,自己解决问题的能力(而不是百度的解决方案)就差了一点。例如,许多人面临面试。他们不会说话,但你可以写啊写啊。为什么不说呢,因为你对系统的认识还不是很清楚,所以不能很好的回答。现实情况是,我们巩固了自己的技术,扩大了知识面之后,20K是比较容易做到的,但是想30K就很难了。那些能在github上自己写开源项目的码农,比如okhttp、retrofit、rxjava等重量级开源框架,只能过50K。让我们体验一下学期中间的差距。你可以通过努力工作20k。经过长时间的努力和积累,你是有希望过30k的。任重而道远,大家要珍惜。期中,平衡工作、生活、家庭、健康是个大问题。只有高效率才是根本出路~如何度过寒冷的冬天?分享一些带有正能量的文章,让我在冬天终于暖和起来。老天总是眷顾爱思考的人,爱思考的人运气一般都不会太差。互联网冬天在哪里?只是你穿的衣服不够多!文章里面作者大概讲到了思考这个话题,我觉得大家应该去看一下自己想想。技术是我们的基本盘,但不是全部。阿里最近不是放了吗?以后其他岗位尽量选择有技术背景的人。我看到这种思路在中国逐渐得到认同,越来越多的企业在做。我们更关心有技术背景的人。这是我们的机会。随着年龄的增长,只有少数人能够顺利晋升到管理岗位。其他学生必须面临工作调动。转岗不是换行业、换产品、换项目经理、换运营等,我们码农都能做到。与编码员相比,这些职位所需的技能和知识不值一提。我们通常对这些职位有深入的了解,有深入的交流经验,知识渊博。相互了解之后,其实我们的coder转这些岗位并不难,而且可以很快上手,但这需要我们提前考虑好自己转的岗位,需要专注,沟通,平时多学习。能在公司内部调动很重要***是的,这样公司对大家的包容度会更高。如果coder打算转行,那就别学别的了,专心研究android技术吧,等他们稳定下来再说python,H5等,毕竟我们是做android开发的,在android找工作发展,其他方向虽然更好但不是公司考虑的重点。android等级怎么划分?我想只有对android开发有全面了解的人才能走得更远。认识自己才是最重要的。我处于什么水平?接下来的重点学习方向是什么,目标是什么?.通常我们知道android的等级可以分为:入门、初级、中级、高级、高级。但这样的划分对我们没有指导意义。针对不同层次Android开发者的不同行为,我们应该如何推进和规划?:技术开发人员、高级开发工程师、技术团队负责人第三层:技术专家、架构师、一线管理者具有实际意义。您可以阅读它以了解每个阶段的技术标志是什么。具有很好的指导意义。除了我同意其他人的观点外,我同意作者达到每个级别的时间。技术等级划分很多,先说这么多吧,期待我以后的更新~不知道大家有没有听过android的技术要点,但是在“寒冬”的今天,有些公司员工已经通过各种方式争夺裁员的人数,就是为了拿到那几个月的补偿!面对这种找工作不着急的老板,面对男单我们是不是应该做点什么呢~Android开发想要进阶,以下几点基本都是逛过去的,你要知道,不仅要提高我们的coder水平,还要在面试的时候问!主要开源框架研究,包括但不限于以下OKhttp/Retrofit/eventbus/Glide/eventbus/Rxjava/blockcanary/mvvp/dagger2。组件化基本上是必须的。插件大公司需要flutter/Dart才能运行。大家要开始学习了,就像我们当年学习kotlin一样。Flutter基本定型。Google第一代是flutter的世界。java部分包括常用数据结构和算法、hashmap、二叉树、红黑树、apt注解、aopstub插入,一套完整的多线程知识点,包括ThreadLocal实现原理android系统原理、Lru算法、Binder机制,EventBus实现原理以及为什么不能跨进程,跨进程的几种方式,AIDL,handler机制音视频开发,直播,点播,音视频通话,音视频会议,短视频,这些不一定要深,但是各大平台的基础SDK必须能够集成,可以基于开源的哔哩哔哩IJKMediaPlayer编写自己的视频、音频播放模块、高级UI、各种性能优化。考了好久了,自己算算,给你多少时间完成上面的内容,但是一旦你完成了上面的内容,那么至少你不用担心面试了,如果你运气好,你也可以借此进入一家好公司。成长回报优秀企业,现在最舒服的地方不是创业,而是那些业务优秀的中型企业。人不多,事少,组织还没有僵化,用少量的人就能保证工资。业务优不裁员无成长之忧,公司氛围轻松愉快。这就是我想去的天堂~那如果你想在图像领域更深入,下面的跑不了:图形图像开发,不限于OpenGLES,EGL,GLSurfaceView,filter,美化、canvas、paint应用层开发以native开发为主,提升性能优化技能(启动耗时、内存、功耗、网络、数据库、稳定性等),达到高级开发者水平,深化Android专业技能提升。主要阅读源码,了解Android开发的常用流程和原则(Activity启动流程、事件分发机制、广播机制、Binder机制、内存管理机制等),向Android架构师方向发展。从平时开发的点点滴滴出发,打算培养Android架构设计能力,这需要更高的视角来统筹App开发。跨平台开发能力。比如RN、Weex、Flutter等。目前大部分公司都需要具备跨平台开发能力,所以我们有必要提升这方面的SDK和框架开发能力。通过研究开源项目或实际项目开发,可以抽象提取有用的SDK和框架供他人使用。研究安卓安全开发。App加固原理及实现,熟悉常用加密方式(如:RSA、DES等)、Https、支付安全等Android自动化测试工具开发。这需要对ADB、Android截图、Android布局分析、Android测试框架等有很好的了解。音视频开发。近两年流行的直播,近两年流行的短视频,都和音视频有关。因此,我们可以了解音视频的编解码器和传输协议。手机游戏开发。游戏给鹅厂带来了稳定的收入,所以这也是一个不错的方向。这就需要熟悉常见的游戏开发框架cocos2d-x和Unity3D图像开发。比如美图秀秀、天天Ptu都采用了图形合成、滤镜等技术,对图像处理的要求很高。AndroidFramework开发高级工程师必须具备系统设计能力,因为仅仅熟悉各种技术,有技术广度和一定的技术深度,其实是不够的。如果你的系统设计能力不到位,可能会导致你在开发系统的时候乱用技术。例如,一些系统有其特殊的业务场景和技术挑战。其实在这种场景下使用“缓存+数据库”的技术方案更合适。但是有些工程师懂很多技术,但是缺乏准确分析系统问题并提出合理技术方案的能力,也就是缺乏系统设计能力,所以他们可能会引入Elasticsearch技术来尝试解决这个问题。那么结果必然是失败的。所以之前很多人问我问题,说我在XX场景下使用了XX技术,但是并没有达到我想要的结果。我帮他看看,这不是必然的吗?你的XX技术应该用在YY场景,但是你用在XX场景肯定不行。这就是系统设计能力的重要性。如何把我们的代码写好,我想这是每个人的终极追求。记得最深的一句话:不管怎样,你的代码首先要可读。这是我刚入行时一位老司机对我的指导。随着学习的深入,学的越来越多,我们对基本功的追求不就是为了让代码更漂亮吗?好看的代码更容易理解。为了易改,设计模式、代码架构、框架设计、MVP(多端分离)都不是最终追求的结果!除了学习不限于以上的各种知识,好看的代码还体现在我们平时对待代码的态度上,体现在我们平时的代码规范上。今天看到一篇文章:程序员:几个月前自己写的代码为什么看不懂?我把平时想说的都说了。这就是平时的我们:代码没有注释。对于复杂的业务,如果没有评论,这会杀死下面的朋友。2-3个月后,我也会自杀。这一堆字是什么?,我想死了。。。写代码的过程好复杂,看不懂,方法好长,看不懂怎么办,妈呀。虽然写的时候很酷,但是等到我们后面修改,增加功能的时候,那时候我们的心一定是碎了的。修改或添加并不容易。越难理解,越难维护,谁写过这样的代码,不要藏起来……所以,设计模式,框架设计,面向接口编程,功能分离,架构分离水平应运而生。代码变量的名字是随机的,x,a,b,c,temp1,temp2,temp3都是东西。我不明白上下文。我真的不知道怎么写。代码总是要求我们知道名字。现在才深刻体会到见名知义的好处。它真的很快,而且是一次非常好的体验。在这里我想说一下,Google的英文名字不太好听。有话说,好想操他……各种方法分工不明确。你在一个方法中写了100行。你让别人怎么看?那么我们应该怎么做呢,做到以下几点:在实现功能之前,我们应该设计好代码的框架层次,这样我们就可以快速了解整个框架的实现,快速找到我们想要的代码,并且可以知道一个优秀而准确的名字,类的作用写注释尽可能详细,不要写太长的方法,也不要写太“漂亮”的代码。有些程序员喜欢写很有个性的代码,喜欢写别人很难看懂的代码。他认为这样可以显示出自己的“Highlevel”,所以说不上是high,只能说代码的可读性太差了,我们要写傻代码,意思是再笨的程序员也看得懂,"foolishcode"!="Low-performancecode"哈,这一点要和中文分开,所以不要写英文注释。功夫在诗歌之外。当我们做5-10年的时候,技术不是唯一的敲门砖,甚至不是最重要的,而是技术以外的东西:人脉、名望、经验,以及逐渐形成的言谈举止等等。但是如何通过“刻意练习”(一个新学的词)来获得这些东西,只要平时有意识地去尝试、去积累、去提高。比如我平时在公司做技术分享的时候,总是要求大家做一个正式的演讲,让听的人干得好,拍得好,提笔认真做笔记。我努力做最好的自己,不结巴,思路清晰,临场发挥。我经常和讲台上的人互动,拉着他谈谈自己的想法。熟悉了这个环境,熟悉了这种氛围,熟悉了这种东西,就可以无形中说话说话了,气场就修好了。当然这还不是全部,还有更多,比如你怎么跟产品、UI、运营沟通,看别人的工作内容是什么,难点是什么,开发涉及到哪些方面,甚至所有其他人的工作内容和工作技能,让你有横向扩展的能力,在一个公司和不同部门之间进行有效的沟通,建立联系,解决问题,梳理冲突的技术人员比一个技术人员重要得多简单的技术人员。同时,这样的人员也更容易获得晋升。与这些部门合作的能力将至关重要。
