我的 2018 轨迹

Dec 27, 2018
547
#2018#随笔

本文最近一次更新于 5 年 3 个月前,其中的内容很可能已经有所发展或是发生改变。

https://ae01.alicdn.com/kf/HTB1oFNHazDuK1RjSszd760GLpXap.png

实习回到学校十几天后,便开始思考年终总结怎么写,之所以这么早就开始构思,或许是我笃定在这 2018 最后的半个月内也不会发生什么值得记录的大事。当然我也期待着能发生什么事来冲击一下现有的生活——在校的时光实在是太安逸了,想来是应当正处于心理空窗期了。

本次总结将会就学习、生活、工作(实习)三个方面来描绘一下今年的生活轨迹。

学习

我应该算是「兴趣驱动学习」的典范了:每当我抱着很强的目的性或功利性去学习的时候,总是坚持不了多久。Princeton 的算法课从两年前就开始学,学到现在也才把排序看完。

不过今年在学习方面还是有不少收获的:借助 Coursera 这一平台,观看了 Node.js 的开发,Golang 的入门等网课。我在学习一门新语言的时候总会选择看视频,如果从一开始就看书的话,我会觉得有些乏味和枯燥,尤其是动辄上千页的技术类书籍,看厚度就有一种劝退感。而在入门后,想要深入了解一门的语言的底层,我才会选择翻阅一些书籍。

除了学习新东西之外,对 Functional Programing(函数式编程,以下简称 FP)也有了更深刻地理解。比如,为什么 FP 中多以递归来代替 Imperative programming(命令式编程)中的循环语句。原因在于数学家和逻辑学家们验证递归的正确性比验证循环的正确性要容易得多。

一个很简单的例子,分别用 Java 和 Haskell 实现快速排序:

Java:

public class Sorter {
    public static <T extends="" Comparable<?="" super="" T="">> void quicksort(T[] list) {
        quicksort(list, 0, list.length - 1);
    }

    private static <T extends="" Comparable<?="" super="" T="">> void quicksort(T[] list, int low, int high) {
        if (low >= high)
            return;
        int i = low - 1, j = high + 1;
        T pivot = list[low];

        for (;;) {
            do {
                ++i;
            } while (list[i].compareTo(pivot) < 0);
            do {
                --j;
            } while (list[j].compareTo(pivot) > 0);
            if (i >= j)
                break;
            T tmp = list[i];
            list[i] = list[j];
            list[j] = tmp;
        }

        quicksort(list, low, j);
        quicksort(list, j + 1, high);
    }
}</T></T>

Haskell:

quicksort :: (Ord a) => [a] -> [a]

quicksort[] = []

quicksort(pivot : rest) = 
    quicksort[x| x <- rest,="" x="" <="" pivot]="" ++="" [pivot]="" quicksort[x|="" <-="">= pivot]</->

以上两段代码,哪一段的正确性更容易验证?答案不言自明。

对于前者,指定了计算的详细过程,而后者,仅指定了计算的规则(原则)。这也是 FP 的特点之一:不关心如何计算,更关心计算的结果(的正确性)。

「正确」是 FP 设计的重中之重。究其根本在于 FP 的鼻祖 Lisp 与 λ 演算那密不可分的联系。

生活

生活方面似乎并没有什么改变,相比去年——好吧,并不是。我的体重告诉我比去年重了 ×× 斤。去杭实习不仅没瘦,反而重了。而且似乎睡得还更晚了,不过似乎「互联网依赖症」减轻了不少,比如本文初稿就是纯手写的。

在读书方面,算是有了一些进步,今年在豆瓣读书上为 15 本书贴上了「已读」的标签(不过仍未达到两周一本的目标)。文学类和技术类都有,技术类对我影响最大的毫无疑问就是《流畅的 Python》这本书了,断断续续地看了近三个月,做了万余字的笔记。

至于文学类嘛,《哲学家们都干了些什么》是让我眼前一亮:枯燥的哲学似乎在作者笔下都「皮」了起来。但印象最深地却是伊坂幸太郎的《金色梦乡》,等下,《白夜行》好像印象也很深刻,《解忧杂货店》构思也很巧妙(这么说来我果然很喜欢日系推理),钱锺书的《围城》也不错…好吧,文无第一,今年看的文学类书籍都非常不错。

