文章目录
  1. 1. 小事记
    1. 1.1. 关于离职
    2. 1.2. 关于二线城市
  2. 2. 技术积累
    1. 2.1. 参与开源
    2. 2.2. 博客分享
  3. 3. 总结与展望
    1. 3.1. 成长心得
    2. 3.2. 下年目标

区区一年的时间足够发生太多事情。去年的这个时候,我肯定不会想到现在的我会在厦门去往杭州参加 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。

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

文章目录
  1. 1. 小事记
    1. 1.1. 关于离职
    2. 1.2. 关于二线城市
  2. 2. 技术积累
    1. 2.1. 参与开源
    2. 2.2. 博客分享
  3. 3. 总结与展望
    1. 3.1. 成长心得
    2. 3.2. 下年目标