http://redis.io/
Redis 之父 Salvatore Sanfilippo,一名意大利程序员,大家更习惯称呼他 Antirez。
以下内容为 Antirez 在 Redis 诞生六周年之际,特意撰写的一篇博文 - 分享了他如何看待个人副业项目(side project)与主业项目(main project)之间的关系,以及他在 Redis 项目上的成功实践。
截止到今天,Redis 已经六岁了。对我来说,这真是一个不可思议的成就,因为在过去,我转换到下一个新项目的速度非常快。在我做过的所有项目中,也曾有过持续开发六年的,但是没有一个项目像 Redis 一样,在花费了我这么多精力之后,每天依然能够吸引我的绝大部分注意力。
我是怎样做到停止新项目的开发,集中精力在唯一一个项目(Redis)之上的呢?这样的话,就可以让这个唯一的项目完全充斥于我的整个职业生涯。对于一个有着有限生命周期的人来说,这样做牺牲太大了,我不是很情愿。非常幸运的是,我从没有这样做过,也从没有停止尝试新事物。
如果我回首过去的六年,实际上有无数的副业项目围绕在我的身边,有时与 Redis 相关,有时和 Redis 根本就没有关系。
- Load81,儿童编程学习软件。
- Dump1090,ADS-B 无线电解码器软件。
- 一个用 JavaScript 编写的放射线跟踪器。
- lua-cmsgpack,使用 C 语言编写,用于 Lua 编程语言环境。
- linenoise 行编辑库(可替换 GNU Readline)。用在 Redis 上。好吧,当时这个东西并不重要。
- lamernews,一个基于 Redis 的 Hacker News 克隆软件。
- Gitan,一个小巧的 Git Web 客户端软件。
- shapeme,模拟釉化效果的图片处理器。
- Disque,一个分布式队列消息软件(目前正在开发中)。
而且,还有更多的项目都丢弃掉了,因而没有罗列在这里。有趣的事情是,以上所列项目,并不是随意选择,或者自由发挥的结果,其实,这些副业项目都有一个共同的目标,就是可以让我愉悦和快乐。这些项目中的代码,对于其他人来说,价值都不是很大。
正是因为这些副业项目的存在,当我在主业项目上,由于连续不断的工作而导致身心疲惫,甚至极其厌烦的时候,我就可以马上做些不一样的事情。这样稍事休息和调整之后,我又能够重新聚焦于 Redis 项目了。而且,还能再一次找到与 Redis 项目愉悦相处的正确动机 - 归根结底,就是为他人创造更多的价值。
基于以上所言,你可能会认为,我目前正在利用 20% 的时间鼓捣我的 Disque - 那个分布式消息队列软件,其余 80% 的时间和精力聚焦在 Redis 的进一步开发上,是这样吗?
回答错误。
实际情况是,在 Redis 和其他项目上的精力分配比例大约是处于 80% - 20% 之间,或者,长期来看,我在 Redis 项目上投入的精力几乎趋近于零。正是为了信守与一个项目(Redis)的长期约定,你需要把这个项目作为你探索新事物的长期替代品。
副业项目可以帮助你成就更大更重要的项目。再进一步来看,这些副业项目通常都是真正有趣项目的发源地和起始点。Redis 这个项目原本就是一个叫做 LLOOGG 的副业项目的一部分。有时你暂时放下主业项目的工作,就是由于副业项目的原因,然而,当这种情况发生时,并不是因为你的副业项目吸引了你的更多注意力,而是因为你需要设法找到利用时间的更好办法,相对于主业项目来说,副业项目更重要、更有趣,更加引人入胜。
截至到今天,Redis 已经六岁了,但它依然充满着活力:它还在不断赢得越来越多开发者的注意,而且,为了在每个星期都能给用户提供更多的价值,它还在持续地改进之中。然而,对于我来说,更多的用户,更多的开发者贡献,都不能改变我的安排。Redis 能够取得今天的成就,正是我们大家一起倾心投入的总和,以及坚持不懈六年之久的结果。为了继续沿着同样的路径向前迈进,我可以确定,在未来可预见的若干年里,还会有一些副业项目和我一起相伴相随。
英文原文:Side projects
Side projects
antirez 2213 days ago. 247164 views.
Today Redis is six years old. This is an incredible accomplishment for me, because in the past I switched to the next thing much faster. There are things that lasted six years in my past, but not like Redis, where after so much time, I still focus most of my everyday energies into.
How did I stopped doing new things to focus into an unique effort, drastically monopolizing my professional life? It was a too big sacrifice to do, for an human being with a limited life span. Fortunately I simply never did this, I never stopped doing new things.
If I look back at those 6 years, it was an endless stream of side projects, sometimes related to Redis, sometimes not.
- Load81, children programming environment.
- Dump1090, software defined radio ADS-B decoder.
- A Javascript ray tracer.
- lua-cmsgpack, C implementation of msgpack for Lua.
- linenoise line editing library. Used in Redis, but well, was not our top priority.
- lamernews, Redis-based HN clone.
- Gitan, a small Git web interface.
- shapeme, images evolver using simulated annealing.
- Disque, a distributed queue (work in progress right now).
And there are much more throw-away projects not listed here.
The interesting thing is that many of the projects listed above are not random hacking efforts that had as an unique goal to make me happy. A few found their way into other people’s code.
Because of the side projects, I was able to do different things when I was stressed and impoverished from doing again and again the same thing. I could later refocus on Redis, and find again the right motivations to have fun with it, because small projects are cool, but to work for years at a single project can provide more value for others in the long run.
So currently I’m using something like 20% of my time to hack on Disque, a distributed message queue. So only 80% is left for Redis development, right? Wrong. The deal is between 80% of focus on Redis and 20% on something else, or 0% of focus on Redis in the long term, because in order to have a long term engagement, you need a long term alternative to explore new things.
Side projects are the projects making your bigger projects possible. Moreover they are often the start of new interesting projects. Redis itself was a side project of LLOOGG. Sometimes you stop working at your main project because of side projects, but when this happens it is not because your side project captured your focus, it is because you managed to find a better use for your time, since the side project is more important, interesting, and compelling than the main project.
Redis is six years old today, but is aging well: it continues to capture the attention of more developers, and it continues to improve in order to provide a bit more value to users every week. However for me, more users, more pull requests, and more pressure, does not mean to change my setup. What Redis is today is the sum of the work we put into it, and the endurance in the course of six years. To continue along the same path, I’ll make sure to have a few side projects for the next years.
UPDATE: Damian Janowski provided an incredible present for the Redis community today, the renewed Redis.io web site is online now! http://redis.io. Thanks Damian!
HN comments here: https://news.ycombinator.com/item?id=9112250
Redis 之父 antirez 退休了
回忆十年前 Redis 项目刚刚开始的时候,那应该是我职业生涯最激动人心的时刻。为了持续扩容服务,我们创造了很多新概念。这些概念其实已经在技术领域流行很多年了,但是在当时我们并不了解也不曾验证过是否可行。不过没关系,我们喜欢解决问题,并从中发现很多乐趣。Redis 刚刚诞生的时候真的是非常有意思的(让人难忘的)。
经过了这么多年的打磨,我的工作性质也发生了变化。其实我根本就不想做一个软件维护者(修 bug、优化代码的工作实在太无聊了)。
我写代码是为了更好的表达自我,这是艺术创作(乐趣),而不单单是为了把事情搞定(挣钱)。我的目标更多的是为了追求美感,而最终能不能起到作用仅仅是附带的结果而已。我宁可大家认为我是一个糟糕的艺术家,也不希望只被看成一个优秀的程序员。但是现在我被要求这要求那,就因为这个项目变得如此重要。我不能随意表达自己(艺术创作,大刀阔斧的改代码),而只能在现有的代码基础上维护(小打小闹)。我并不是说这样不对,这只是现阶段的 Redis 必须要接受的方式。但是我个人有点受不了,最近几年我感到很憋屈(Linus 也会是这种感觉么?)。
所以呢,社区里面的同志们啊,我告诉你们我要退居幕后了。至于做什么还没有想好,会不会继续写代码也不确定。我比较怀疑自己是否能够完全放弃写代码,只是因为写代码实在是太好玩了(此处有个调皮的表情)。
Redis 是我职业生涯中压力最大的项目,可能也是最重要的项目。最近这些年编程世界的变化我并不是特别喜欢(不知道说的是哪方面的变化),虽然这段旅程非常艰辛,能够有机会和很多特别的人一起工作交流也让我感觉非常知足。
我还想发展一下个人的一些兴趣爱好,比如写写博客就挺好,以前我一直想写但是一直没有太多时间。如果你们还对我这样一个又老又怪的程序员感兴趣,那就去 Twitter 上围观我吧。