我對社群網站經營的看法

去年底看到Mutani寫的「下一步才是社群」,文中的觀點還算贊同。這幾天花了不少時間思考社群網站經營之道,不敢說自己有想出什麼有價值的結論,也沒能有條理地列出自己的觀點,因此倘若這篇文章有點凌亂還請多多包涵。

我曾經在一門課程的報告上大談何謂Web 2.0及我對Web 2.0的觀點,當時我提到「我認為新創網站之所以能吸引到使用者是因為提供了足夠的誘因」,然而當時博士班學長給的評論是說:「使用者不一定有誘因才來用你的網站,世界上總是會有無聊的人來用你的網站。」但換個角度想想,無聊本身也是個誘因,正因為你的網站能排解無聊、殺時間,所以無聊的人就上來了。

換句話說,我始終滿堅持網站必須提供足夠的誘因來吸引使用者。像是最近把不想要的東西丟回去母校的有名大站,對使用者的誘因是免費相簿空間以及看不完的美女圖,三不五時還會有不小心進到密碼相簿的好康事情發生;FunP推推王提供文章推薦機制並打造資訊匯流平台,我相信某些使用者上網的入口網站會是FunP推推王;Meeya雖然現在功能還不是挺強大,但當你發現上課時坐在你隔壁、想搭訕卻沒勇氣的女生也上了Meeya,你是不是可以加他為好友、丟他訊息說:「同學,你是不是跟我上同一門通識?我昨天好像有看過你,本人比照片漂亮~」。

上週HappyWeb 10 Tempo的分享有提到要選擇工具型網站還是社群網站?這不會是個非黑即白的選擇,從社群角度出發或從工具網站出發有不同的經營方式,以我的觀點來說,提供足夠的核心價值、誘因才是根本之道。像有名大站(還是要強調,我從來不認為它是Web 2.0,但當大家都說它是Web 2.0的時候,它就真的變成Web 2.0了!),就算它再怎麼爛,起碼他當年是以提供免費相簿空間還有掛學網保證的超高速瀏覽,在那之後奠定了足夠龐大的User Base後才有談社群的基礎。

以Facebook這類經營校園社群的網站來說,我認為能提供的誘因在於實名制的人際網絡,透過站上的各種內建功能、第三方開發的應用程式,你可以輕鬆掌握所有在站上的好友最新的資訊、一起加入某個熱門的討論串或是小遊戲,儘管你我的現實生活未必因Facebook而美好、在Facebook的使用體驗也沒如此理想,但總有人是非常認真地在經營。

然而,同樣的模式完整複製到台灣來是需要長期苦戰的,一來是開發團隊未必有能力完整複製,再來是台灣人的網路使用習性或許對Facebook這樣的平台未必能完全習慣。針對使用介面、習慣進行在地化固然是個方法,但個人認為僅僅是治標不治本,當每個人都擁有自己的有名相簿、Ptt帳號、MSN Messenger帳號,上網找3C就去Mobile01、找化妝品就去FashionGuide、找便宜就去Yahoo!拍賣時,要告訴使用者說:「來我這!我這有你的朋友、有很多圈子可以討論各種議題、有站上傳訊機制讓你跟朋友丟訊息,朋友有新活動時都會通知你,你還可以上傳你的相簿喔!」我認為這樣的誘因是不夠強烈的。

以Meeya來說,目前在許許多多的圈子裡討論的氣氛都相當冷清,如何帶起討論風氣便是個課題,其他網站、討論區上有各式各樣的資訊、在FunP推推王上有經過眾智篩選的資訊,甚至出了大學生社群網站有更多前輩、長輩可以分享更多的資訊時,Meeya的討論區是否能提供額外的價值或誘因讓人氣、文章留在站上?一個可行的方向或許是多Mash-up某些服務進來,例如針對某些在站外的文章,Meeya的使用者們可以拉進來在Meeya討論、評價,雖然這樣做可能會low掉、使用者會想說那不如去Funp推推王,但我反而會朝這個方向思考:「這裡是封閉式社群,說不定討論起來會比推推王勁爆?」

