这篇文章主要来自我 2019 年末写的总结,在此基础上稍作修改。主要是回顾一下自己的成长历程。当然,如果对其他人有帮助,那就更好了。
1.有没有什么捷径?
16 年大二下,我无意间看到 Fenng 的公众号小道消息在推一个小密圈(现在叫知识星球)的应用,当时看免费顺手就进了。说实话,刚开始进去的时候,老是在想有没有捷径,成功的秘诀之类的,翻遍了精华区也没有找到!在圈子里呆了一段时间,发现好像大多人都是一步步走,并没有谁什么奇技淫巧,一步登天。
2.学什么呢?
17年上半年,各个公众号,各个新闻,就连校园里,一天到晚都在讲云计算,大数据,机器学习,人工智能。我要不要去学下?
抵制不了诱惑,自己也不思考,看着也挺有趣,那就去试试呗。看了一段时间好像不太懂,数学基础不够,那些公式都不会推导。你要是我读英文文档,调 API,跑起来不难,让我自己理解透彻改进,不太行。简单来说,就只能把这些东西当做黑盒来用。
自己之前学了点Java,然后就在纠结自己该学什么了,Java 还是机器学习?于是就有了下面的问答。
我:冯大,目前大三,普通本科生,有点 Android 和 Java web 的经验,但现在在学校学习机器学习这一块,自己也很看好这一块,还不熟,想趁着门槛低暑假去实习,但有点犹豫,您认为我该如何选择?是 Andorid/Java, 还是直接投身机器学习,希望您能给点建议。
Fenng: 普通本科生,我一般的建议是打好基础,把基本功做好,别整天追热点,热点是追不完的。
看了冯大的回答,自己又不打算考研,就老老实实复习,先准备面试。冯大说的打基础,但当时还是没闹清楚基础要学到什么程度,一方面是懒,一方面是认知有限。
3.先搬会砖?
18年下半年,入职了现在的公司,面向 API 编程对我而言是不难的,但时不时就会陷入困惑,脑袋里一团浆糊,到底计算机里面发生了什么?举个例子,比如多线程并发,到底线程和进程共享哪些数据?如何安全地访问这些共享数据?
疑问越多,焦虑越多。为此我先后买了极客时间 26 门课程,迄今为止大约学了其中的一半多一点,但确实学到了很多。可这些课程大多是偏向于实战的,计算机系统原理讲的较少。所以还是没有彻底解决我的疑问, 或者说自己还没有能力将这些知识串联起来。
4.嗯,从头再来
我大学专业是软件工程,可工作了才发现就只会各种编程语言的拼写。当然考试关于计算机的课程分数都还挺不错,俨然一副自我感觉良好的模样。我不知道以自己当时的水平如何考的 90 多分,可能是老师出的题太简单些了,都给我们划好了重点了吧。
我想这样不行啊,于是就去研究 Java 的并发编程库,于是我看到了 Java 调用 C, C 调用汇编指令。这时才下定决心把冯大推荐的计算机自学路径拿过来仔细看看!根据冯大的推荐路径和陈皓的左耳听风练级攻略学习, 并在豆瓣上建立了一个豆列来记录自己要看的书。
关于普通大学的计算机教育,值得思考的地方很多,我懂的不多,权当交流。学校的课程是否合理(课程先后顺序合理吗?学那么多编程语言有必要吗?微软C#那一套还有必要吗?教材真的要自己搞一套吗?)。老师是否与时俱进,还是在原地踏步呢?当然,更重要的是,自己又做了什么呢?环境和他人都是我们不好改变的,改变自己是最容易的——完全可以自学啊。
5.总结
学技术没有捷径,不过仔细想想,干什么有捷径呢?
这几年还是有点进步的。
1.去除了一些贪念。没有什么武功秘籍,有的只是前辈们的避坑经验,让你少走弯路。但是一开始老想着走捷径,行不通了才想着听别人的,原因可能一个是懒,一个是无知。看到什么火学什么,其实永远在绕圈子,抵达不了终点。很多花枝招展的新技术,大多是底层技术的抽象封装,排列组合的方式有千千万万种,如果你流于表面挨个学,那不得累死..
2.读书多了一点。看了一些书,听了一些得到专栏,去除了自身的一些愚昧与无知。读书多了以后,有一特大的好处,一点儿也不焦虑了,每天看一点就是了,感兴趣的就多看一点。当然也可能只是我以为我知道了很多东西,其实我并不知道。
感谢每一位帮助我进步的人:Fenng,吴军, 左耳朵耗子,cazsay,MacTalk, stormzhang....