我想離職,學寫程式(下)

評論
評論

(Image Credit:pobre.ch)

一個半月前,筆者寫了 我想離職,學寫程式(上),得到了一些讀者的迴響,在留言區中,許多讀者也分享了自身經驗與想法,讓這樣的概念有更多實際案例的呼應。

本篇為 該篇 的下集,對於有心這樣做的人,整理一些我的做法,讓讀者可以開始實踐:

第一步:找個 idea 來作

是的,第一步跟寫程式也沒什麼關連,先找個你會想要做的 idea!例如:一個代辦事項的 web 服務、一個 groupon 的 iphone aggregator、還是一個更方便的照片分享上傳網站。

從做中學對於我們這種半路出家的是最好的方法。學的每一個工夫都是為了解決特定問題,產出心目中的產品或服務。一步步看到靠近,技能也一步步建立。

什麼 idea 適合練習?有趣有用 scope 不太大的應用最適合。底下我給幾個題目,你看看:

1. 用 php 寫一個 Facebook 上的 HotOrNot 小遊戲。

HotOrNot 是比誰比較辣,你可作成用朋友的照片來看誰比較高,誰下星期會中樂透,還是哪位比較如何如何,投票結果可能就發佈到牆上。這可以學到頁面設計,javascript 使用,資料庫存取,以及 facebook api 的使用。

2. 用 Ruby on Rails 寫個拖拉即可上傳分享的相簿系統,讓整理相片與分享相片更容易。

只要拖拉就可上傳。上傳後系統會自動產生 unique 的 URL,把 URL 給別人就可以看到圖片,旁邊有打包下載一次抓回所有圖片。這個可以學的 HTML5 與 AJAX。

3. 用 Python+Django 做個分類廣告平台。

註冊完就可發佈賣售或求買的訊息,使用者看列表可知道有什麼好康,以跟買家或賣家聯繫。這裡可以學會員系統跟列表處理。

這些題目是隨便給的,你也可以自己創造個題目來作。題目可以是你想做的大題目的最簡化版,例如想做線上購物網站,先把搜尋成交這部份功能拿掉,定義成一個商品目錄列表網站,簡單一點,作為你的第一個題目這樣就可以了。

對了,為了讓你自己有個動機,請在底下的留言區發表一下你準備做的題目。讓 inside 讀者一起來監督你,應該是個好主意~

第二步 紙上談兵

想做的 idea 有了,先在紙上畫畫圖,把 idea 稍微具體化一下:

1. 畫一下頁面流程

大家都會用網路服務,就算你不懂技術,都應該可以“設計網頁”與" 網頁流程",意思是拿起數張白紙,想想看使用者會在網頁上看到什麼,把他" 安排" 出來。再來就是,看到了第一頁,想想看按了螢幕上按鈕之後,第二頁又會長什麼樣子?

用框框與文字,左右上下東調西調,在白紙上畫畫,或用 word 畫畫,要產生一個所謂的" 網頁示意圖" 是很容易的。這個階段千萬不要考慮什麼 Logo 是多大多美,該考慮的只有像是真正重要的功能與欄位,以及網頁前後的因果關係。

例 如首先想到使用想要“寄信給朋友”這樣的功能,首先要看到朋友列表,每個朋友前面有個 checkbox,勾選 check box 後,按寄出,這樣子選到的朋友就會收到信。除了 checkbox 跟" 寄出" 按鈕外,ㄎ還須考慮列表上要看到朋友的什麼資料哩?ID, 姓名,還有最近的狀態嗎?還是說要多加一個交友狀態顯示出來哩?

想清楚了,就用一些可能的代表性資料用框框,圈圈,直線,虛線,文字,按鈕... 等表示出來那頁長什麼樣子。然後,想想按下了“全部通知”按鈕之後,使用者看到的新網頁會長什麼樣子,再畫出該頁面的代表性狀況,這樣就有了”寄信給朋友“這個功能的頁面流程。

2. 想一下每個頁面上的資料怎麼來?如果想儲存一些用戶資料,存什麼?

這太重要了。

頁面上如果要出現“Sting 先生,您好“,你必須知道使用者姓名與性別,這資料在註冊的時候就該出現,讓使用者填寫。

