学习没有捷径,想要提高编程能力,先写个10w行代码吧!
另外,作为一个刚毕业的学长也给后来的学弟学妹们一点建议:
你说如何提高自己的编程能力?一看到这个问题,我就就会想到这几个点:
- 多敲代码,本科四年至少得敲上10w+ 行代码吧
- 看大量经典的技术书,比如csapp、sicp、计算机网络自顶向下、Code这类
- 学框架技术多看官方文档,不解释~
- 用 Google、stackoverflow,别用 某度
- 要会玩应用层,但是更需要关注底层知识、计算机原理等
这么多点,让我选两个最重要的还是 多编码 + 多看书
一个增强实践能力,毕竟纸上得来终觉浅,看书则是最快的系统性学习方式。
我自己大学基本也是这么践行的,看书和编码做 lab 结合起来。
另外一个很重要的点就是,一定要注重计算机基础的学习,比如:离散数学、计组、数据结构、操作系统、计算机网络、数据库、汇编、编译原理等。
错过了大学这样好的时间,后面工作后可能就很难有时间和兴趣去系统性的学习了。
可能有人觉得学这些东西,还不如学几个Java se的技术来得实在,这里引用下侯捷老师的话:
勿在浮沙筑高台
比如当你学习redis、nodejs这种新技术的时候,你也许不知道这些技术的基本思想在几十年前就出现了,在计算机CPU中也有几级Cache,并且很多缓存更新的套路和方法其实都是类似的
也许你还在苦苦的啃Java虚拟机的细节,但是那些学过计组合汇编的同学就能很快把知识的迁移到JVM上来
你觉得Java Socket、netty 很难理解,那些学过计算机网络,使用过 Linux C socket api 编程同学也能很快的迁移过来。
当你还在用foreach + kmp尝试做敏感词过滤的时候,那些算法好打过ACM的同学早就用AC自动机解决了
.....
这些计算机的基础知识就是编程内功,很多新的框架和技术其实都是新瓶装旧酒,掌握好基础、本质的东西,才能让你更快的适应瞬息万变的IT行业。
而BAT这样的大公司校招看中的也是计算机基础和算法能力,只不过现在越来越演变成考察八股文谁背得好和Leetcode谁刷得多了。