接下来就该到电影方面了:今年在豆瓣电影为 72 部电影(包括剧集)贴上了「已看」标签。比较喜欢的剧集似乎都是日剧(非自然死亡,胜者即是正义);电影的话,《我不是药神》一枝独秀,在电影院里哭得还朝旁边的妹子借纸;动漫也看了不少:来自深渊(新番),怪化猫(旧番)都不错,属于能给灵魂带来冲击的番。

谈话类节目仍然强推《圆桌派》,可惜第三季之后窦文涛似乎就跑路了。纪录片这块则必须让陈晓卿的《风味人间》安排上,对于一个吃货来说,本节目的美食引起了强烈不适。不过还是作为吃货,即使吃不着,退而求其次,能过过眼瘾也是一种享受。此外,本节目还会介绍与美食相关的风土,人情,文化,品味等,美食之所以被冠以「美」字,绝不仅仅在于它的味道,更在于人们赋予它的某种意义,或者说是其背后所蕴含着的丰富内涵,这才是其绵延不绝的生命力所在。

工作

如果说搭建这个博客是去年我做的最有意义的事,那么实习应该就是今年我所做的最有意义的事了。

九月份时我并没有走校招,原因有两方面:一方面我并没有发现有什么企业校招 Python 岗(大部分都是前端和 Java);另一方面是估计实习时间也不会太久,本学期期末学校肯定一大堆事,于是也没怎么考虑公司,面了一家,就进去了。

我面的是 Python 岗,本以为进来之后也是写 Python。谁知阴差阳错上了 Node.js 的贼船,当然这有一部分的原因在于我:Leader 问我能不能用 Node.js,我说之前接触过一些,然后他就给了我几天时间让我熟悉一下。不过好在是从零开始写的,不用「接盘」前人的代码,倒是省了不少事。在公司待的两个半月时间内,也帮同事解决了不少 Python 问题,不过多是业务方面的逻辑。除此之外,收获最大的就是 Elasticsearch(以下简称 Elastic)的相关组件(我编写的 API 是直接与 Elastic 交互的)的部署和维护了,因为个人的项目很难直接接触到 Elastic 这一庞大的生态系统。

不过我是有些认为面试的时候公司没有把我的水平面出来(颇有些怀才不遇的感觉),简历上写的大部分细节都没问。只是问了问笔试题,感觉有点憋屈。能力未充分得到挖掘带来的问题就是资源的浪费。一方面是职员能力的浪费(能力得不到体现),一方面是公司资源的浪费(项目进度跟不上,业绩无法按时达标),于是就会导致某些人上班只需要花费很少的时间即可完成公司的任务,剩下一堆可自由支配的时间,而另一些人不仅上班时间不够用,还需要加班才能勉强完成。在这个公司时,我应当时属于前者,虽然有些不好意思,但我在公司的空余时间还是会学些自己的东西。

同时我也感觉写业务写久了,脑子里也只剩下业务了。对技术反而没什么提升,而对于当下的我来说,技术仍远比业务重要。正在这时候,学校要求我们回去准备毕设的事。于是,我辞职了,开始享受这为数不多的大学时光。

如果说之前的我还对未来的道路存疑的话,那么这两个半月的实习生活让我开始明确了未来的道路——Python 开发相关。同时也明白:校园的时光虽然让人十分享受,但也总有毕业的那一天。如果说大学的象牙塔是我最后的天堂,那就让我从天堂里一步一步地走出来。


似乎该结尾了,我不想再像去年一样为我的 2019 立什么 Flag 了(去年的 Flag 一大半都没实现),不过我想毕业的年份应当过得比较有趣吧?

我的 2018 轨迹

https://blog.itswincer.com/posts/e4e1357d/

作者

Wincer

更新于

Dec 27, 2018

许可协议

CC BY-NC-ND 4.0
  1. Dec 29, 2017

    再见,2017
  2. May 5, 2017

    Hello World
  3. May 31, 2023

    离职,三年未满
  4. Feb 7, 2023

    2022 年终总结
  5. Mar 31, 2021

    迟来的 2020 年终总结
  6. May 22, 2020

    离职的两个月之后