頁面上如果要出現“今天天氣 28 度,很舒適,適合上 inside 看文章“,天氣資料就必須透過程式到氣象局網站抓一下,配合自己做的幾句罐頭句子,存在你的系統裡,透過某個邏輯選出來顯示。

想看某用戶發表了哪些文章,若他有五百篇文章,你肯定要分頁顯示,每頁要顯示哪些資訊?如果那個人沒有發過文章,系統也得處理處理,免得發生錯誤。

如果要表示某甲與某乙是同學,你得想想這樣的關係是用什麼樣的標準判斷?是學校那個欄位填寫的校名資料自動判斷,還是甲跟乙必須互送邀請,然後按鈕確認彼此的關係?

在儲存上,我們總會想多存點資料,基本資料,發表的文章,上傳的圖片,各種與其他網友或系統互動紀錄,反正能記得就記下來,可能也沒什麼不好?在這點上,溫家寶先生說過的「多麼小的問題,只要乘以十三億,就是很大的問題」就很中肯。

如果一個用戶每天紀錄了 1MB 的資料,一百萬用戶每天就會產生 1TB 資料,一個月就會有 30TB,一年累計下來就快 500TB。如果使用者倍增,很快你就會需要找更多的好手跟財務來支持你的 business model,如果存的資料是不必要的,那麼這樣的成長只會帶來負擔,並不會帶來價值。

請思考哪些是必要該存的資料,怎麼存,存多久,存了之後怎麼顯示,在哪裡會用到,會看到。透過這些思考,學的是資料的規劃與設計。並不需要懂資料庫系統,這樣的想像就可以開始。想了之後記得要寫在紙上面,或者是 word 上面。

第三步 帶著興奮心情開始實作

接下來就是一般的苦功與紮實工夫的過程,不過差別是經過了前兩個步驟,你應該對你的 idea 有充分的理解與想像,也知道你要做出來的東西長什麼樣子,接下來只是找個工具把那個 idea 實踐出來。這樣的程序你比較知道你為什麼要學這個東西,有目標所以會學的快,走的也久。

如果什麼程式語言都沒學過,電腦也不太熟,建議:

1. 買一臺二手 Mac mini,用來做開發與伺服器環境。

2. 開始學 Ruby on Rails,去書局買本書,或看 ihower 大大的文章

3. 該注意的東西還有 html 與 javascript,先把關鍵字記住,開發過程中大概都會用到。

這個步驟,筆者沒有要教任何技術性內容,因此寫到這裡為止。

但是,如果你真的經過前兩個步驟定義出了一個清楚的應用,如果你夠積極每天學習,挑相關的技術部份下去看,兩個禮拜內你應該就有機會寫出一個有點像的服務,一個月內就能把流程想順走順,再過一個月就差不多可以給朋友看看你的 idea。

真有這麼神奇?

筆者不是要賣藥,而是給創業者個幾個學習的想法:

1. 小的躍進容易達成

別太貪心,定個簡單的題目就好。從不會寫程式到會寫程式,並不是件登陸月球的事。

2. 動機最重要

為什麼你一定要自己想個想做的題目?因為這樣才有學習的動機,有動機才能持續行動。看到自己跟目標靠近,你也會興奮。

3. 目標清楚

創業者要解決的是 business 上的問題,相關技術是重要的手段與元件。這個過程是確實理解這手段與元件的方法,你不用窮盡所有的技術知識進行學習,目標放在 pick up 你想解決問題時需要的相關技術知識即可。

小結

不懂技術的創業者,若無足夠資金請到最好的技術夥伴或員工,你還是能有貢獻!學寫程式並非侵蝕時間的毒蛇猛獸,相反的,這樣的自學經驗絕對能讓你在網路產業加分,拆解對手服務也會是一秒內的事情。

試著給自己兩個禮拜到一個月的時間,好好的跳進你的 idea,試著把他做出來看看! 下一次的 Inside Out 活動,你也可以是主角!

如果你已經實作出部份 idea 出來了,也歡迎參加本次 I/O Startup Showcase DEMO

相關文章

評論