要做挖掘机而非推土机

最近科协和团宣同时向我约稿,科协是让我回顾下去年科技之星,写写经验总结,团宣大体也类似,所以就有了下文,正好也有个机会有个时间写写非代码的东西,对这几年的学习经历经验做个简单的马后炮式总结。

兴趣仍然很重要。“兴趣是最好的老师”现在有点太俗了,但对于编程来说绝对是真理。我也会承认,如果没有兴趣支撑,有时码代码确实挺无聊的,大多数人最开始学习编程也只是对着一个黑框框(命令行),所以就认为编程也就这样了,短期又看不到实际效果,很容易就放弃了。但越是这个时候,就越要有继续下去的兴趣与动力。我是初中开始接触电脑报刊,高中开始学习编程,我觉得编程很有意思,我认为计算机技术可以改变未来人类生活方式,并且我会为其贡献力量,可能这就是我最初的兴趣与动力的来源,并坚持到了现在。

编程是艺术而不是技术。很多初学者学习了一两年的编程之后,会认为编程不就是代码的堆砌吗,不会的网上一搜复制粘贴能够运行就算ok了,所以也会管码农叫做搬砖工。其实,如果再往深层次去学习,尤其软件工程、设计模式等深入的思想,会发现编程其实是一门艺术。一个好的程序不是靠代码堆砌来组成的,而是有一种全局具备艺术的思想做整体支撑。这么说很抽象,但我们要学会面向抽象编程,而不是面向具体。每当我再回过头看之前所写过的代码,当时觉得还可以,但现在从艺术的角度看,充其量算个残次品。这个时候需要做的就是『代码重构』,将你的残次品再次变为艺术品,你会发现代码简洁之道,设计模式之美。

广泛学习并精于一门,横跨和纵深,先做推土机后做挖掘机。我觉得在大学学习编程一种好的学习规划是,前两年广泛学习各种编程语言及相关知识,可以涵盖前后端以及移动端,不怕你学的多,你学的越广泛越好,你慢慢会觉得很多都是相通的,当你有了c++的基础后,你会发现十大谎言之一的“七天学会Java”竟然是真理。如果你真的这么做了两年,你所掌握的知识广度将是很多人都不及的,可能很多人都会崇拜你是什么都会的技术大牛。然而这个时候你并不能自满,如果你立刻出去找个大公司某研发岗的实习,我敢说十有八九都会被挂掉。为什么呢,都学了这么多语言了,面试官凭什么不要我?答案是,你对该岗位使用的语言或相关知识掌握的程度太肤浅,不够深入。也就是说,从大三开始,你要做出选择,选择你最感兴趣的一个方向学会去纵深,深入去学习。那什么是深入,Java课程考了100分就是深入吗?不一定,你再去阅读《Effective Java》 《Java核心思想》等书籍时,你会发现你会的只是冰山一角而已。深入没有一个绝对的标尺可以衡量,还有不会的,就要继续深入。这就是横跨与纵深,也就是推土机和挖掘机的区别,推土机只会推表面的土,希望你能做个挖掘机。

自学。“互联网的东西变化太快,不自学跟不上脚步”,这句话你肯定不是第一次见了。借此说说另外一个现象:公司为什么不爱录用像北大青鸟这样出来的人才?我相信,在北大青鸟学半年之后,实践经历是要大于普通在校生的,而且他们会有拿得出手的作品,放到公司也立马能干活。但是一个最重要的点在于他们已经丧失了自学能力,我之前曾去达内(也是IT教育)偷偷蹭过课,老师就是手把手的教你每一行代码应该怎样写,但为什么这样写却不怎么说,学员也是跟着老师把项目做完了,但是要让他们自己再独立完成一遍却不行了。所以在校招时公司会看重你的自学能力和可塑造性,而不是必须要求你入职后立马能干活。也有很多人想自学,问我应该怎么自学,其实现在有很多的在线IT教育网站,比如极客学院等,上面有各种各样的课程,多花时间去学习,包括我也是这么走过来的。

积累。编程这种东西很杂,比如你做Android,那其他的如数据库、网络等等你都得会才行,平时需要大量相关知识的积累。推荐几个移动端阅读类的APP,『开发者头条』、『掘金』、『简书』,这些我平时没事就会打开看看。另外也推荐搭建一个自己的博客网站,在上面记录总结学到的知识,比如我的是 『www.icodeyou.com』,之所以我要建博客网站是有两个原因,一个是分享,另一个是总结积累,搭建自己的博客是一种很好的方式。知识是要一点一点积累的,量变质变的道理。

重视大学里每一门专业课。我可能都没资格这么说,因为我曾经也没有重视过有些课程,但我想以一种过来人的身份跟你们说这件事。之所以没重视也是觉得,这课没用以后又用不着吧啦吧啦的一堆借口吧,直到我大三暑假时去苏州和郑州参加网络安全集训和CTF的时候,那一个月的时间,我觉得不仅用到了大学所学的几乎所有专业课知识,而且我之前越是不重视的科目,越被这种知识上的漏洞疯狂打脸。所以我当时就比较懊悔,现在要对你们说重视每一门专业课。而且私认为计算机专业和其他有些专业不同的是,大学里的专业课对未来工作是真真真的有帮助。

参加学习小组。我们新成立了一个学习小组,名为“EvalSafe”,既有安全又有开发,每周日晚上7点都会在机械楼D308有主题分享,大家遇到任何难题都可以一起讨论解决,有一个比较好的学习环境和氛围,有兴趣的也可以直接去参加。

以上有些东西是马后炮式总结,开始我也不懂迷茫,到了大四经历过了之后才懂得,所以我想如果再给我四年时间,我会更知道怎么做,会比现在做的更好。但我是回不去了,而你正在开始。

最后用一句话总结,以大多数人的努力程度之低,根本轮不到拼天赋。

个人GitHub: http://github.com/icodeu

CSDN博客:http://blog.csdn.net/icodeyou

个人微信号:qqwanghuan 技术交流

image