披荆斩棘,披星戴月

Posted by AlstonWilliams on February 17, 2019

现在也是大四了,自打上大四以来,还没有写过一篇生活随笔.借着昨天面试产生的一点点思考,写下这篇随笔.

当初我为什么选择计算机专业?

说实话,在上大学之前,我虽接触过电脑,但是都是用电脑来玩游戏,看视频.上大学之前,我甚至不知道有编程是什么.

那时候,做系统什么的,都不曾接触过,当时甚至连U盘是干嘛的都不知道.

在高考完,选志愿的时候,从网上查了一下哪个行业前景好.当时也不会翻墙,就在百度上看到有人说,计算机行业工资高,发展前景好,但是特别难学.

我是幸运的,看到了这样一段话.

在看到他说难学之后,我就想挑战一下,这个难学到底是有多难学!

于是,在选志愿的时候,我就把全部志愿都填的跟计算机相关的.幸好没有被调剂.

倒不是我智商高,觉得难不倒我,而是斗志来了,挡都挡不住,真的!

到了现在,懂得东西多了一些,有很多人叫我大神,大牛.

确实有一些成就感,因为从大一啥都不会,达到现在这种程度,而且大家也确实看到了我的努力,认可我的努力.

虽然跟那种从小学初中就开始学习编程,早已经在业界出名的朋友,还是有很大的差距.但是我并不自卑.我确实已经很努力了.

实际上我感觉自己特别笨.

好多东西别人可能一看就懂了,而我需要研究好久,查好多资料,演算好多次,才能理解.尽管从小学到现在,老师们都夸我聪明,但是我一直都认为,这只是开家长会,老师们为了让我父母开心,才说的话.

可能有的时候我进步确实很快,但是这也不是我聪明.

不是有一个”一万小时定律”吗?

如果你每天早晨睁眼后,晚上闭眼前,都是面对着电脑.除了吃饭,十一二个小时.你进步能不快吗?

话说现在这么一计算,每天10个小时的话,达到"一万小时定律"就需要1000天,也就是不到三年的时间.

我这都到了大四了,从大一开始学,也已经三年了,却没达到专家的水准.

做事认真,从不轻易认输,不管遇到什么,都要铁着头,往前冲,想尽各种方法来解决.也是我进步快速的原因吧.

我见过太多朋友,也有一些我认为非常聪明,一点就会的朋友,在遇到问题时,并不会尝试用尽各种方法来解决问题.

如果你遇到一个问题,会如何找解决方法?

Google,StackOverflow?

找不到呢?

看Github的issue?看邮件列表?

如果这还是找不到呢?

阅读源码?

其实很多问题产生的根源,还是你不了解它的机制.

比如说,Java开发经常遇到的一个问题,就是ClassNotFoundException,如果你清楚JVM加载类的机制,会解决不了这种问题吗?

其实学习一项技术的时候,最好的方式还是阅读它的源码.

这门技术的文档,只是会介绍你如何用它,有什么地方需要注意.但是,它不会告诉你,它在你的业务环境下适合不适合,不会告诉你它的具体实现.

源码读的多了,开源项目背后的原理了解的多了,很多其他的东西,一想就能明白.它们基本上都是大同小异,相互借鉴的.

昨天面试的时候,面试官问了我一个关于线程池实现原理的问题,没有回答上来.其实,之前是有阅读线程池源码的打算的,后来就大体看了一下它的内部的数据结构,就因为有其他的事情,没有继续研究下去.

但是这怨谁呢?就是你做的还不够好!

有问题就解决,不要埋怨.现在的社会,实干家还是太少,一有什么不如意的事情,就会埋怨,而不去想办法解决.

现在我就在阅读线程池实现的源码.

每一个答不上来的地方,都是做的不好的地方.

这就是同学们口中的大神!

真是大神吗?

就一个Java领域,有多少人比我熟悉太多?跟这个领域的第一,还有多少差距?

比较差距,是为了更好的弥补差距.

每一次进步,都感觉到有一些特质真的太重要了.比如说,

  • 不服输,跟别人有差距就努力追赶
  • 特别喜欢学习,非常乐于接受新的技术
  • 动手能力强,但是理论学习能力也要足够强.如果永远只是局限于会用一项技术,而不了解它的实现原理,那就永远只是一个软件工程师而已
  • 对未来有一个清晰的认识.如果你不知道你要达到什么样的水平,就不知道现在该朝什么方向努力
  • 耐得住寂寞,热爱这个行业.在调试东西时,往往就是八九个小时.你能够在电脑前面坐得住?
  • 有一个从全局俯视项目的思想.很多项目,特别是开源项目,如果你不知道它的全局的结构,你阅读起来是会特别费劲的.

我从小到大,最热爱的东西,能够连续热爱这么长时间的,就只有计算机了.说真的,真的已经把计算机当成自己的宝贝了,不管走到哪,必须背着电脑,下雨的时候没打伞,就脱下上衣,弓着腰保护电脑,保证它不进一点水.

我也常常会为一些新的发明,一些重要的时刻,而呐喊,而热泪盈眶.

在读«尽在双十一»这本书的时候,其中有一节是,双十一前夕,工程师都聚集在光明顶,当双十一零点到来时,系统完好无损,完全能够承受住此时的系统负载.看到这,真的想为阿里的工程师呐喊,想为他们鼓掌,要知道,双十一零点的流量,基本上是世界上最大的流量啊!

还有一些能力也很重要,比如:

  • 除了在中国才会遇到的特殊问题,其他的问题,搜索时不要用中文
  • 用Google搜索
  • 一定要用英文
  • 一定要阅读官方文档(论文),可以先从Tutorial Point上面找教程入门再看官方文档,不要看翻译成中文的
  • 用Linux

我带人做项目的时候,会强制他们用英文,用Google搜索,阅读官方文档.Linux系统也会要求,但是不用也行.

能力只是特质的外在体现.而特质是可以慢慢培养的.

时间不等于效率.

经常会听说旁边的人,写程序到凌晨.

但是我11点左右基本上就睡了.

人的精力是有限的,没必要熬到凌晨才睡.到凌晨的时候,你脑子里真的清晰吗?

早睡早起.凌晨两点睡,十点才起,跟我十一点睡,早晨七点起,时间不是一样吗?但是哪一个效率更高呢?

当然,夜猫子除外.

每天能够有效地学习十一二个小时,就足够了.

愿披星戴月,高歌前行!