现在也是大四了,自打上大四以来,还没有写过一篇生活随笔.借着昨天面试产生的一点点思考,写下这篇随笔.
当初我为什么选择计算机专业?
说实话,在上大学之前,我虽接触过电脑,但是都是用电脑来玩游戏,看视频.上大学之前,我甚至不知道有编程是什么.
那时候,做系统什么的,都不曾接触过,当时甚至连U盘是干嘛的都不知道.
在高考完,选志愿的时候,从网上查了一下哪个行业前景好.当时也不会翻墙,就在百度上看到有人说,计算机行业工资高,发展前景好,但是特别难学.
我是幸运的,看到了这样一段话.
在看到他说难学之后,我就想挑战一下,这个难学到底是有多难学!
于是,在选志愿的时候,我就把全部志愿都填的跟计算机相关的.幸好没有被调剂.
倒不是我智商高,觉得难不倒我,而是斗志来了,挡都挡不住,真的!
到了现在,懂得东西多了一些,有很多人叫我大神,大牛.
确实有一些成就感,因为从大一啥都不会,达到现在这种程度,而且大家也确实看到了我的努力,认可我的努力.
虽然跟那种从小学初中就开始学习编程,早已经在业界出名的朋友,还是有很大的差距.但是我并不自卑.我确实已经很努力了.
实际上我感觉自己特别笨.
好多东西别人可能一看就懂了,而我需要研究好久,查好多资料,演算好多次,才能理解.尽管从小学到现在,老师们都夸我聪明,但是我一直都认为,这只是开家长会,老师们为了让我父母开心,才说的话.
可能有的时候我进步确实很快,但是这也不是我聪明.
不是有一个”一万小时定律”吗?
如果你每天早晨睁眼后,晚上闭眼前,都是面对着电脑.除了吃饭,十一二个小时.你进步能不快吗?
话说现在这么一计算,每天10个小时的话,达到"一万小时定律"就需要1000天,也就是不到三年的时间.
我这都到了大四了,从大一开始学,也已经三年了,却没达到专家的水准.
做事认真,从不轻易认输,不管遇到什么,都要铁着头,往前冲,想尽各种方法来解决.也是我进步快速的原因吧.
我见过太多朋友,也有一些我认为非常聪明,一点就会的朋友,在遇到问题时,并不会尝试用尽各种方法来解决问题.
如果你遇到一个问题,会如何找解决方法?
Google,StackOverflow?
找不到呢?
看Github的issue?看邮件列表?
如果这还是找不到呢?
阅读源码?
其实很多问题产生的根源,还是你不了解它的机制.
比如说,Java开发经常遇到的一个问题,就是ClassNotFoundException,如果你清楚JVM加载类的机制,会解决不了这种问题吗?
其实学习一项技术的时候,最好的方式还是阅读它的源码.
这门技术的文档,只是会介绍你如何用它,有什么地方需要注意.但是,它不会告诉你,它在你的业务环境下适合不适合,不会告诉你它的具体实现.
源码读的多了,开源项目背后的原理了解的多了,很多其他的东西,一想就能明白.它们基本上都是大同小异,相互借鉴的.
昨天面试的时候,面试官问了我一个关于线程池实现原理的问题,没有回答上来.其实,之前是有阅读线程池源码的打算的,后来就大体看了一下它的内部的数据结构,就因为有其他的事情,没有继续研究下去.
但是这怨谁呢?就是你做的还不够好!
有问题就解决,不要埋怨.现在的社会,实干家还是太少,一有什么不如意的事情,就会埋怨,而不去想办法解决.
现在我就在阅读线程池实现的源码.
每一个答不上来的地方,都是做的不好的地方.
这就是同学们口中的大神!
真是大神吗?
就一个Java领域,有多少人比我熟悉太多?跟这个领域的第一,还有多少差距?
比较差距,是为了更好的弥补差距.
每一次进步,都感觉到有一些特质真的太重要了.比如说,
- 不服输,跟别人有差距就努力追赶
- 特别喜欢学习,非常乐于接受新的技术
- 动手能力强,但是理论学习能力也要足够强.如果永远只是局限于会用一项技术,而不了解它的实现原理,那就永远只是一个软件工程师而已
- 对未来有一个清晰的认识.如果你不知道你要达到什么样的水平,就不知道现在该朝什么方向努力
- 耐得住寂寞,热爱这个行业.在调试东西时,往往就是八九个小时.你能够在电脑前面坐得住?
- 有一个从全局俯视项目的思想.很多项目,特别是开源项目,如果你不知道它的全局的结构,你阅读起来是会特别费劲的.
我从小到大,最热爱的东西,能够连续热爱这么长时间的,就只有计算机了.说真的,真的已经把计算机当成自己的宝贝了,不管走到哪,必须背着电脑,下雨的时候没打伞,就脱下上衣,弓着腰保护电脑,保证它不进一点水.
我也常常会为一些新的发明,一些重要的时刻,而呐喊,而热泪盈眶.
在读«尽在双十一»这本书的时候,其中有一节是,双十一前夕,工程师都聚集在光明顶,当双十一零点到来时,系统完好无损,完全能够承受住此时的系统负载.看到这,真的想为阿里的工程师呐喊,想为他们鼓掌,要知道,双十一零点的流量,基本上是世界上最大的流量啊!
还有一些能力也很重要,比如:
- 除了在中国才会遇到的特殊问题,其他的问题,搜索时不要用中文
- 用Google搜索
- 一定要用英文
- 一定要阅读官方文档(论文),可以先从Tutorial Point上面找教程入门再看官方文档,不要看翻译成中文的
- 用Linux
我带人做项目的时候,会强制他们用英文,用Google搜索,阅读官方文档.Linux系统也会要求,但是不用也行.
能力只是特质的外在体现.而特质是可以慢慢培养的.
时间不等于效率.
经常会听说旁边的人,写程序到凌晨.
但是我11点左右基本上就睡了.
人的精力是有限的,没必要熬到凌晨才睡.到凌晨的时候,你脑子里真的清晰吗?
早睡早起.凌晨两点睡,十点才起,跟我十一点睡,早晨七点起,时间不是一样吗?但是哪一个效率更高呢?
当然,夜猫子除外.
每天能够有效地学习十一二个小时,就足够了.
愿披星戴月,高歌前行!