Thursday, March 29, 2012

Let's Match!開發心得和紀錄


Let’s Match!開發心得和紀錄
Heron Yang @ NCTU.CS
2012.03.28
Site Link:
http://letsmatch.nctucs.net/

白描法講述這幾天開發的過程:
某日,無意間在Facebook上頭看到老師分享一份文章,談論一個程式可以紀錄使用者的電話號碼和心上人(暗戀對象)的電話號碼,若來日該位心上人,也使用此程式而配對成功,會發送訊息給雙方。我那時看到這便覺得可以改用Facebook帳號來做一樣的事情,畢竟Facebook是當下最多人使用的社群平台,很適合。
2012年寒假,認識一位系上同學,專研於server-side相關事務,擅長Perl語言,於是找他合作;分工上,我負責client-side(那時我也只會HTML/CSS, JavaScript),他負責server-side,從假期最後一週開始,預計一週是足夠的,事實證明的確足夠「完成」,但並沒辦法真的發表。
client-side的資料送到後端,他使用Perl/CGI的方式去讀取,且將配對資料直接以檔案的方式存在系統裡面,對於有心人要去盜取是十分容易,所以這個方法不能被接受;同時,十分明顯地,欲解決此類問題應該使用一個具有安全性的資料庫,如php+mySQL。提出這個方式去解決時,與我合作的同學表示他不會也沒有意願去學,我也不曾接觸過,於是就這樣Let’s Match!被擱置了約一個多月。
剛開學的時候課業上比較輕鬆,便突然興起,在宿舍架設server,如此一來就可以把自己一些小作品分享到網際網路上頭,陸續我寫了Life TimerDoodle Events Calendar,分享出去之後,我看著Google Analytics的動態圖表,試想著使用者的行為和心理,沒多久,我把Let’s Match!移到這台server,捨棄了之前同學Perl/CGI的code,改用php+mySQL的方法,那時我完全不會,就邊學邊做!
不到一週的時間,功能差不多完成,找了人幫忙設計版面和圖案。當時看到Facebook上頭開始流傳要開始提供「暗戀」這個功能,跟Let’s Match!可以說是一模一樣的東西,一時我有點緊張也有點興奮,變加速開發的進度,不著兩週就在一個週日晚上發表了!
還記得是晚間11點半我分享到自己的Facebook版上和系上社團的版上,湧入超出我預計的人數,甚至有部份功能沒有辦法使用,那天我3點才睡,隔天七點起來修改程式碼。這件事情證明當初開發時太衝促,沒有做足夠的測試,尤其是此類網頁相關的程式,往往在不同平台或是瀏覽器可能會得到不同的問題。

  • 沒有測試足夠的平台
  • 沒有預料到所有可能的使用情況
又隔日,發表不到兩天的晚上,觀察到某位配對成功的使用者,卻沒有收到App發出的訊息,一時間覺得大事不妙,暫時關閉了網站,又自己寫信件給所有曾經配對成功的人告知他們已經配對成功,花了不少精力。
當天半夜詢問該位使用者,發現是當初他在登入App時候,有部份權限勾選不允許導致,我把這個使用上的可能造成的疏失,寫到網頁的訊息中,繼續經營Let’s Match!

App運作背後機制:
  • 只有把App分享出去,才能提升自己Match的成功率
    • 使用者希望跟「那個人」Match,故應該至少分享給一個人,所以此級數 r>=1 必不收斂(每個人都有心上人、網路使用人口不限的情況下)
  • 看到頁面Match成功次數,讓使用者躍躍欲試

心得:
個人架設server的經驗頗短,只有區區幾周的時間,Let’s Match!中使用到的apache, ssh, php, mySQL, etc.都是現學現賣,意識到使用者比預計多的時候,頓時感覺壓力頗大,來自於:
  • 對使用者使用經驗的責任
  • 對資料安全的責任
  • 對自己作品的要求
同時也意識到這個程式的本質是讓人填寫自己心中最在意的一件事情,握有這些資料、操控這些訊息變成一種責任,十分擔心因為這個App造成許多不必要的誤會。

教訓、檢討與需求:
  • 開發流程完整,釋出前應有少數人的測試階段
  • server端的安全問題要了解且下功夫
  • 了解server能夠承受的量
  • 文字(包括中文與英文)都應該要多與人討論
  • 延攬同興趣的人進行分工,目前需要「設計」、「文字」、「宣傳」,可增加一位programmer

下一步:
  • 已經蒐集使用者的建議,可以添加上去
    • 增加VOID選項
    • 搜尋朋友功能
  • server管理、維護和安全問題改進
  • 防止惡意使用行為
  • 增加完整度、提升使用品質、增加趣味性,方可以延攬更多使用者
  • 文字修飾、宣傳

疑慮:
  • 此程式對自己的意義和目的?
  • 資料安全產生的法律問題我承擔?
  • 此程式發展與自己原先計畫的不同,本應該沒有要花這麼多時間相對犧牲掉所謂的「本業」,是否應該停止?

7 comments: