程序员不是一个简简单单的职业

前言

最近网上总是充满了对IT行业的负面情绪,说什么什么要凉了,计算机行业要日落西山。

放心,你走了,it行业还在。。。

很大一部分都是刚刚踏入社会的学生和刚刚培训出来的,这两部分人居多,确实是受到了现在市场环境的影响,但是究其原因很多都是自己学习的时候没有认真。

付出不一定有收获,但是不付出一定没有收获。

在这里插入图片描述

作为一个老android人我记得我当时学习编程
主要有以下几个方面的原因:

目的

当时在大学努力学习编程的目地就只有一个,那就是不想大四毕业时去培训,想着在大学就把技术学好,所以才很努力的学习。(相比于其余同学而言,只是早早的知道了自己该干什么而已,但和那些一流大学毕业后面试进大厂的同学比起来差的不是一丁半点,差距太大了,还得好好努力)。

专业课程安排有 JAVA、C 语言、Android,但是老师上课讲的也都是书本上面最最基本的知识点,理论层面偏重,达不到学完后立马能上手做项目的程度。

虽然说专业里面学习 Android 和 C 语言,但是让我感兴趣的却是 C#。在当时学完 Android 后,特别不喜欢配置环境,在环境配置这块就卡了好久才配置好。对比之下简单、快速上手的 C#,还是觉得 Android 太麻烦,当时感觉好复杂,直到后面有个学长说现在市面上Android应用开发最受欢迎,都在搞这个,我才沉下心学习Android。

金钱报酬

当时做项目参加比赛是可以挣到钱,虽然不多,但对于当时学生身份的我来说,1000~3000 的,也是不错的经济来源,可以买一些自己之前一直舍不得买的东西或者说和舍友们出去大吃一顿好的(烧烤)。

不为人知的、少一些为什么的坚持

当时大一下学期和我一起报名在实验室上夜课(老师讲解学习 Android)的同学很多,可是等到大四快毕业时,还在做 Android的就我和隔壁宿舍的哥们。在一起学习的过程中,有些同学就由于或多或少各种各样的原因慢慢的晚上就不来了,放弃了。其实这都是很正常的,当有些事情得不到反馈或者说短时间内看不到回报时,大家都会有这种情绪出现的。

也不知道为什么,我和室友就坚持了下来,基本上,每天只要没有大课安排,我们俩就背着电脑和键盘待在实验室里面学习(看视频、看书、敲代码),现在突然想起还挺怀念当时和好友一起努力奋斗的时光。

如何学习编程
其实说起如何学习编程这个话题,自己或多或少还能说点话,毕竟自己也算靠着兴趣和努力闯入了编程这道大门,但是也深知功力不是很深,在各个方面的能力还都有待提升,所以下面就只是总结下当时自己如何去学习编程,可能适合你也可能不适合你,毕竟每个人的学习、吸收、总结能力都不一样。

看书和官方文档

先看入门书籍,让自己能看懂语法,看懂别人写的代码。

按照编程语言的语法,能写一些简单正确的逻辑代码。比如排序,数组的使用,循环,递归等。这里要注意,刚开始先看那些比较薄一点,知识点比较简单的书籍,别一上来就整什么红宝石书籍,特别特别厚的,先让自己能对其编程产生兴趣,不然刚开始就整厚书籍、难懂的点,可能学上 3~5 天自己就放弃了,没了当初的兴趣。(切记学习需要循序渐进,不可急于求成。)

看官方文档,对于一些编程语言,官方网站都会有系列的入门教程,这个是很重要的,官方出的东西都是知识面很广,而且受众全体比较广,所以很容易看懂和上手。

不管是看书还是官方教程都要及时的主动敲代码,对于书中的例子或官网教程中的案例,刚开始都需要自己在本地敲一篇,你可以先直接对照着实现,看自己能否成功运行,之后在慢慢的理解和修改。在你实现的过程中你会发现,这个过程就是一个正反馈的过程。你会体会到当你把一个项目,一点一滴的敲进编译器,能成功运行结果时那种自豪,满足的心情(要经常这么做,这一点一滴成功就是你坚持下去的动力)。

