Tuesday, October 6, 2009

苦命程式設計師,接案甘苦談

苦命程式設計師,接案甘苦談

from Cyberpunk by deduce

1 person liked this - you

從學會寫程式以來,接過各種大大小小不同的案子,因為自己沉浸在Web的開發,因此也只接網站類型的案子,從使用Xoops、Joomla等正牌的 Content Management System,或是用Wordpress充當內容管理系統,一直到直接寫PHP、ASP.NET、Ruby on Rails的案子都做過,甚至連我不喜歡的JSP/Servlet都接過。

通常接案子是為了討生計或是多賺點外快,甚至可以從開發過程中強迫自己磨練新技術以及專注在細節上的能力,與業主溝通的過程也可以磨練自己的耐心、系統需求分析的能力等等,其實好處是挺多的。我總是告訴自己:「可以練功寫程式又有人付錢給你,一舉兩得,不是很棒嗎?:p」不過我想只要曾有過接案經驗的朋友,應該也會有過幾次不愉快的經驗吧!

我在四、五月份接到的幾個案子,好像在洗三溫暖,有的勝任愉快、業主開心、我也開心,有練到功、有傳達我寫程式的精神跟理念出去,更重要的是還有賺到錢!但也有不是挺愉快的經驗。

我想個別談談其中的三個案子。

第一個案子是比較輕鬆的,協助某學術單位建立個案資料庫,從LAMP環境架設、CMS架設到把個案上架一手全包。比較麻煩的部份除了是要手動建立個案資料庫,算是比較勞務性的工作。

學術單位有個好處,雖然支付的薪資未必比外面的行情高,但該給的一定會給。以某大學的行政單位、研究單位找所謂的「網頁工讀生」有兩種給薪方式:時薪、月薪兩種,有些單位很尊重學生,甚至主動跟學生說:「寫程式難度比較高,你可以主動多報點時數補貼」(或許是本來NT$95變成NT$190這種效果),但也有單位很沒sense:「加這個功能不就幾行程式而已?!一下子就能寫好的東西為什麼要報到兩三個小時?」兩三個小時還拿不到你三百元,有夠難賺!套一句強者我同學常說的話:「不然你自己來寫啊!」,對於這種人應該另外寫一篇專文來讓他們瞭解寫程式為何物!

但我想多數單位都是很尊重學生的,長期來說,同樣建設、管理一個網站,可能就是五萬元分成十個月給你,這十個月裡面還是有辦法接到其他案子的!(如果要一口氣拿五萬也是有辦法,不過我也沒這樣搞過。)

第二個案子不是很輕鬆,不過因為是完全使用Ruby on Rails開發,業主要求必須符合REST的架構,因此我也得以有機會打造自己的第一個RESTful網站,所以寫起來還算挺快樂的,完全是可以練功寫程式又有人付錢給你,一舉兩得,不是很棒嗎?:p

石墨工房有一篇文章談與客戶維繫良好關係的5個訣竅,裡面談到另外一篇文章講到的幾個重點:

記得特別的日子

有點黏、又不會太黏

給點折扣

超值服務

說「謝謝」

雖然這麼說有點馬後炮,不過我的確是在結案後才看到這篇文章,並且意外地發現我居然五點都做到了。我在接案前便先給予折扣(雖然有點破壞行情,但最近手頭緊實在不得已),同時也記住了業主即將demo系統的日子給予關心(主要因為後來加了MSN,比較容易關心到對方,同時也讓對方瞭解自己的進度)。

而在超值服務的地方,我花了許多時間跟對方講解Ruby on Rails的架構、好處、發展性以及REST的精神及對於Web世界的影響,只差沒問對方是否需要我提供教育訓練。總之這是個很不錯的接案經驗。

