安迪结婚的时候,七大姑八大姨,领导同事朋友来了60个人。
在婚宴上,需要把这60个人座位安排好,让大家都舒舒服服的。
安迪觉得这是一个简单的“优化”问题,就自告奋勇去搞定它。
出乎意料的是,安排座位这件事非常难,安迪下载了几个软件,都不好使。
既然现有软件不行,那就自己做一个吧!
安迪之前用FORTRAN、C 和 C++ 开发过运筹学、卫星图像处理、印刷电路板设计、环境建模和分布式系统,有相当多的开发经验,他写了一个很简陋的软件,成功地解决了座位安排的问题。
婚礼以后,安迪就想:“能不能把座位安排软件给商业化了?”
但是这样的软件有市场吗?有人会用吗?能靠它谋生吗?
当时安迪在一家创业公司工作,公司前景黯淡,与其坐以待毙,不如自己勇敢试一试。
2005年,基于Web的软件还处于起步阶段,他用C++和跨平台的框架QT编写了一个桌面软件:PerfectTablePlan。
没想到,软件在推出24小时之内,就获得了一个订单,这让安迪信心大增:
看来给活动安排座位是个有需求的市场
。
他成立了公司,独自包揽了开发、销售、推广、客服等工作,而会计的活儿就让老婆来做。
在安迪的不断打磨下,PerfectTablePlan越来越完善。
除了婚礼之外,PerfectTablePlan还可以用于各种庆典、聚会、活动,只要是需要安排座位的场合,它都能胜任。
用户可以用图形的方式布置圆形、方形、长条形桌子,还还支持输入参会者的详细信息:
A必须坐在B的旁边
C想和D坐在一起
E和F不想和G坐在一起
X是素食主义者,Y对坚果过敏
是否确认来参加会议
诸如此类的信息,一句话:它考虑了组织一次大型活动时所有可能出现的情况。
它还可以按照桌子,团体来打印座位表:
还能定制、打印各种各样的座位卡:
甚至可以在场地的大屏上滚动显示座位安排:
PerfectTablePlan的客户越来越多,在那个年代,网络还不普及,很多客户要求邮寄CD。
安迪不得不请他的父亲来帮忙,邮寄了大约5000张CD,直到2016年才停止了邮寄业务。
PerfectTablePlan影响力有多大呢?
到2015年,
10年内卖了4万多份,收入达到数百万英镑
!
一些非常著名的组织和非常著名的活动(处于保密原因,安迪也没有权限透漏具体)都在使用它,它接待过皇室成员、名人和国家元首。
有一次,安迪不得不熬夜解决一个问题,确保一个举世闻名的事件不会变成一场灾难。
无数用户对PerfectTablePlan赞誉有加:
“我每年都会主持一场 500 人参加的慈善活动。您的软件对我帮助很大......”
“上个月,我使用 Perfect Table Plan 为 250 位客人组织了一场声望颇高的正式晚宴,我发现这个程序帮了我大忙....”
“只是想让你知道,你的程序对我的 2,500 名客人来说效果非常好!这个周末我真的很享受使用它的乐趣......”
“PerfectTablePlan 在我们最近的活动中救了我们一命。“
“我非常喜欢 PerfectTablePlan,这是我花过的最值得的钱......”
过去的20年,虽然竞争对手和操作系统在变来变去,软件生态也发生了很大的变化,安迪一直在维护,更新PerfectTablePlan。
现在软件大约有14.5万行C++代码,虽然代码有些丑陋,但产品非常可靠,几乎没有错误。
用户文档也写得非常详尽,PDF版本将近500页!
安迪非常享受这种个人开发的生活,他说他没有获得投资,没有招聘员工,更不可能成为下一个Google或者Facebook,也不可能有喷气式飞机,但是他对生活很满意。
他不会被解雇,也不用给别人发工资,睡觉时也能赚钱。
每天的通勤距离大概是10米,每天在儿子上课前和放学后都能见到他。
不用参加任何会议,没有“最后期限”,没有人告诉他花括号放在什么地方,或者强迫他推出糟糕的软件,只是为了满足某个发布日期。
当觉得自己效率不高时,就去跑步或者做点儿家务。
其实,这就是真正自由的感觉。
当然,这种自由也有很大的代价,他不得不去做一些原本不喜欢的工作:写文档,处理发票,折腾网站。
一年364天都在回复客户的支持邮件
,每次出去度假都必须要带着电脑,确保自己处于有网络的环境下。
安迪的PerfectTablePlan接待过4000人的活动,这是个非常大的人数,因为安排座位看起来很简单,但是让计算机来做的话就是个排列组合问题。
不可能尝试所有客人和座位的组合,因为组合实在太多了。
比如25个客人,排列的方式就有25!=15,511,210,043,330,985,984,000,000 种方式来分配座位。
所以需要一种有效的方法来搜索可能的布局,以便在合理的时间内找到一个好的解决方案,安迪使用遗传算法来实现这一点。
遗传算法的工作原理是模仿达尔文的自然选择过程,不断代代相传:
(1) 使用各种经验法则(“启发式”)来创建初始布局。
(2)布局随机变异和拼接,产生新的布局,并添加到种群中
(3) 弱布局(得分较低的布局)将被剔除出种群
(4) 转至步骤 2
这个过程持续进行,直到得到令人满意的解决方案。
由于遗传算法的工作方式,它不能保证给出数学上最优的答案 ,想得到最优解,传统计算机要运算几年时间。
量子计算机才能真正解决这个问题,实际上,加拿大 D-Wave 公司用于展示突破性新“Orion”量子计算机的时候,选择了三个程序来证明量子优越性,其中一个就是PerfectTablePlan。
安迪给D-Wave定制了一个PerfectTablePlan版本,让量子计算机来实现一次16个客人的最优座位安排。
安迪现在过上了悠哉悠哉,让人羡慕,享受被动收入的生活。
但是刚开始时,绝对不是这样,个人创业的第一年非常辛苦,收入不确定很强,2005年8月,在他创业几个月后,他曾经在论坛上发过这样的贴子:
“我每周工作 60-70 小时,最后只给自己发100英镑工资。如果只拿最低工资,我做汉堡可以赚到 3 倍的钱,希望这种情况不会永远持续下去……”
很快安迪就意识到,不能只是整天编程,在
确保自己开发了一个人们愿意花钱购买的软件以后,还必须要做好营销
。
安迪在营销上花费了大量时间,尝试了各种各样的手段:
1.Google按点击付费
2.和各种媒体合作,发新闻稿
3.参加婚礼和活动策划展,但是摊位费太贵了
4.电子邮件营销
,获得了一份合法的、包含一千多名准新娘的列表,并向她们发送了一封关于 PerfectTablePlan 的电子邮件,但是没有做成一笔生意。
5.在英国和美国的婚礼和活动杂志上花费了几千英镑来做广告
,效果有限
6.在潜在客户经常光顾的论坛上闲逛,回答相关问题,巧妙地推销产品,引导客户到自家网站
7.电话营销
,通常由厚脸皮的人进行,还得有书面脚本,安迪座位程序员拉不下面子,做了几次就不做了
8.写博客自己宣传,这一点安迪做得很好
9.让下载网站纳入自己的软件
......
可以说,市面上能想到的营销活动,安迪基本上都试过了。
最能体现他营销策略的是他对盗版软件的处理方式,人红是非多,国外也有很多人在用盗版,有人试图下载破解版。
所以Google上经常会出现类似这样的搜索:
安迪认为,软件是不可能防止破解的,他自己也做了一个“破解”页面,并且在Google搜索种排名很高(安迪做了SEO):
用户点进去以后发现,这个页面解释了为什么下载破解版PerfectTablePlan是危险的,以及为什么应该购买正版的License。
用这种办法,安迪成功地“说服”了很多人购买正版,从中获取了不少收入。
安迪无意间发现了座位安排这个小众的市场,开发了一个软件来实现这个需求,在不断打磨软件的同时,又不断地进行各种各样的的营销活动,最后终于达到了一人公司,在家工作,被动收入的舒服状态,这可能就是程序员理想中的生活吧!
福利时间
看完这篇文章,
你有什么感想呢?是不是也有很多绝妙的想法等待实现呢?
欢迎在评论区中留言,
我会从中抽取5人,每人送一本《软件设计要素》
。
如果你喜欢思考这些问题:
为什么软件这样设计,以及为什么有些设计如此成功,而另一些却如此失败?
那这本书不容错过。