程序员

Redis  之父  Salvatore Sanfilippo,一名意大利程序员,大家更习惯称呼他 Antirez。以下内容为 Antirez 在 Redis 诞生六周年之际,特意撰写的一篇博文 - 分享了他如何看待个人副业项目(side project)与主业项目(main project)之间的关系,以及他在 Redis 项目上的成功实践。

Antirez(image via flickr)

截止到今天,Redis 已经六岁了。对我来说,这真是一个不可思议的成就,因为在过去,我转换到下一个新项目的速度非常快。在我做过的所有项目中,也曾有过持续开发六年的,但是没有一个项目像 Redis 一样,在花费了我这么多精力之后,每天依然能够吸引我的绝大部分注意力。 

我是怎样做到停止新项目的开发,集中精力在唯一一个项目(Redis)之上的呢?这样的话,就可以让这个唯一的项目完全充斥于我的整个职业生涯。对于一个有着有限生命周期的人来说,这样做牺牲太大了,我不是很情愿。非常幸运的是,我从没有这样做过,也从没有停止尝试新事物。

如果我回首过去的六年,实际上有无数的副业项目围绕在我的身边,有时与 Redis 相关,有时和 Redis 根本就没有关系。

  1. Load81,儿童编程学习软件。
  2. Dump1090,ADS-B 无线电解码器软件。
  3. 一个用 JavaScript 编写的放射线跟踪器。
  4. lua-cmsgpack,使用 C 语言编写,用于 Lua 编程语言环境。
  5. linenoise 行编辑库(可替换 GNU Readline)。用在 Redis 上。好吧,当时这个东西并不重要。
  6. lamernews,一个基于 Redis 的 Hacker News 克隆软件。
  7. Gitan,一个小巧的 Git Web 客户端软件。
  8. shapeme,模拟釉化效果的图片处理器。
  9. Disque,一个分布式队列消息软件(目前正在开发中)。

而且,还有更多的项目都丢弃掉了,因而没有罗列在这里。有趣的事情是,以上所列项目,并不是随意选择,或者自由发挥的结果,其实,这些副业项目都有一个共同的目标,就是可以让我愉悦和快乐。这些项目中的代码,对于其他人来说,价值都不是很大。

正是因为这些副业项目的存在,当我在主业项目上,由于连续不断的工作而导致身心疲惫,甚至极其厌烦的时候,我就可以马上做些不一样的事情。这样稍事休息和调整之后,我又能够重新聚焦于 Redis 项目了。而且,还能再一次找到与 Redis 项目愉悦相处的正确动机 - 归根结底,就是为他人创造更多的价值。

基于以上所言,你可能会认为,我目前正在利用 20% 的时间鼓捣我的 Disque - 那个分布式消息队列软件,其余 80% 的时间和精力聚焦在 Redis 的进一步开发上,是这样吗?

回答错误。实际情况是,在 Redis 和其他项目上的精力分配比例大约是处于 80% - 20% 之间,或者,长期来看,我在 Redis 项目上投入的精力几乎趋近于零。正是为了信守与一个项目(Redis)的长期约定,你需要把这个项目作为你探索新事物的长期替代品。

副业项目可以帮助你成就更大更重要的项目。再进一步来看,这些副业项目通常都是真正有趣项目的发源地和起始点。Redis 这个项目原本就是一个叫做 LLOOGG 的副业项目的一部分。有时你暂时放下主业项目的工作,就是由于副业项目的原因,然而,当这种情况发生时,并不是因为你的副业项目吸引了你的更多注意力,而是因为你需要设法找到利用时间的更好办法,相对于主业项目来说,副业项目更重要、更有趣,更加引人入胜。

截至到今天,Redis 已经六岁了,但它依然充满着活力:它还在不断赢得越来越多开发者的注意,而且,为了在每个星期都能给用户提供更多的价值,它还在持续地改进之中。然而,对于我来说,更多的用户,更多的开发者贡献,都不能改变我的安排。Redis 能够取得今天的成就,正是我们大家一起倾心投入的总和,以及坚持不懈六年之久的结果。为了继续沿着同样的路径向前迈进,我可以确定,在未来可预见的若干年里,还会有一些副业项目和我一起相伴相随。

英文原文:Side projects