第三個經驗是一直到最近才變得不愉快的,我必須承認自己在溝通上沒有做得很好,但這個「案子」我最初其實不是把他當成一般的案子在處理,一來是因為對於找我「幫忙」的這對年約四十的夫婦,有志踏入台灣的Web世界感到相當佩服;二來是我自己也對這網站的概念有興趣,他們也說明了未來如果有機會可以合作繼續讓這個網站上線,也因此我認為在整個溝通過程中犯了一個要命的錯誤:太早跟對方搏感情!

現在回頭想想,客戶終究是客戶,建立在對價關係上,給多少錢、做多少事,偶爾給個折扣或是要五毛給一塊都是可以維繫雙方良好關係的,但是以搏感情的方式破壞市場行情其實不是很好。

這我得要細說從頭。

最初對方說明想要完成幾個基本的功能,已經有設計完成的頁面,多次信件往來後便詢問我的報價,當時我回覆說:『「假設畫面已經有了」,大概兩週內可以完成、上線,NT$10,000應該就能找到人接了』,沒想到後來對方就直接以這一萬請我替他們完成。

此時才是錯誤的開始,因為我想真的要「幫忙」的話,就算不拿錢、免費義務做公益也是不錯,而且反正畫面都已經有了,我寫程式通常很快、沒問題的!對方給的所謂畫面全部都是Photoshop的設計稿,因此我希望對方先將之轉為CSS + HTML的格式,但發現對方似乎對這方面不是挺在行,我想說那沒關係,反正我自己來!

這時候是錯誤擴大的開始,我心中天真的想我可以建立個比較有系統的CSS,該繼承的就繼承、能不要用圖片的就不要用,另一方面在網頁程式也寫個比較有擴充彈性的程式,說不定這個站就被我做大了!當時另一位強者我同學就說:「你怎麼連接個案子都想要把他搞大?拿多少錢做多少事,不要把自己搞死。」只能說自己在這部份的想法太天真了。

於是,在我同時要兼顧CSS layout、程式的狀況下,當初設定的兩個禮拜根本無法達成。

這是另一個錯誤,也就是我在接下任務、看到畫面後,就應該發現不對勁、馬上跟對方溝通,但因為我抱持著我是在幫忙、而且我還幫你們cover畫面的處理,多給我一點時間不為過吧?!不過天不從人願,至今三、四個禮拜,我仍無法把畫面的部份處理完善,對方也因此寫信來要求當初約定「一萬塊完成的幾項功能」。

我想說得更直接一點,如果對方自己處理CSS,我想多付出的時間絕對比我自己一個人用還多。

看了信之後我覺得很沮喪,我多幫對方建立基礎架構、預留擴充彈性,結果你最後不但無法諒解我、多給我一些時間,寫信來的時候還連原有的禮貌都消失、驚嘆號也出現了。

從這次的事件檢討,歸納起來有以下幾個重點:

客戶就是客戶,不需要搏感情

我抱著幫忙的心態就是個錯誤,導致我連系統規格書、需求分析、合約都沒有建立,一切就只有當面的會談跟E-Mail往來紀錄。

拿多少錢,做多少事

我心中想著建立良好的基礎架構,但客戶要的其實就是那幾項功能,不在乎資料庫規劃、不在乎整體的程式規劃的話,客戶自己都不擔心了、我何必費心呢?

溝通最重要

因為沒有建立文件,溝通沒有紙本的依據,更該保持電話或信件的聯繫,而不是一意孤行想說我這樣做比較好,對方即使知道也未必領情。

說真的,接這麼多案子以來,還是第一次這麼難過,我覺得我付出我的能力、時間、精神,但最後卻是這樣的結果。我想,以後我會更清楚,客戶就是客戶,會不會成為工作夥伴、勞資關係、合作關係都是另外一回事。

程式碼寄出去了,附送了CSS、樹狀結構討論區(對方只要求一般討論區)、比他們自己原先規劃的更完整的會員資料庫功能,而這個案子也就結束了吧。

希望下次能遇到愉快一點的接案經驗。:)

No comments: