关于学习
在工作中,我们使用了很多技术(语言或者框架),编写了各种各样的业务代码。我们也不断地接触新的技术和概念,脑袋中充斥着各种公众号、博客、知乎的文章,好像懂得很多的样子。但这样的情形经过几年,细细回想起来,我们真正沉淀下来的东西又有多少呢?
曾经用php开发过网站,没有系统地学习,利用百度就完成了项目。也曾经用Go开发过App的后台,也是没学习过,使用现成的框架,百度一些语法,就做完了项目。
因为用php开发过一个小网站,或者用Go开发过一个App的后台,我们就能在简历中写熟悉甚至是精通php、Go吗。即使写上去,也总感觉有点心虚。
陈皓在一篇采访中给年轻的朋友提过如下的建议:“我可以急功近利以解决问题和追赶技术潮流,但是,如果你需要成为一个领域的专家,你需要非常非常注重基础。速成编程的方式只能让你成为劳动力,而不能成为工匠或技术和知识的驾驭者。”
这段话对于写过几年业务代码而没有进行系统学习的开发者尤其适用。写过几年代码,对于语言、框架、业务都有了一定的了解,也失去了最初的新鲜感。这时候要想在技术上突破、寻求进阶,那么对于基础的学习恐怕是逃不掉的。
哪些是基础呢?算法、数据结构、网络编程、并发编程、标准库源码还有很多开源框架的源码等等,都值得花大量时间去学习。很多写了几年代码的人,连一个算法都没有实际用过,这是不是一种失败呢。
编程是一门手艺活,学习的唯一方式就是大量的编程训练。无论是看书也好、看视频也好、看博客也好,不能只是简单的浏览一遍完事,要想真正的掌握,必须利用业余时间,甚至是碎片化的时间,进行系统的学习。
关于学习,有两点要说明:
1、看一本书、或者学习一个新技术时,如果遇到的知识需要其他知识做铺垫,那么最好先学习它的“前驱”知识,这样再回来看的时候,不至于有断层的感觉。
2、阅读经典的技术书,最好能够手抄书里的代码,亲自运行一下,这样印象比较深。如果书后边有习题,也可以做一下。这样能够做到灵活运用,举一反三。
加强基础的学习,系统化的学习,用动手的方式学习。这是目前想到的比较好的学习方式。