产生了自我怀疑后,我就去找我做运维的堂哥聊了聊,他觉得我现在做教育培训根本不合适,现阶段的我需要知识输入,而不是进行知识产出,并推荐我学习,转行开发岗,并甩给我几十G的视频学习资料。
我觉得他说的很对,因此我开始了自学之路,好在我的实现工作比较清闲,每天按时下班,所以下班后,我就看视频学习,从最基础的开发环境搭建开始,折腾,安装各种软件包,到学习基础语法,再到学习爬虫框架,每折腾出一个小东西,就会带给我成就感与快乐。
第一次面试
很快11月份学校的校招招聘会就开始了,我依然清晰地记得那天我早早的起了床,到学校打印店打印了我的简历,满怀期待的到了招聘会现场。结果却发现,没有几家公司招相关岗位,更多的是,最终也就只投递了一家(现在想想自己当初咋就这么轴呢?不是就不能投?天😅)。第二天早上就收到了面试邀约,约好当天下午一点半的面试时间,为了留个好印象,我又一次早早的出门,提前了半个多小时到了(还提前半小时,真的绝了,面试官是不需要午休的么😅)。然后就是给了我一份试题,让我自己一个人在会议室做题,半小时后,进来了3个面试官,轮流着问我问题,而我也基本都答不上来,场面一度很尴尬,我真的想找个地缝钻进去。没过多久,面试也就结束了,离开了两个面试官,剩下的另一个面试官是我学长,人很好,他可能看出我的尴尬与失落,主动跟我唠起了家常,我也主动向他询问了我的问题,他建议我一定要学好基础,比如最基础的语法,而不是学这种框架,让我别气馁,继续加油。告别学长,坐在回学校的地铁上,我也对这次面试进行了反思,马上下单了这本书,决定系统的好好的学习基础。
起点
==
2018年3月5号,过了这么久依然记忆犹新,因为我在这一天,终于成为了程序员。那天,我穿戴整齐,背上电脑,早早的出门,再一次提前半小时到达了公司。公司的大部分人都还没来,好在几个测试小姐姐提前来了,他们也提前知道了今天要来新同事,领着我到了我的工位。过了没多久,同事们陆陆续续都来了,等大家都到齐后,主管领着我们做了一个破冰小游戏,就是每个人依次介绍一下自己的英文名,最后我要说出他们的名字,氛围是愉快且轻松的。之后就是历时一个月的培训学习,由我的主管给我布置需求,从0到1搭建一个自己的博客网站,由于我的基础是在太差了,没少挨批,不过这一个月也是我自学编程以来进步最快的一个月了(十分感谢我的主管)。
开启Android之旅
为期一个月的学习培训很快就过去了,我以为我会继续做开发,但万万没想到的是,由于组缺人,我直接分配到了组,要命,我可是一句都没写过的人啊。更要命的是,带我的组长是个韩国人,我们得用英文沟通。好在人很不错,没有放弃我,他让我去刷官网,让我对组件留一个印象,然后等到用到的时候再深入去学习,遇到什么不懂的问题就去问他,让我不用不好意思。
一度想放弃
无基础,跟组长语言又不通,加上业务需求又紧,我也只能直接上手做需求了。很多时候都是看着需求,不知如何下手,然后去,不到然后去请教以及周围同事,然后他们告诉我使用哪个哪个组件,或者甩给我一篇文章。在这样的状态下导致我给自己的内心压力很大,甚至一度想着要不放弃算了,反正这样也转正不了,何必一直耗着呢。
转折
–
这天我下班回到学校寝室,恰巧看到隔壁寝室的同学老费也回到了学校,进去打了个招呼,老费在准备转专业考研考计算机,我发现他的桌子上放着一本。我跟老费说了我的近况,他推荐我好好学习一下这本黑皮书,说这是很经典的一本入门书籍,对我会很有帮助。我随手翻了翻这本书,确实很好,当晚我就直接下单买了一本。后面,机缘巧合下我又读到了郭霖大佬的,然后学习了推荐我去看官网
渐入佳境
在刷完与这两本书后,我发现我的开发之路变得平坦了很多,我面对需求抓耳挠腮的次数减少了。也变得比以前自信了,我也可以去跟我的同事主管交流一些我的想法,也尝试将我学的知识点整理写成博客,并在公司的技术分享会上分享给大家。慢慢我也开始独立负责一个需求,成为了主力开发。
离开
–
有相聚就有离别,为了早日与女友结束异地恋,我也计划着19年下半年到杭州发展,我要离开这个起点,这次就像是我真正的毕业。
再出发
===
离开起点后,社会直接就给我上了一课,万万没想到,来杭州的第一家公司是在发不出工资的情况下招的我。第一个月工资延发,第二个月工资发半个月,第三个月直接说发不出来了。本想直接提桶跑路了,没想到又被老板画的大饼给留下了,想着也要过年了,那就年后说吧。然后就是2020年初疫情爆发了,在家隔离的日子里我也没闲着,在家学习,也是那时候开始在掘金分享技术文章。疫情给我那本就气息奄奄的公司又来上了一脚,拖欠的工资更加发不出了,我也意识到,是时候走了。那是2020年的3月份,疫情刚刚好转一点,但市场上的岗位需求缺很少,我投出去的简历基本石沉大海。终于约到了面试,面试过程也很顺利,我也就入职了我现在的这家公司,一直到现在。
这就是我选择转行做程序员以来真实的故事,我舍去了很多辛酸与被人看低的经历,毕竟我把我的故事说给你们听得目的就是希望能给大家一点正能量。
也正是这段经历,让本来开朗自信的我变得自闭与不自信,但好在我不服输,我不愿接受我比身边的人差,虽然我不是科班出身,只是一个半路出家的半吊子,但我现在也做到了,成为了Android程序员。
2022年我要让自己变得更加自信。
最后
我总结了我在日后Android开发的学习过程中应该学习的一些知识模块
底层技术
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
JAVA知识要点:
1、Java序列化、泛型与反射
2、虚拟机底层原理
3、Android内存原理
4、Java高级并发原理详解
5、编译时技术掌握与实战
6、JDK高级动态代理
7、高级数据结构与算法
8、Java IO操作
9、。。。
frameWork源码与UI
在Android中,framework泛指系统架构层。framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算