##大学的目标
这篇文章,想讲讲我的一些经历故事,如果你想入行编程、或者在一两年编程经验的迷茫时期。相信这篇文章可以给你带来帮助。
回想7年前,我高考发挥失常,最后只能上了个普通二本,查到分数的那天,天是灰蒙蒙的,就像是我看不见的未来。
后来大学学的是当下比较吃香的编程专业。其实大学期间并没有什么将前后端和移动端分的特别清楚,开的课每个方向都是学的,C/C++、HTML/HTML5、JSP、SqlServer/MySQL、数据结构与算法、Java开发、Android 开发、微信小程序开发、框架应用。这些都是大学必开课程。
那么重点来了,在刚入大学时期,在如此庞大的编程世界里,面对这么多不同方向的编程语言。记住一句话:一定要有自己专精的一门语言,或者说是一个方向。这是在你大学时期最重要的任务
下面进行分析,为什么宁愿放弃一两门学科,都要把一门语言底子学扎实、学精通?
这是编程行业的性质所决定的。以我个人为例,我在大学主修的是Android移动应用端开发。并不是学校的主修辅修,在学校没有人会告诉你:大学学编程,一定要偏科。可以毫不夸张的说,在我的二本院校里,我的同学中,至少80%的人,出了校门根本找不到工作。
不要以为编程行业吃香,工资高,市场需求大,学了编程专业就可以轻松找到工作,轻松拿高薪。那我只好泼你一盆冷水,告诉你,不可能,完全瞎j8扯淡。
市场需求虽说没有前几年互联网爆发期那么大,但依旧是很缺编程人才的。注意,我说的是人才。何为人才?**就是在某一领域有着显著成就,或者在所有领域都有所涉足的人。**方为编程行业的人才。
你能在大学三年时间成为一个市场需要的人才吗?
你可以。你可以成为我所说人才的前者,也就是,在某一领域有所精通的人。本科三年在校时间,足够让你成长为满足市场工作需求的人才。但你绝对成为不了后者,这里不多做论述,等你了解到编程世界到底有多庞大,自然也就懂了。
下面讲不同工作年限对应的学习方法
以下思路按照我个人所学Android移动应用开发为例。
工作1-3年:技术积累阶段
按照我上诉的思路来执行的话,我相信你可以在大学毕业后找到一份对口的offer。年薪应该是8w-20w不等
假设本科23岁毕业,那么工作的前3年对你来说就是打基础的阶段。在这3年时间里面,你要积累足够的技术底子,打磨自己的技术实力,成为某一个技术细分领域的牛人。
我自己依然记得当年这样的场景:蹲在出租房里面每晚每晚的啃技术文档,在公司连续打地铺干通宵的场景。
只有真正经历过贫穷,经历过苦难的人,才会越早就懂得努力才自己这一生唯一的出路和唯一的机会。忘了谁说的了,大概就是这个理。
学习方法
这个阶段我建议的学习方法是:多敲代码、学会用百度
程序员入岗初期都要有的,必经之路,踩坑期。
你会遇到各种各样的bug,也会有学校没有学过的知识。你会无助,抓脑。都是正常的。要知道,每个人都有自己的工作,别人花时间教你,就得花同样的加班时间来完成自己的工作。没有人有那个义务,帮你debug,教你怎么工作。所以,除非实在找不到问题所在了,再去找老人帮你解决,而且,要虚心,也要记得感恩。
总结一下,初级程序员必备技能,学会用百度,学会自己解决问题,多敲代码,基础要扎实。
4-6年:形成思维方法论和知识体系的阶段
按照我的思路走,相信这个时候你已经成功升职为一名中级程序员了。你的年薪应该是20w-40w
当你积累足够的技术实力,例如超过10万行代码以后,你应该形成了自己的思维方法论和自己独立的学习技巧,任何新的技术在你眼中都能迅速的看到技术的本质,快速吸收成为你的知识体系的一部分。
你只要前一个阶段打的基础足够牢固,这个阶段你一定会开始蚕食别的领域,这是一定的。逐渐的不再满足于纯技术领域的探索,而是开始探索技术背后的事情:什么技术在什么样的场合能够发挥最大的价值;技术团队应该怎样构建;技术在公司未来的价值?创业公司对技术的需求?支撑技术的产品,怎样学习做产品?支撑产品背后的运营体系是怎样建立的?商业社会对技术、产品、运营等的是怎样的认知,商业社会有什么的特定规律?也许还有更多…
在这个阶段,积累技术对你来说简直是小菜一碟,你更需要磨练的是思考能力,形成自己的思维方法和知识体系,这将是你帮助你一生的武器。
学习方法
这时的你已经不能仅限于自己能解决自己工作中的问题就行了。所以学习方法不能在依托于百度。技术博客,是你的成长阵地。例如掘金、博客园、简书、CSDN、安卓巴士、云栖社区都是很优质的技术平台,你可以在上面和各种大牛交流学习经验技术。在这个阶段,我建议的学习方法有:
1.坚持写技术博客:中级工程师不只是一味的去做事、学习,其实更多的需要对知识的总结与归纳,而写博客是最好的手段,坚持写博客其实就是对你知识体系的回顾与总结。不说别的,就说一些IT界业内的大牛一般都有自己的博客,那些博客文章才是你知识沉淀的最好见证。
**2.GitHub:**在GitHub上参与开源项目,GitHub堪称程序员必备,聚集了全球各个领域的程序员,在上面你可以直接阅读Google、Facebook顶级公司的开源项目,可以一睹顶尖工程师的风采,在这里你绝对打开了另一扇世界大门,你可以阅读大牛源码,并试着贡献自己的代码。GitHub并不仅是一个名片,更是进阶必备神器!
3.阅读Android源码: 理解一些高级概念Java语言进阶了,同样关于Android你也需要进阶,并不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理。
6-8年:有成熟的职业规划,对未来有清楚的认识
如果你坚持了我上述的思路,相信你已经是一名高工了。你的年薪应该是40w-60w
这个阶段,最关键的是了解自己。知道自己擅长什么,自己的优势在哪里,怎样才能够最大化自己的价值,同时也知道自己有什么重大缺陷。
未来是扬长避短还是不断避免自己的缺陷,这些需要提前想清楚。一旦想清楚,想透了,就剩下行动。你可以选择避开做自己不擅长的事情,不勉强自己,不让自己处于对自己不利的环境。当然,你也可以选择不断补短,把自己的不擅长点变成自己最擅长的。这个需要结合自己的情况来慎重选择,最终看你要走什么样的一条路,是打算做技术专家、管理者、还是技术结合产品,还是创业者。
学习方式:系统学习
为什么我会提系统两个字呢?先说一下新手和专家的区别,大家常常认为新手和专家的区别在于经验上,这样说也不能说是错的。因为确实这个经验是很重要的,但这个经验不是指实施某项技术获得了一个过程和记录,而是指通过实施某项技术促进了思维的改变。
总结
【Android 详细知识点思维脑图(技能树)】
我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
最后,赠与大家一句话,共勉!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
共勉!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!