主次分明

2005年10月12日 周思博

我们总算要结束调整FogBugz 4.0而开始开发FogBugz实行5.0了. 我们刚发行了挺大的更新,修复了成千上万的从没人注意过的小错误(当然也加入了几个没人会注意的新的小错误). 现在我们要开发一些超越时代的新功能了.

当我们准备就绪开发5.0的时候,我们已经准备了足够的点子让1700个程序员忙上个几十年. 很可惜,我们只用3个程序员,预定的发行日期又是明年秋天,所以我们一定要分分主次,区分优先.

在我告诉你我们怎么区分优先之前,我先得告诉你两个错误的方法:

第一,如果你发现自己加入一个新功能的唯一的原因是你答应过一个客户,你脑子里立刻得亮起红灯. 如果你只是为了一个客户而操劳,要么你有个说话不家思索的推销员,要么你慢慢的已经变成了咨询服务了.咨询服务没什么不好,也可以过好日子,只是咨询服务没卖包装软件赚的那么多.

包装软件的特色就是要就要,不要就不要.你开发了一个软件,包装起来,客户要么买,要么不买.他们不会讨价说再加一个功能就买. 你不会打电话个微软说:”我很喜欢EXCEL里面能够自动的输出泰文的数字的功能,可不可以弄个英文版的?”. 你如果这么问了,他们会回答:”谢谢你给微软打电话,你如果是广告咨询;按1.如果要技术咨询,按2;如果你想要注册咨询,按3; 如果你知道你想找的人的分机号码,按4.从头开始,按星号.” 看到了吗? 他们根本不给你选择要加一个新的功能.

个人化的开发就是一个客户告诉你加入什么功能, 你说:”你确定要吗?”;他们回答:”确定的”;你立刻写了一个很漂亮的开发计划,问他们:”这样可以吗?”,他们说:”可以的”. 你让他们在合约上签名,或者画个血书,他们也干. 然后你开始完全按着计划一步步的开发,可成品出来他们却大吃一惊.之后一个星期你得和公司律师商量是否有足够的法律保护和这客户打官司,或者就和客户私了了. 运气好的话,你的客户很好说话,他们把这新的东西藏到抽屉里,再也不会拿出来用; 当然他们再也不会当你的客户了.

个人化的软件和包装软件之间还有咨询软件. 咨询软件貌似包装软件,可只给一个客户用. 咨询软件的特色是:

  1. 你超级廉价的给一个皮鞋厂写软件.

  2. 那皮鞋厂需要一个擦皮鞋的软件.

  3. 你用VB 3.0写了个擦皮鞋的软件. 当然中间也加了点JavaScript, 一点Franz Lisip和一个连在一个旧的MAC上的File Maker的数据库.

  4. 每个人都有创建自己软件公司,成为下一个Bill Gates或者Larry Ellison的梦想.

  5. 你从公司买下了” 擦皮鞋1.0”的版权,找到了几个投资人,创建了”擦鞋软件公司”,

  6. 可惜的是没有一个BETA测试人可以运行你的软件,那源程序真是太复杂了.每个客户都得花上你一个月的时间来安装和调试.

  7. 你的软件又贵,又有很多千奇百怪的要求,所以你也没什么客户.

  8. 你开始给你的销售部门加压.

  9. 你的销售部门发现擦皮鞋的软件现在不流行了,不过有一个客户想要一个烫裤子的软件.

  10. 销售部门立刻和他签了100,000美元的和约.

  11. 你又花了6个月的时间改写” 擦皮鞋1.0”,让它支持烫裤子的功能.

  12. 当然了,没有其他客户需要这个新功能.

  13. 归根到底,你花了一年的时间成为了那个烫裤子公司的廉价劳动力.

  14. 回到(1)

个人来讲,我是强力推荐你只开发包装软件. 卖包装软件给一个新的用户对你来讲没什么额外的开支. 你只是把同样的东西一次次的卖出去,然后赚取利润. 因为客户多了,你可以减低价钱; 而价钱越低,客户也就越多. 大家的日子都很好过.

所以说如果你花时间为一个客户加入什么新功能的话,你基本上就是离开了包装软件而进入个人化的开发和咨询软件的地域了. 当然了,如果你喜好那样,也没什么不对. 只是不管怎样,放在货架上的包装软件是最赚钱的.

我不是说你不该听你客户的意见. 我就认为微软早该把那个自动输出泰文的功能普及到其他文字了.全世界不说泰文的可不少人呢. 也许你认为你应该把开发资源放在让你最大的客户身上; 说到底他们钱最多吗. 可你最终会发现你大多客户和你最大的客户需求不一样. 对Arizona州里一些小客户来讲,自动输出泰文的功能跟本和他们没关系. 帮最大客户开发只和他们有关的东西只有让负责那个客户的销售经理出风头而已.

这条路是不会让你成为Bill Gates的.

好了,现在让我告诉你第二种错误的方法. 不要因为你避不开了才去开发某个功能. “避不开了”不是一个足够好的理由.

在我刚开始Fog Creek的时候,有一天我在整理文件的时候发现蓝色的文件夹用完了. 我整理文件有个系统, 蓝色的文件夹是和客户有关的; 乳白色的是职工的; 红色的是收据; 其他都是黄色的.那天,蓝色的用完了.

我对自己说,蓝色的文件夹总是需要的,我顺便去Staples买一些吧.

真是浪费时间!

我常找借口给花园除草, 补补墙上的洞, 按颜色,语言,号码整理MSDN的光盘. 我可是个刚开始的小公司的人啊,我所有的时间应该就是编写程序和卖我们的产品. 换句话讲,我自欺欺人的告诉自己那些浪费时间的事情也很重要.所以我就主次不分的把那些事情给先做了.

说实话,我只是在拖延时间啊.

我该怎么做呢? 第一,我根本不用按颜色来选文件夹,那真的没什么用. 还有那些MSDN的光盘,找个大盒子装一下就好了.

最主要的是我该认识到重要不是二分的,重要是一种程度,有很多不同的级别.如果你每件事都想做,你什么也做不成.