今天是高考的日子,首先祝愿所有高考学子都能金榜题名、旗开得胜。

大学的目标

这篇文章,想讲讲我的一些经历故事,如果你想入行编程、或者在一两年编程经验的迷茫时期。相信这篇文章可以给你带来帮助。

回想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的资源和方法

Android移动开发架构师必备技能导图

如果你缺一份全套系统的学习资料和方法,我将自己7年的Android开发经验架构师成长学习笔记,整理在了我的石墨文档、以及我的GitHub中,有兴趣的小伙伴可以点击下面入口获取我的一手架构师学习笔记,以及我整理的历年大厂Android开发岗面试真题合集(皆无偿分享)。通道:【石墨文档】Android架构视频+BATJ面试专题PDF+学习笔记
也可以关注后私信我【学习】,都可以。

总结

架构师这个词,在我大学期间也觉得遥不可及。从来没有想到过自己有一天也会戴上这个头衔。其实,只要按照我上述的思路,按部就班,脚踏实地的不断的学习、进阶,并不难的。只看你有没有这个心罢了。

并不要觉得自己离架构师的路有多少,千里之行始于足下。不要觉得自己的年纪已经成长不到架构师就要到35岁退休了,学习最好的时候,就是现在。

最后,赠与大家一句诗,共勉!

不驰于空想,不骛于虚声。不忘初心,方得始终!

androidstudio jni开发_高考失利落榜,7年Android开发现已年薪60w,我的逆袭之路想说给你听...相关推荐

  1. SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发

    SRS流媒体服务器架构设计及源码分析 1.SRS流媒体服务器架构设计 2.协程-连接之间的关系 3.推流-转发-拉流之间的关系 4.如何手把手调试SRS源码 视频讲解如下,点击观看: SRS流媒体服务 ...

  2. react前端开发_是的,React正在接管前端开发。 问题是为什么。

    react前端开发 by Samer Buna 通过Samer Buna 是的,React正在接管前端开发. 问题是为什么. (Yes, React is taking over front-end ...

  3. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  4. 使软件可二次开发_基于C++的?UG二次开发

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...

  5. wince 开发_大牛总结: 入行嵌入式开发之前,先来看看这个规划

    从事嵌入式开发一年了,有些感想跟大家谈谈.可能很多朋友会像我当初一样,为前途而烦恼,为不知道储备什么知识而苦恼,所以写点东西给这些朋友们提供参考.另外,也可鞭策自己,让自己看到自己的不足,认清以后的发 ...

  6. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  7. java智能卡开发_《Java智能卡原理与应用开发》PDF 下载

    图书目录: 封面 扉页 版权页 内容简介 出版说明 前言 序 目录 第一部分 Java智能卡编程基础 第1章 绪言 1.1 智能卡简介 1.2 Java智能卡简介 1.3 发展前景 1.3.1 智能卡 ...

  8. esp32录音功能开发_【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯...

    本博客学习由 一.前言 离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出. 安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(Wa ...

  9. cs架构用什么语言开发_学了C语言,能开发什么项目?

    直至今天还有人在喊着C语言都过时的语言了,还有什么值得去学的,看现在的python,JAVA等语言现在用起来多简单,谁还去学习老掉牙的C语言,事实真的是这样的吗?小编作为专门下载了这两种语言的底层源码 ...

最新文章

  1. JS对象转URL参数
  2. 五. python的日历模块
  3. 如何用法向量求点到平面距离_高中数学丨2020新标课本,空间向量与二面角所有知识点,一张表搞定...
  4. Java项目实训报告
  5. Dell R240 1U机架式服务器 资料
  6. linux 查看和修改文件编码的方法
  7. SAP Analytics Cloud里Exception Aggregation Type的设置
  8. String s1==s2面试题
  9. one command 一键收集 oracle 巡检信息(包括dbhc,awr reports)
  10. linux查看和编辑文件,查看和编辑文件(Linux的快捷键和主要命令)
  11. 【不积跬步,无以致千里】linux下如何查看自己的外网IP
  12. 大数据调度工具之Oozie
  13. D语言/DLang 2.085.1 发布,修复性迭代
  14. 杀不死的人狼——我读《人月神话》(一)
  15. 服务器-epoll之缓冲区
  16. 羊了个羊游戏开发教程1:堆叠牌的拾取
  17. python中time什么意思_python中time包是什么?
  18. 使用sh执行bash脚本的奇怪问题
  19. Mac制作U盘安装盘和安装系统
  20. 这位创业者足够疯狂:他选择向微软发起挑战

热门文章

  1. oracle级联赋权,Oracle 级联with admin option 和 with grant option
  2. antd select option 设置字体颜色_匹配颜色是照片合成重要关键点
  3. 链接在HTML的英文,html超链接学习(适于初学者)(国外英文资料).doc
  4. php curl post上传图片,php curl上传图片问题
  5. C++中cout流的输出顺序
  6. OAuth2.0认证服务器之客户端相关配置
  7. python是如何引起的_1.2.8 如何开始使用python
  8. append一个option会多出一个空的_Collections | 你必须会的Python库
  9. WINDOWS环境下RABBITMQ的启动和停止命令
  10. Kotlin入门(4)声明与操作数组