一晃眼一年又过去了。再过半年我就要毕业了。

教训

今年找到第一份实习,学一门新的编程语言。实习的时候几乎是零基础,遇到什么问题就问上网查、问同事,把事情勉强做成。在这个过程中,越发觉得知识要成体系。以前我总以为,记忆性的东西不必死记硬背,比如 Linux 某个命令的用法,某个网络协议的细节等,知道去哪里寻找答案,能够解决当前的问题,然后做好记录就够了。但问题在于,这样每次临时去搜索,其实是很耗费时间的。而且也不一定保证能够找到想要的信息。试图走捷径,不踏踏实实理解和记忆,最后其实得不偿失。

今年看的一本书《构建之法》提到一个观点:“技能的反面”是“解决(低层次)问题”,读到这一章的时候,真是醍醐灌顶。原来我一直在解决“低层次”问题。

构建之法 3.3 技能的反面

低层次问题理应烂熟于心,才能把主要时间精力集中在高层次问题上。把技能磨练到精通的程度,才能够看得更远。正确的做法是体系化地学习技能或知识,该训练的训练扎实,把招式内化为本能反应。轻视招式是很愚蠢的。我在这里吃了大亏,面试的时候好几次被问起:作为计算机科班学生,为什么连基本的数据结构、数据库都那么不熟练?感觉把母校的脸丢光了。

关于面试

秋招并不顺利,除了基础不够扎实外,自己也没有拿得出手的项目。另外面试经验不足也是原因,很容易紧张,没有注意表达方式。有时候即使知道对方需要的答案,但因为自己没有表达好,反而会成为劣势。STAR 法则——情境(situation)、任务(task)、行动(action)、结果(result)——还是很有道理的。要有意识地训练自己的思维和表达。

我不太适应电话交流。书面表达和当面交流的经验比较多。书面表达我可以反复斟酌修改,而当面交流,可以得到语言之外的反馈,比如肢体语言、眼神,我很依赖这些反应。在电话里,只有唯一的媒介,声音,而且必须立即给出反应,这让我很有压力。我第一次电话面试时,大脑卡壳,陷入长时间的沉默,十分尴尬。而这沉默也是无效的,因为我没有办法让自己思考,只是浪费双方的时间。

朋友建议我电话面试的时候可以准备纸笔,在面试的过程中写写画画,整理一下思路,搭一个大致的框架。我觉得有道理,纸就像一个高速缓存,大脑的缓存不够,就再建立一个二级缓存,加速数据传输。动起手来先把知识从大脑的长期记忆区(硬盘)取出来,提高命中率。面试的目的也是看你的长期记忆里有没有他需要的能力,我所做的就是把能力有效地展现出来。要尽量往消除信息不对称的方向走。这也有助于把注意力从“声音/沉默”转移到问题本身。

重点就是要表达出来,把自己懂的都说清楚,说对说错都没有关系,但如果不说出来对方永远不知道你的水平如何,也就没有给 offer 的充分理由了。

这也是为何技术招聘要看 Github 页面和技术博客,以及注重白板编程的原因。大三选修了一门创新短课——区块链和数字货币。有个工作量证明(Proof Of Work,POW)的概念,比特币的 POW 就是暴力计算散列函数,矿工投入必要的计算资源去碰撞出某个值,得到这个值就证明了矿工付出了相应的“工作量”,有资格得到奖励。这是个很巧妙的设计,从数学上保证了人很难作弊,而无需一个第三方和中心化的机构来做出担保。面试需要的也是“工作量证明”,面试者需要证明自己有相应的能力,开源项目、博客和白板编程都是过往工作量的证明,虽然这种证明的效力比不上比特币那种数学的方式,但道理是类似的。开源项目、博客和白板编程,都是看得见的产出。而产出会倒逼程序员主动去学习和进步。

后端:总结和计划

开始确定自己要走后端路线。比起前两年,对如何学习这回事开始有一点谱。似乎醒悟得有点晚,但俗话说“种一颗树最好的时机是十年前,其次是现在”,只要开始行动就不算晚。

我是今年才明确自己的方向的。上半年实习,开始学 Go 语言,接触 Web 开发,学用框架,看懂开源项目 ngrok 的大致逻辑。下半年都在复习基础知识,计算机网络、操作系统,进一步深入 Go 语言。十月份开始写博客,在 Github 上试着开发和完善一个项目。

个人技术栈不管广度还是深度,都不够。但是急不来,还是得踏踏实实写代码,多总结。总结很重要,总结是个系统化的过程,把碎片化的经验组织起来,纳入自身的工具箱。能达到可复用的效果。这跟写代码是一个道理,做到高内聚低耦合,功能模块做好拆分。遇到具体的情景和需求,能够快速高效地调用。

接下来的打算是,做毕业设计,更新博客,补基础(特别是数据结构和数据库),继续面试。

其他

实习时交到了新的朋友,参与了个外包项目,赚了点零花钱。

准备秋招的时候,和舍友互相学习,讨论问题,收获也很大。

大学待过的两个社团——《深大青年》杂志社、学子天地——都被校团委解散重组了,很可惜。迷茫的时候深青同仁给了我不少支持,学子的技术大佬帮我看了简历,给了我很中肯的建议。如果没有社团,大学生活可能会完全不一样。

给野人公众号写了几篇读书笔记,帮野人杂志第三期做了校对。

看了几本技术书,都是囫囵吞枣地过一遍,读得不是很仔细……有点消化不良。怎么看技术书比较高效,我还在摸索中。