看视频

第二阶段可以看一些网上的编程视频,比如 B 站里面的教程或某些培训班的培训教程(网上可以找到)。目前很多程序员都在 B 站制作质量一流的编程系列教程,这些教程只要你用心去找,都能找到。

看视频的作用,可以加强你对知识点的理解,看别人是如何制作,解释一个知识点的,是否和你刚开始看书或看官方教程理解的一样。

看视频的过程中,你也需要对照着作者的实现方法自己在本地实现,有时候你会发现看作者实现立马就懂了,可是当你自己在本地实现的时候就会遇到各种各样的问题,也许你可能花费 1 整天都无法解决(哈哈哈,别丧失斗志,这很正常)。

当时我学习 的时候,看的是某马程序员的培训教材,有好几个 G 呢,当时好像是学长在淘宝购买的,我们就一起看、理解、学习,不懂的地方就一起讨论,分析。

做项目

做项目是终极目标,只有做项目才能将那些零散的知识点汇总起来,形成一条线。做项目也能让自己有成就感,看到自己经过几个月一点一滴坚持做出来的东西,就特别满足。

在学校的话,可以参加一些比赛,比如大学生三创(创新、创意、创业)比赛,和同学一起按照一个 ID 来构思,实现一个项目。

在参与的过程中,你会发现以前学习的东西可能都或多或少有点用处,当你们一起拿着自己做的项目来参加比赛,西装革履的给各级领导讲解,展示的时候你会发现那是多么的自豪与满足。

到了进阶的时候,就少用CV大法

这个其实是很多程序员的通病,我记得我刚刚工作的时候,也喜欢这样搞,和我一起进来的同事也是一样,这样好多东西比较省事,我自己还好本身自己在大学的时候认真学习过,还是有一定的基础。

像有些人自己在大学的时候就没有学好,到了真正工作的时候老想着省事,这样是不行的。

反正和我一起来的基本上都“走了”。我自己也意识到了也就尽量自己去敲,去理解每一行代码。

这样我在公司完全可以完成自己的工作,在半年后我就开始想着自己看源码,摸底层。

这个时候我才工作一年,能力确实有限,还好当时带我的师傅人很好,我很多时候也是向他请教,这之后的半年是我提升最快的时候。

如果大家想详细了解 Android 系统纷繁复杂的底层知识,去学习Framework底层知识是最好的选择。

这里分享一份 Android framework 全家桶学习资料。有需要的可以扫码免费领取!!

### **Surface源码解析**
            ● **第一节 创建流程及软硬件绘制**

            ● **第二节 双缓冲及SurfaceView解析**

            ● **第三节 Android图形系统综述**

基于Android12.0的SurfaceFlinger 源码解析

            ● **第一节 应用建立和SurfaceFlinger的沟通桥梁**

            ● **第二节 SurfaceFlinger的启动和消息队列处理机制**

            ● **第三节 SurfaceFlinger 之 VSync(上)**

            ● **第四节 SurfaceFlinger之VSync(中)**

            ● **第五节 SurfaceFlinger之VSync(下)**

PKMS源码解析

            ● **第一节 PKMS调用方式**

            ● **第二节 PKMS启动过程分析**

            ● **第三节 APK的扫描**

            ● **第四节 APK的安装**

            ● **第五节 PKMS之权限扫描**

            ● **第六节 静默安装**

            ● **第七节 requestPermissions源码流程解析**

            ● **第八节 PKMS面试题**

img

** InputManagerService源码解析**

            ● **第一节 Android Input输入事件处理流程(1)**

            ● **第二节 Android Input输入事件处理流程(2)**

            ● **第三节 Android Input输入事件处理流程(3)**

img

DisplayManagerService源码解析

            ● **第一节 DisplayManagerService启动**

            ● **第二节 DisplayAdapter和DisplayDevice的创建**

            ● **第三节 DMS部分亮灭屏流程**

            ● **第四节 亮度调节**

            ● **第五节 Proximity Sensor灭屏原理**

            ● **第六节 Logical Display和Physical Display配置的更新**

猜你喜欢

转载自blog.csdn.net/Android23333/article/details/131139320