上述的點子可能沒什麼體會,我知道換成有名大站就會比較有趣。你我都知道有名大站很爛,相簿、相片都不能留言,你明明看到一張超棒的照片想要大推一下、告訴對方你很欣賞他,或是想問問相簿主人照片去哪裡拍的,卻都沒有留言功能?!爛!Flickr經營這麼久了,當初推出的時候就有留言評論的功能、還有拉框框在相片上留言的功能,Facebook現在也有同樣的功能,有名大站作為台灣最大相簿社群、全世界流量不知道前幾大的網站居然連這麼簡單的功能都沒做,實在很爛!

沒關係!就像我曾經說過,有名大站這麼爛、不開放API,那我們來幫它寫API。親愛的讀者,有猜到我想說什麼了嗎?假設Meeya做了一個「匯入有名大站的相片、大家可以關起門來在討論區裡討論討論」,先不要跟我說重製犯法,創意發想的階段想這麼多可行性的問題只會謀殺了創意,我們可以想些比較可行或是有創意的方式來達到這個目的。

或許你認為這樣還是沒什麼誘因,我大可以上Ptt表特板討論,但這種論點可能又要寫另外一篇文章出來大談BBS的限制與Web的好處了。在此,我想傳達的最主要精神是提供足夠的誘因,從社群網站出發的誘因、立足點或許較弱,但在Web 2.0的時代或許會因為外在的因素(無論是Opportunity或是Threat)產生一些有趣的玩法。說難聽點,何不考慮站在巨人的肩膀上?

踩在巨人的肩膀上起碼有兩種玩法。第一種是前述的改善既有缺點,就我聽到的經驗來說,很多人都希望有名大站的相簿可以留言,這是個很實在的功能(需求),當然做出來之後相簿主人可以選擇性地開放或是關閉。關閉是為了防止鄉民亂入,而開啟時,或許因為這樣的功能,往後你的生日Party被朋友惡搞後留下一堆很好笑的照片,大家就可以上來留言回味一下順便再多吐槽幾次。我能了解,今天有名大站已經是商業化經營,尤其依附在Yahoo!底下,新功能的開發必須經過層層的決策與考量,但這就是一種機會。

踩在巨人肩膀上的第二種玩法是善用網路既有服務,說穿了就是Mash-Up。Mash-Up人人會講,但做得好的網站卻不多,這邊我想賣點關子,下次有完整一點的想法再另行為文分享。

社群網站的經營並不容易,我在這裡講得頭頭是道,但我也可能經營失敗;不過從失敗經驗裡我們或許可以學會一些事情。最近Ptt的網路創業板上出現一個慘痛的例子(事實上去年暑假就出現了),我認為他們是個大膽進入紅海廝殺的團隊,網站提供的功能從一開始接近有名大站(讓人認為不過是另一個想學有名大站的),到後來失去焦點、團隊可能自亂陣腳,推出二手拍賣之類的功能,從頭到尾定位不清、我也找不到網站的訴求與核心價值所在。當時我在板上給他們的建議是這麼說的:

重新規劃網站,交友網站在台灣是紅海了,不要再進場廝殺會遍體鱗傷
你說你們是社群我也不反對,那我還是要跟你說在台灣光搞社群是搞不起來的
想想你們有什麼niche進來廝殺,不然就是根本不要做社群,去找藍海搞創新服務

你們現在的網站頁面根本沒有一致性的規劃,跳來跳去眼睛都花了
而且可以發現,你們因為發現無法吸引user
所以不斷加上許多你們認為會有吸引力的元素,所以整個網站的核心就發散了
失去核心價值的網站,就算找到Mr.6來替你們打廣告他也沒辦法說你們網站是什麼
還是你認為你們能說 bookee = Facebook + 無名小站 + Flickr + Yahoo!拍賣?
我們不是Mr6,我們沒辦法說我們做個VooEasy = Twitter加什麼加什麼的就來吸引人氣
(而且君不見 mashable上發3,500的邀請函也還沒發完嗎:p)

建議你們重新想想自己想做什麼、核心價值是什麼、定位是什麼,砍掉重練吧

