网上经常有同学询问说自己高中学历,或者年龄已大,想要学习编程,不知道行不行?
我觉得是:很难,比你想象的还要难,但是难不代表不可行。
有别的热心的同学评论说,没什么不行的,只要比别人更努力就行,你看有的技术大牛,当初不也是零基础学习,一步步靠自己努力走到现在。
不可否认,努力固然重要,但是如果只是单纯努力的话,这世界从来不缺努力的人,那么如何能在这一群努力的人中间脱颖而出呢?这才是一个关键点。
1. 提高自己的起点
不管是大专学历也好,还是非专业的学渣也好,其实本质上我们的先天条件比别人差,我们要想赶上那些先天条件比我们好的人,比他们更努力,但是很多条件好,同样很努力的人比比皆是,这个时候,就需要寻找点方法了。
举个例子,我们大部分人学习编程的时候,大都是看视频、百度、博客、一些国内论坛等,可以这么说,即使是现在,这仍然是大部分人学习的主要方式。但是我当时就不这么想,大家都这么学习,我如何才能效率更高呢?
所以,我当时的做法,当别人都在看视频的时候,我坚持看博客、文档学习,因为看视频很没效率,看博客除了节省我的学习时间之外,还提高了我的阅读能力。当别人在用百度,查看国内各种二手资料的时候,我坚持去软件开发培训机构学习,我英语很差,这对我来说很难,但是我硬逼着自己,坚持下去,当别人混国内小白论坛的时候,我就开始混 GitHub 开源社区,学习国外大牛的开源项目,当别人在看国内翻译的资料的时候,我却逼着自己去官方看英文文档。
这一切的一切,本质上都是为了提高自己的起点,虽然我起步晚,但是我起点高,慢慢的就会缩小差距,时间长了,甚至后来居上。
当然,前提是自己得衡量自己的能力,就好比,你才刚学会写一个 Hello World ,你说你要去看 Android 源码,这不现实。但是一旦自己上手之后,我坚定的逼着自己让自己的起点更高。
2. 保持专注
很多人其实论努力程度不输任何人,但是总感觉自己进步非常慢,那么原因很可能是你不够专注。现在IT 界技术日新月异,动不动就会出来一门新语言,新框架,很多人就看到有一个看似很火的东西出来了,然后去学习,另一个东西出来了,又忙不迭的去学习,生怕错过了时间窗口就错过了巨大的机会。
然而殊不知你连手上的事都没做好呢,就想着可能会错失巨大的机会。在编程界,其实各个语言都是通的,把一门领域学好学精,后面再涉及其他领域也是很快速的。
所以,你不妨专注在一件事上,专注手上正在做的事,就如我博客所说:做好现在的事!
3. 把事情做到极致
这世界上很多人都很专注,甚至有几十年如一日在自己的工作岗位上兢兢业业,但是专注在一件事上还不够,你要把事情做到极致才行。
这个特质对很多职场中的同学非常有用,很多刚入职场的同学总是感觉自己做的工作没什么用,就是打杂的,抱怨自己被大材小用了,然而,就是这么简单的工作,你能把它做好,做到极致,一样很有价值,你也才能因此得到更多的机会。
很多人总觉得自己工作做的还不错,分配的任务做完了,总觉得没事做,然而问问你自己,是否还可以做的更好?
这个功能是不是还有更好的实现方式?代码是不是还可以更简练些?这个动画是不是还可以更流畅些?是不是有些历史遗留问题可以解决的?有些更好的框架是不是可以考虑学习应用在项目中?性能是不是还可以更好些?
任何一件小事,做到极致,都是一项了不起的能力!
4. 不要给自己设限
之前有人问我这么一个问题,说他之前一直做技术 Leader 的角色,公司觉得他做的还不错,想让他做项目管理,他很纠结,担心自己做不好,而且还影响了技术上的进步。
如果是我,我会毫不犹豫的尝试。
我当初一样面临过这种选择,一样犹豫过,一样有各种担心,但是当我走过来,我才明白我自己的职业选择都是来自于我的一个特质:我从来不给自己设限。
但是,只要有机会,我都会接触不同的领域,我不会优先考虑我做不到,我只会先考虑,如果我做到了,会不会对自己的能力有很大帮助。
这个世界从来都是有得必有失,我在 Android 技术领域上花费的时间很少了,但是我在其他领域的能力收获非常大,我也一直在向我口中所说的多元化人才努力。
有人可能会有疑问了,不给自己设限不跟上面说到的专注矛盾么?
当然不矛盾,不给自己设限的前提一定是自己具备了至少一项不错的能力,而且即使你再怎么专注,也没法一天 24 小时都在做一件事,即使你很专注,你也会有看电视、娱乐的时间。
所以,专注的做好手上的事固然很重要,但是不要闷头工作,也偶尔抬头看下外面的天空,拓宽下自己的视野,在有其他领域机会的时候,不妨勇敢的去尝试下。
5. 执行力
我们都知道努力很重要,但是很少有人能做到。
所以,大部分人的执行力很差,可能你一时做到了,也没法坚持下去,而把自己的执行力持续下去恰恰是最关键的一环,也就是所谓的:「道理我都懂,可是我做不到」。一个良好的执行力是一切任务正常进行的前提。