01
無心插柳
安迪結婚的時候,七大姑八大姨,領導同事朋友來了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,這是我花過的最值得的錢......”
02
生活方式
過去的20年,雖然競爭對手和操作系統在變來變去,軟件生態也發生了很大的變化,安迪一直在維護,更新PerfectTablePlan。
現在軟件大約有14.5萬行C++代碼,雖然代碼有些丑陋,但產品非常可靠,幾乎沒有錯誤。
用戶文檔也寫得非常詳盡,PDF版本將近500頁!
安迪非常享受這種個人開發的生活,他說他沒有獲得投資,沒有招聘員工,更不可能成為下一個Google或者Facebook,也不可能有噴氣式飛機,但是他對生活很滿意。
他不會被解雇,也不用給別人發工資,睡覺時也能賺錢。
每天的通勤距離大概是10米,每天在兒子上課前和放學后都能見到他。
不用參加任何會議,沒有“最后期限”,沒有人告訴他花括號放在什么地方,或者強迫他推出糟糕的軟件,只是為了滿足某個發布日期。
當覺得自己效率不高時,就去跑步或者做點兒家務。
其實,這就是真正自由的感覺。
當然,這種自由也有很大的代價,他不得不去做一些原本不喜歡的工作:寫文檔,處理發票,折騰網站。
一年364天都在回復客戶的支持郵件,每次出去度假都必須要帶著電腦,確保自己處于有網絡的環境下。
03
技術挑戰
安迪的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個客人的最優座位安排。
04
營銷
安迪現在過上了悠哉悠哉,讓人羨慕,享受被動收入的生活。
但是剛開始時,絕對不是這樣,個人創業的第一年非常辛苦,收入不確定很強,2005年8月,在他創業幾個月后,他曾經在論壇上發過這樣的貼子:
“我每周工作 60-70 小時,最后只給自己發100英鎊工資。如果只拿最低工資,我做漢堡可以賺到 3 倍的錢,希望這種情況不會永遠持續下去……”
很快安迪就意識到,不能只是整天編程,在確保自己開發了一個人們愿意花錢購買的軟件以后,還必須要做好營銷。
安迪在營銷上花費了大量時間,嘗試了各種各樣的手段:
1.Google按點擊付費
2.和各種媒體合作,發新聞稿
3.參加婚禮和活動策劃展,但是攤位費太貴了
4.電子郵件營銷,獲得了一份合法的、包含一千多名準新娘的列表,并向她們發送了一封關于 PerfectTablePlan 的電子郵件,但是沒有做成一筆生意。
5.在英國和美國的婚禮和活動雜志上花費了幾千英鎊來做廣告,效果有限
6.在潛在客戶經常光顧的論壇上閑逛,回答相關問題,巧妙地推銷產品,引導客戶到自家網站
7.電話營銷,通常由厚臉皮的人進行,還得有書面腳本,安迪座位程序員拉不下面子,做了幾次就不做了
8.寫博客自己宣傳,這一點安迪做得很好
9.讓下載網站納入自己的軟件
可以說,市面上能想到的營銷活動,安迪基本上都試過了。
最能體現他營銷策略的是他對盜版軟件的處理方式,人紅是非多,國外也有很多人在用盜版,有人試圖下載破解版。
所以Google上經常會出現類似這樣的搜索:
安迪認為,軟件是不可能防止破解的,他自己也做了一個“破解”頁面,并且在Google搜索種排名很高(安迪做了SEO):
用戶點進去以后發現,這個頁面解釋了為什么下載破解版PerfectTablePlan是危險的,以及為什么應該購買正版的License。
用這種辦法,安迪成功地“說服”了很多人購買正版,從中獲取了不少收入。
05
總結
安迪無意間發現了座位安排這個小眾的市場,開發了一個軟件來實現這個需求,在不斷打磨軟件的同時,又不斷地進行各種各樣的的營銷活動,最后終于達到了一人公司,在家工作,被動收入的舒服狀態,這可能就是程序員理想中的生活吧!
看完這篇文章,你有什么感想呢?是不是也有很多絕妙的想法等待實現呢?歡迎在評論區中留言,我會從中抽取5人,每人送一本《軟件設計要素》。
如果你喜歡思考這些問題:為什么軟件這樣設計,以及為什么有些設計如此成功,而另一些卻如此失敗?那這本書不容錯過。
軟件是一個復雜的巨系統,這本書以系統化的視角和以人為本的價值觀,為軟件設計者提供了一個全新的變革性視角:
1.介紹一些簡單的技術,軟件設計師可以立即運用這些技術來提高設計的質量。
2.提供一個看待軟件的全新視角,這樣你不僅可以將軟件視為大量功能交織的組合,還可以將其視為概念的系統組合
3.讓從事軟件應用和開發的研究人員和從業者相信,軟件設計是一門令人興奮且需要智力的學科。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.