吃自己的狗食——eat your own dog food

为什么说“吃自己的狗食(eat your own dog food)”在开发软件产品中是一件很重要的事

目录

吃自己的狗食eat your own dog food)是一种比喻的说法。对于软件开发公司而言,意思就是自己要尽量多用自己开发的软件。

唯有这样,才能知道它是不是存在问题;而唯有重度的使用,我们才知道它到底方不方便使用。

现实情况

而令人遗憾的是,软件开发人员常常不是自己开发软件的用户。有很多情况下,可能就是上司交给我们一个任务,需求往往也是客户拟好的。作为一名开发人员,我们只是把开发当作一项任务,一项“工作”而已。

经常的情况是我们对软件的使用场景不熟悉,也不知道软件为什么设计成这样,我们常常只是机械地完成客户交给我们的任务。

如果某个特性客户提到了,那它才会出现在最终的产品中;如果很不幸的客户没有提到,又或者我们与客户之间存在沟通不良(这种情况太普遍),那么这个特性就在我们的产品中消失了!而这个对最终的用户来说可能是很重要的,而我们之所以对这样一个特性的遗漏毫无感觉,一个很重要的原因就是我们并不吃自己的狗食!

一个坏的事例

我曾经用过 XX 词典,它有个单词本,能让你加入在阅读过程中加入的新词,然后它会安排你复习,但是它总是按照你加入这些单词的顺序来呈现它们

那么这会有什么问题呢?我相信很多经常使用背单词功能的人是不难注意到这样一个事实,那就是一个固定的顺序会强化你的记忆,使你很容易在这种顺序的呈现过程中回忆起某个单词的意思,然后你会觉得自己记住了这个单词,但实际上并没有!

但一旦脱离这种顺序呈现的环境,比如你在另一篇文章中再次看到这个单词,你很可能想不起来它是什么意思。

所以,复习过程中的好的做法应该是打乱顺序,每次都使用随机的顺序。

另外一个问题是,你只能加入单词,却不能自行添加一个与之相关的例句,它会在它的例句库中找一个句子与其配对。很多情况下,我在阅读中,碰到一个句子有一个生词我不能理解,查了这个生词后,对我而言,其实最好的例句也许就是这个句子本身,但它却不能让我加入这个例句。

而一个单词常常有很多意思,它配的句子往往不是我原来看到的意思。我经常看一些技术的文章,我也许只关心某个单词在技术领域的狭隘意思,对于它的其它意思我可能并不关心。

所以有些时候,当我复习时,我都想不起来我为啥要加入这样一个奇怪意思的单词,它配的例句与我原来看的差别很大。但我在另一篇技术文章中看到这个单词时,我可能还是想不起来它在技术领域的意思,尽管我可能对它复习了很多次!

事实上,就这个两个问题,我还给软件的开发方发过 email 去反映,因为很多的软件总是说欢迎你给它们提意见,所以我就去提了。

然后我就收到一个热情洋溢的回信(当然也很可能是机器自动回复的),说:“非常感谢你的来信,我们会积极考虑你的提议”之类云云。

其实我给蛮多的软件提过建议,都会收到类似的回信,是不是真的采纳了我就不知道了。

过了一段时间以后,我再去看它们的新版本,没有发现任何改进;再后来,我也没有去关注了,而且我也很少用到它了,因为的确感到不好用。

当然了,我估计他们还是看了我的建议,但是并没有引起他们的共鸣,或许在他们的眼中这些建议是无足轻重的,那么原因是什么呢?我想到的最大可能的原因就是:团队本身很可能就不怎么重度使用这个产品,他们并不吃自己的狗食。

当然,也可能是我以小人之心度君子之腹,又或者我的需求确实比较奇葩,没有代表性。

在他们眼中,或许产品已经是足够好了,不需要再改进了。而如果他们真的是积极地使用自身的产品呢?我想或许都不需要我去提什么建议,这些特性也许就已经在产品中有了。

一个好的事例

必须说,很多时候很多软件都不那么令人称心如意。如果有那么些软件让人用上去感觉很惊喜,作为一名程序员来说,那 IDE(集成开发环境) 可以算一个。

而原因自然也不难明白,因为这程序员开发给自己用的工具!

事实上,很多新的 IDE 版本就是在老版本的 IDE 中开发的,然后这个过程不断迭代。所以这其实或许是一个吃自己狗食的最好例子。

没有比程序员本身更明白自己对 IDE 需求的人了。他们不断在使用这个产品,也最清楚自己还需要什么、产品还有什么不足,而且他们也有这个能力去改进它!

尽管由于复杂性的原因,使用过程还是可能遇到 bug 或不稳定等现象,但必须承认,在 IDE 运行良好的时候,它的确是一个很贴心的工具!

启示

那么,从以上一些事例中我们能得到什么启示呢?

假如你要开发一个比如说炒股的软件吧,你想招聘一个人来负责。有一个人技术很牛逼,基本明白股票的业务,但本身对炒股不太感冒;而另一个人技术也还可以,而同时是一个资深股民,使用过很多类似的软件,甚至能说出许多它们的痛点来。

而你作为负责人,你会招聘谁呢?如果你选择那位技术牛逼的,很大可能你会得到一款很稳定但与此同时也很平庸的产品!