从增查改删到贡献开源:我的 2017 年度总结

区区一年的时间足够发生太多事情。去年的这个时候,我肯定不会想到现在的我会在厦门去往杭州参加 D2 的高铁上写下这篇总结。回顾 2017,有太多的事情值得记下,这里谨挑出和前端相关的地方和大家分享吧。

小事记

今年年中,我辞掉了毕业后的第一份工作,来到了厦门的这个团队。这个过程里的细节不太值得在此提起,不过在过了半年多之后回顾这段经历时,从中确实能看到一些有趣的东西:

关于离职

上一家公司 X 有着美味的食堂、融洽的团队和稳定的前景,那么为什么我选择在毕业不到一年之际离开呢?当时的我其实并没有完全想清楚,但现在对于『什么时候应该选择离职』这个话题,我的理解是,只要考虑清楚下面这三个问题就足够了:

  • 你在公司的发展前景好吗? 虽然这么说有些自负,但大概在入职三个月转正的时候,我感觉在纯粹的前端技术上,已经没有人能够『指导』我了——潦草的 jQuery 面条代码没有学习价值;没有人有 Scale Up 前端项目的经验;调研中的新技术选型,结果还是早就落伍的老框架……这些技术细节其实都不是什么问题,但靠谱导师的缺乏,使得我作为新人很难独立判断好技术的趋势和学习的方向。这么说来,去年那顶『最佳新人』的帽子背后其实还是挺凉的 🙃
  • 你的发展对公司有价值吗? 很遗憾,就好像库克在基因里就不需要看 AV 一样,这家标榜着 AI 驱动的技术公司在基因里其实也并不需要重视前端。作为例子,我能想到这几点:
    • 在离开以前,我负责的项目比起和它对标的老项目,减少了一半的代码量,弱网下加载速度翻了一番——但这有什么用呢?画的这几个破网页也没多少人看呀。
    • 我搭了内网的私有 npm 仓库,在上面发布了十多个私有依赖——但是它挂了的时候从来不会有人提起:复制一下 jquery.min.js 不就行了吗?
    • 离开前的最后一个项目里,我花了一个月左右从头实现了一个埋点分析库,附带了大量的文档和测试用例。QA 测试后认为质量不错,于是在绩效里多了 100 块钱作为奖励——是的,整整 100 块人民币,我非常感动。
  • 你工作得开心吗? 绝大多数时间还不错,只不过对 Leader 的吹捧和一帮普通同事之间动辄 x 总、x 神 的互吹式称呼感到比较尴尬。另外,我感兴趣的什么函数式、什么编译原理之类的东西都不是同事们热衷的谈资,他们更喜欢讨论股价、房价和挣外快一类的话题。当然了,和家里人聊这些也挺有趣的,不过和技术同事不能聊技术,多少会有些不合群的感觉吧。最后,一些管理的混乱也让我不知道对谁负责、向谁汇报,还会有搅屎棍希望为了项目的控制权来做一些莫名其妙的技术方案……现在回想起来,可能这就是传说中的办公室政治吧。

我还记得去厦门面试的那天是我这个『优秀新人』毕业以来第一次请假,那天老东家的大楼还史无前例地停电了——这就是所谓的缘分吧。对于老东家每一位个体层面的同事,我还是非常尊敬并希望他们过得越来越好的。不过我和这个宏观的群体,可能不是那么合适吧。

关于二线城市

从某种角度说,我来到厦门只是从一座二线城市换到另一座而已。为什么不选择互联网资源集聚的北上广呢?下面是一点点自己的考量。

毕业前我在上海的鹅厂实习了一段时间,虽然作为区区实习生没有负责多么重要的工作,但在光鲜之外,大城市不那么美好的一面也给了我很深的印象。除了老生常谈的住房问题外,漫长的通勤时间是最难以容忍的:每天在班车或地铁上花费两小时是一笔巨大的时间成本——每天花一小时学外语都很难坚持了,更何况强制性的两小时。

不过,在前端这个领域里,几年内一线城市应当仍然是第一流人才的第一选择。有人整理了一份 Github 上中国开发者的 Top 1000 排行,在这 1000 人中,城市信息写着 Beijing / Shanghai / Shenzhen / Hangzhou 的各自有 100 到 200 人,而在其余城市的人数则是数量级地少于这几个超级城市。作为例子,这里面 Xiamen 的人数大约是十几人。按照目前的趋势,明年我应该可以让榜单里 Xiamen 的人数加 1,不过这是在顺应历史的进程吗?我不知道。

技术积累

上面记录的只是一些个人的变故。而在技术层面,这一年来我还是做到了不少进步值得分享,正如本文的标题:『从增查改删到贡献开源』。

参与开源

我倒是很早之前就在使用 Github 了,在上面也放了不少玩具级的编译器、解释器、模拟器之类的项目。但要真正参与到一个活跃的大型开源项目里并成为主要贡献者之一,这件事我才刚刚做到。

做到这个事情的动机,和我们团队项目中用到的富文本编辑器有直接的关系:我们选择了定制性很强的 Slate.js 框架,这个框架虽然 star 数量不少(目前已经超过 6k)并且 API 非常强大,但稳定性一直不够。很快我们就发现等待上游的更新是不现实的,必须自己动手。在投入一些努力后,我在这个框架的 100+ 贡献者里获得了前十的排名,修复了一些关于历史记录栈、输入法和文档变换 API 的 bug,并且翻译了一份中文文档。要说贡献开源对个人有什么帮助的话,我体会最深的大概有这几点吧:

  • 我了解到了正经维护开源项目和往 Github 上扔作业代码和玩具代码的区别,明白了一个细分领域最优秀的框架代码维护方式原来也不过如此。
  • 维护者对 PR 常常会给出详尽的 Review 意见,这些来自顶级开发者的 Review 能让人跳出写业务逻辑的一亩三分地,更完善地考虑代码质量——鸡汤地说,进步的最好方式就是向比自己更优秀的人学习。
  • 直接地和框架作者讨论的过程给了我更多的自信。作为副作用,我在怼人(吵技术架)的时候有把握多了 😈
  • 代码并入主干给了我很大的成就感。如果说今年我最满意的代码是什么,应该是这个一行解决 4 个 Issue 的 PR 吧。

去年的这个时候,只有几个月经验的我还非常仰望那些向开源项目贡献各种 PR 的开发者们。而今天我更觉得他们也没有那么高不可攀,这应该就是一种进步吧。

博客分享

我同样在很早之前就开始写技术博客了,但要说在掘金一类的技术社区上发表专栏,这还是半年以来才刚刚开始的。在分享技术的这个方向上,今年的成果还是挺让我自己满意的。

在半年前刚刚开始写专栏的时候,我对关注者数量还是没有任何要求的——我写我想写的东西就够了,并不图这些虚的东西。不过刚好在今天,掘金上的关注者数量已经突破 3000 人——我没有网红的个性,这个数量非常非常多了!我绝对没有把关注者数量作为自己的 KPI 指标,但还是非常感谢大家的认可……😅

而在博客的数量和质量上,今年除了做到了年初所希望的月更,还有一些细微的不同:

  • 博客没有更新任何《XX 入门》和《XX 新手教程》一类的内容。这些动辄上千赞的新手向内容不是我所感兴趣的,在可见的未来也不会有,除非介绍我们团队造的新轮子。
  • 博客没有更新任何《XX 源码解析》一类看似高深实则难读的内容。相反,我专门写了一篇文章指出这类内容的问题。这是我对技术写作的另一个要求:不写肤浅的新手向选题,但只要决定了题目,就一定要产出对读者友好的内容。
  • 博客开始更新了一些『把技术和人文结合』的内容(虽然都还很幼稚)。比如,我讨论了编程的变量命名和文科的语言学有什么关系、新前端框架的出现是否符合《黑天鹅》里的随机性、变量的生命周期如何类比到《寻梦环游记》里的死亡和遗忘(这个想法居然带来了一篇小说)等等。这些选题的主要来源是近期我阅读的一些『杂书』,把各个领域的书籍内容和当前的工作相结合时,那种 connecting the dots 的感觉还是相当有趣的!有机会的话,希望能和大家分享一份有意思的书单吧 😀
  • 博客开始关注批判性的技术讨论,而不是单调的新技术介绍。比如,我会抨击炫技的烂代码、定量分析 Vue 是否抄袭了 Angular、提出对技术写作行文方式的问题…现在太多平铺直叙的技术文章让社区显得单调,我相信这个方向里能写的杂文还有很多。
  • 博客里对于真正的『技术干货』,我希望更多地以 Github 上的 Issue 和 PR 的形式去沉淀,而不是写一些在社区里没什么人看的『深度』文章。

总的来说,在博客的更新上,我所面临的最大问题其实和去年的这个时候相比,已经从『找不到有什么好写的』慢慢变成了『选题太多没空写』了……也许这确实是一种进步,不过也带来了新的问题。作为解决方案,我的博客源码里加入了 Idea Pool 的概念,有时间的时候会从中选出题目来写,有灵感的时候也会更新这个 Pool。至于效果如何,感兴趣的同学不妨关注下我期待一下吧~

总结与展望

到这里,自吹自擂的部分应该就结束了。最后就是一些体会,和对即将到来的下一年的期望吧。

成长心得

这里还是列出感受最深的三点吧:

  • 持续地关注代码的质量可以培养出一种鉴别代码的『品味』,目前我的水平还不足以将这种抽象的概念完整地总结出来,但宽泛地说,在完成工作之外多做思考,多去考虑如何改进,这条路不会错。
  • 不论是公司还是开源社区,广义上的交流都非常重要。除了工作中和 QA、PM 等伙伴的交流,在社区要推进一件事情,所需要的 Issue 描述比例一点也不少。从这个角度上说,公司的会议和社区里的 Issue 等东西都是在代码之外,非常重要的沟通渠道。我们需要承认它们的价值,再去考虑如何做得高效。
  • 个人成长事件非常的『黑天鹅』,随机性非常强,我无法把握几年后和我共事的人会是谁,但个人的技术进步能够让我们对这些事情有更多的把握:不被面试刷掉就是这样的把握。这就是在这个阶段,我对『且行好事,莫问前程』的理解了。

下年目标

不想立太多 flag,明年的我在技术上能够做到这些就很够了:

  • 学习一门舒适区外的新技术(比如学习某个前端框架就不算)。
  • 博客保持月更(忙起来的时候这其实很难)。
  • 能参与做出(而不是维护)一个在社区内有价值的开源项目,以个人或团队的名义都算。
  • 保持工作和生活的平衡。之前阅读到的一篇校友 Linux 大牛的访谈对我很有触动。我希望能在更长的时间段里保持的兴趣和热情,而不是在长期的加班下最终 burn down。

总之希望明年还能继续成长,最后在此与君共勉吧~

关注下面的标签,发现更多相似文章
评论
说说你的看法