SOHO族的一天

一早,剛沖好一支中烘培的巴拿馬花蝴蝶
我喜歡聽著一些優雅而清幽的音樂,像是巴哈的Cello Suite No.1
讓撲鼻而來的花香伴著入口即化的蘋果酸,點綴清晨的慵懶
一如人生,恰如其分的酸與甜,餘韻無窮
這天,一位客戶聯絡我,希望我幫他評估看看,他想做的系統需要多少預算
講了他的構想以及期望的系統具備怎樣的功能
我一邊紀錄著他的需求,一邊與他討論一些初步的規劃

接著開始聯絡一些兼差的工程師朋友,盡可能的以最具經濟效益的方式接洽這個案子,我評估後覺得這個Project的美術要求不高,剛好我會一點攝影,學了一點蓬燈打光技巧,一點人像攝影基礎,喜歡拍風景照,累積了一些可以重複利用的素材

也會簡單的photoshop、Lightroom可以做基本的後製,會一點Illustrator可以做一些Logo, Icon,美編的部分盡可能不用外包出去,減少溝通成本與外包成本並提高利潤。

確認人力後,評估專案的範疇即可得到預估的工期,我採用Scrum開發法,並且利用JIRA這套軟體輔助我作Project Manage

scrum用user story的方式描述使用者需求,具體安排了product backlog list的順序,我會開始規劃第一個sprint所需要完成的功能,這一個sprint就像一個小型的瀑布式開發法專案,需要開始寫基本的Flow Chart, Sitemap, UI Design以及Mockup,並與案方作需求確認,藉由案方的需求回饋,我可以確保每一次sprint的需求都符合案方的需求,而不是最後驗收時才在到處修改。
雖然沒有固定的團隊,讓我每個Project的初期,都很難有精確的進度預估,但採用Scrum還是比Waterfall帶來更多的效益

將這次sprint的基本需求與案方作確認,就可以著手開發啦,多數時候,我需要自己架設Server,SQL Database, FTP Server和作基本的權限管理,確保database user和FTP users的權限恰到好處,不會造成毀滅性的影響
然後開始著手開發架構的設計,需要採用什麼framework, module, library等等,例如採用Codeigniter作為後端的MVC框架, 前端用Bootstrap來作RWD,同時教導新成員如何避免一些資安上的漏洞,如XSS, SQL injection等等。
版本控制系統是必須的,有時還要教沒用過Git的開發人員怎麼用Git和Git flow去作版本控制,何時該用feature branch?還是該用develop branch?Commit Message怎麼寫?

一些基礎開發能力是必須的,HTML, CSS, JQuery, PHP, SQL,以及了解一些常用的API像是facebook commit, facebook login, 一些流量分析工具像是Google Analytics, Mixpanel等等

理想情況下,我並不會參與開發,而是以技術諮詢的方式,幫助開發成員作故障排除,因為這樣我的工作量實在太大了,但有時候不得不加入開發人員的行列,一起埋頭苦幹。
每次新的功能完成前,我會與案方作下一個功能的需求的討論,除了從技術面(複雜度會影響工期和預算,也包括資安層面的考量),我也會以商業角度出發,依我接案的經驗給予具體的建議,例如需要考慮退貨的流程,一般網購平台如何作數位行銷等等,或者透過轉換率的計算和流量分析的各種指標來作為商業決策的參考依據。

寫了這麼多,你會發現要能獨立接案是需要學習許多東西的,除了這些硬實力外,溝通技巧,如何議價,團隊領導等等軟實力也是相當重要的,累積這些經驗需要好幾年的時間
如果你對接案與寫程式有興趣,
聰明的你不會想獨立學習這些東西,而是希望在短時間內學會大多數的技能
如果你是這樣的人,喜歡挑戰,對於開發充滿熱忱,歡迎聯絡我或加我好友,大家可以互相交流
小弟我念研究所去了,所以也希望能把一些案子pass給大家
James Shieh < jamesshieh0510@gmail.com>