當然文中請他們砍掉重練是有點開玩笑的說法,該團隊前輩們的寶貴經驗對我來說是相當值得作為參考的,尤其是「因為發現無法吸引user,所以不斷加上許多你們認為會有吸引力的元素」前,更要回頭想想,核心價值、定位,才不致於讓使用者無所適從。

簡單來說,如同Mutani的觀點,在經營社群網站時不妨想想網站能提供什麼價值?跟現有的社群網站有何不同?是有特別的市場區隔?或有什麼誘因吸引使用者上門並產生相當高的黏性,是超好用的功能?還是超大容量的相簿?而在提供足夠誘因的同時,還是要思考別亂了陣腳、失去焦點而忽略最初的定位與核心價值。

P.S. 很亂地講了很多,不過我的想法是「寫一兩百篇文章,有一篇對正在讀文章的你有幫助就夠了」,或是說「寫了幾千字,其中一兩句話有點幫助就夠了」

在Rails 2.0中如何避免在URL使用資料流水號

我曾寫過一篇「Rails: 建立Permalink,避免流水號洩漏網站資料」針對有人擔心(或質疑)Ruby on Rails中以資料表主鍵流水號作為URL中的參數,會導致網站洩漏某些不希望被外界一眼看穿的資訊,例如使用者總數或文章總數之類的數據,因此簡單地透過Model在存取資料庫時的before_create方法建立每一筆資料的unique key來避免這個問題。

之前使用Rails 1.2.x版本時根據我當時的作法並無不妥,因為我自己的coding習慣是會完整地指定controller, action以及id,並在對應的action中使用find_by_key的方法來找到資料。

然而,升級到Rails 2.0後便會出現許多麻煩,例如預設產生的scaffold必須修改許多地方,才能讓Model.find_by_key、redirect_to post_url(@post)之類的方法正確運作。

於是我一直到前陣子才找到應該比較正規的作法:在Model中使用to_param方法。

to_param(): Enables Active Record objects to be used as URL parameters in Action Pack automatically.

這麼好用的方法我居然不是一開始就發現,只能說相見恨晚,好險我開發Rails 2.0的時間還不算長,沒走到太多冤枉路。要實踐本標題所說的在Rails 2.0中如何避免在URL使用資料流水號便相當簡單!

1. 建立Scaffold:(通常會對key這個欄位建立index並設定字串長度limit,別忘了:p)
script/generate post title:string content:text key:string

2. 將Post的migration寫進資料庫後修改Post model如下:

class Post < ActiveRecord::Base
  before_create :generate_key

  def self.find(*args)
    if args.first.is_a?(String)
      find_by_key(args.shift, *args) or raise ActiveRecord::RecordNotFound
    else
      super
    end
  end

  def to_param
    key
  end

  protected
  # 我前一篇文章產生key的方式不太一樣,這應該是個人習慣。
  # 另外,其實亂碼的網址沒有SEO的效益,建議還是弄個slug吧!
  def generate_key
    require 'digest/sha1'
    self.key = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join )[15..24]
  end
end

就這樣!概念很簡單,就是不再用ID當查詢的參數,全面改用key啦!關鍵就在於使用to_param()方法以及對find做進一步的判斷,因為我除了Model.find(:all)之類的Symbol,其餘的CRUD都是傳入Key作為參數,因此在此僅簡單地判斷是否為字串。

如此一來,不管你是什麼user_posts_url, new_user_post_url都可以輕鬆地直接以ActiveRecord Object傳遞,起碼我之前曾經嘗試用edit_post_url(@post.key)這種方式傳值,非常麻煩、要改Controller又要改View,現在用了to_param(),什麼都不用改了!又優雅又簡單,寫起來更加快樂、效率也提昇了:p

P.S. 其實在Rails 1.2.x應該也是這麼做比較優雅,不限於2.0

如何使用Rails做HTTP 301/302 Redirect?

HTTP的規範中,狀態代碼301代表Permanent Redirect(永久定址轉移)、302則是暫時定址轉移,相較於使用HTML或是JavaScript來達到Redirect轉址目的,最大的差別在於301/302的HTTP狀態是被搜尋引擎所認可的;換句話說,你可以透過301/302轉址的方式讓搜尋引擎爬到你搬家後的新網頁。

至於301、302兩種狀態的差異,所謂的「永久」定址轉移是指搜尋引擎會根據你所指定的新網址重新建立索引,原來的位址便不再使用;而暫時定址轉移則是暫時性地將網頁搬到某個地方。

一般做301/302轉址可直接更改.htaccess檔案,讓Apache代勞即可:

Redirect 301 /not_available/old_page.html http://www.newserver.com/available/new_page.html

若要在Rails中來做這件事情,有幾種作法,最簡單的是在Controller裡面寫

headers["Status"] = “301 Moved Permanently”
redirect_to http://somenewurl/

或者

head :moved_permanently, :location => ‘http://somenewurl’

或者,從Rails的原始碼中可以看到下列用法,感覺這個最好用:p

(from trunk/actionpack/lib/action_controller/base.rb)

# Examples:
#   redirect_to :action=>’atom’, :status=>:moved_permanently
#   redirect_to post_url(@post), :status=>301
#   redirect_to :action=>’atom’, :status=>302

兒時記趣:老電影「飛進未來」

今天會突然想起湯姆漢克(Tom Hanks)「飛進未來」(BIG)這部老電影是因為前幾天看了「超人再起」之後,對於電影片段中,光頭壞人與小孩子談鋼琴片段的音樂印象深刻,上網找了一下赫然發現原來早在十幾年前我就聽過這段音樂了(不過當然是忘記了XD)。

飛進未來是描述13歲的主角在遊樂園對許願機許下了希望自己長大成人的願望,許了願望之後發現許願機是沒插電的,但機器依然正常運作,沒想到隔天起床願望成真,變成一個30歲左右的成年人。

對於當時年紀還小的我當然是非常羨慕如此的電影情節,幻想著自己也要趕快長大成人,我有更多自主的權利與自由的生活。不過,影片中也呈現了成人世界的黑暗面,因此最後主角是選擇再次許願回到小孩的世界,離開了他的工作及交往中的情人。

這部電影讓許多人印象深刻的便是湯姆漢克在玩具店踩地板大鋼琴的橋段:

電影中的配樂叫「Heart and Soul」,在好幾部電影中都曾使用,我覺得聽起來很棒,在YouTube上有非常多的搜尋結果。

上述超人電影的橋段中,配樂如下影片:

創意的殺手:否決

尊重每個人的創意

我是個很重視創意的人,儘管自己可能不是挺有創意,但我尊重創意,我相信不斷地思考並嘗試提出各種創意是讓團隊更有活力的方式之一。

我成長的過程中有很多次的經驗,學校老師經常禁止學生們的異想天開或各種行為,我常常說:「台灣的教育制度會教出這種老師一點也不奇怪」。

我在大學時期曾經遇過一個老師,照本宣科,到現在我依然無法接受他的教學方式。後來有一天想想,老師當年就是受這種教育長大的,當年的老師也是拿著自己的筆記、課本一字不漏地念出來或是抄到黑板上,無怪乎我的老師也如此,或許他是打從心底認為這種方式有助於大學生建立學理基礎吧!(關於這種論調,我還是會說:「師父是要領弟子進門的,如果照課本來我自己回家讀就可以了,重要觀念的澄清、闡釋、問題的解惑相較之下重要許多!」)

我曾在演講紀要與感想:朱學恆21世紀的競爭力革命一文中提到:

我小學四年級時,在學校電腦教室裡自己亂玩QuickBasic,發現裡面有貪食蛇遊戲,   但是我家裏的MS-DOS的QuickBasic似乎沒有,我因為沒有磁碟片,想說乾脆把Basic的原始碼全部印出來,回家再打到電腦裡面就有得玩了。結果我開始印之後,被老師發現(點陣式印表機,很難不被發現)。

他說的話我到現在還記得:
「你印這幹?你又看不懂!」
『我想印回家自己打到電腦裡面~』
「這些很多你看不懂,印這個沒用啦~」

回想起來,如果當時我自己把那堆程式全部打到電腦裡,說不定我早就會寫程式了(?)

我想,當年那位老師也一定沒想到這個學生在十年後自己走上資訊這條路,真正開始學起程式設計了。

這種因為沒有磁碟片、把程式印出來的Hard Copy現在看起來我會說:「這小孩不但有創意,還很有實踐的精神啊!」難不成你電腦老師期待的是從來沒寫過程式的小孩把程式邏輯看懂、學會如何宣告變數、函式之後回家把程式寫出來嗎?現在回頭想想,當時他還真的是埋沒了一個有機會在中學時代靠寫程式參賽的學生(就算不會得獎也好)。

另外一次深刻的經驗是國二時,在自己的週記上提出超越光速後就可以看到過去的理論,當時也沒有想如何去圖書館考證相關的理論基礎或是上蕃薯藤找找看有沒有人這麼做,結果咧?我的導師在評語欄上寫著:「看不懂你在說什麼!」(事實上我到現在也不確定這樣的想法是否正確,剛剛Google了一下,應該是有一派人認同的XD)

現在回想起來,其實是我境界太高、我太聰明了,才年紀輕輕就提出老師看不懂的說法;但,對當年的我而言實在是很大的傷害,一方面是我在寫週記前還跟我的父親討論過,父親也認同突破光速後可以看到過去的想法,連我爸都沒說我在胡言亂語什麼了,導師憑甚麼否決我的想法?另一方面,難得一次不寫流水帳、在週記上高談闊論,就這樣被老師潑冷水(當時的確認為潑冷水,他要是不懂可以跟我請教啊!),以後我又回到寫流水帳、報導班上八卦的八股文週記。

現在時代不一樣了,心態、心理素質也不一樣了,我在部落格上高談闊論也沒人理我,就算有人給予指教我也很開心,如果有人說看不懂、我就再寫一篇,順便檢討自己是不是文筆太差、表達能力太差。

不過,撇開這件事情不談,綜觀國中三年,我至今還是很感謝這位老師的,起碼他不曾放棄我這個當年看起來是問題學生的小孩,至少他達到身為教育者不該放棄學生的最基本要求,至於能否接受學生創意又是另一回事了。

只有不夠好的創意、沒有不好的創意

回想過去幾年來參與過的幾個比賽、專題,總是有許多需要發揮創意的時候,我很慶幸我所遇過的夥伴們都是能彼此包容,不輕易否決他人的創意。我對於參與任何需要發揮創意的團隊,我都會告訴自己:「只有不夠好的創意、沒有不好的創意」保持著如此的心態,不輕易否決他人創意,而團隊的價值是如何讓創意更好;當團隊成員每個人都有如此的心態時,每個人也會願意說出自己的想法、而無須有自己的想法太幼稚、沒創意、不可行的顧慮;另一方面,隨著年紀的增長,「可行性」這三個字似乎越來越容易在討論某些創意時提早出現,我認為適當地保有赤子之心是很重要的,可行性固然重要,但好的創意有可能在發想初期便被可行性否決,而損失一個創意絕佳企劃案的機會

當然,在創意發想的階段,天馬行空的各種想法都是應該被拋出來討論以達拋磚引玉之效,經過評估並進入實作階段,各種創意元素是否能輕易地組合到已經上軌道的專案執行便是另一個問題了,屆時創意攸關專案執行與上層的決策,老闆都說不好了難道你還硬要做嗎?XD

最近所參與的某個案子,大概是因為成員背景比較不同,加上過去沒有共事的經驗,我會認為在團隊建立的初期必須培養這方面的共識,才有助於提昇企劃案的創意成份。在這方面,起碼到目前為止我都是保持著「只有不夠好的創意、沒有不好的創意」如此的心態,若各位前輩有更棒的經驗願意花點時間分享,還請不吝指教,謝謝!

最後再附上一段我覺得值得深思的影片(本影片在朱學恆演講一文中亦有引用),為人父母(現在或未來)、為人師長都應該看看: