Member preview

SOHO族的一天:你準備當個自由工作者了嗎?

2016的八月初寫下這篇文章,轉眼間已經過了一年半了,這次把它轉載到Medium上,希望能分享給更多想當freelancer的朋友,透過我自身的經驗,讓大家了解這個圈子的工作方式與環境…

一早,剛沖好一支中烘培的巴拿馬花蝴蝶 ,我喜歡聽著一些優雅而清幽的音樂,像是巴哈的Cello Suite No1 ,讓撲鼻而來的花香伴著入口即化的蘋果酸,點綴清晨的慵懶 。一如人生,恰如其分的酸甜,餘韻無窮 。


這天,一位客戶聯絡我,希望我幫他評估看看,他想做的系統需要多少預算 。花了半個小時聊了他的構想以及期望的系統具備怎樣的功能,我一邊紀錄著他的需求,一邊與他討論一些初步的規劃。

收起了早晨的閒情逸致,接著開始聯絡一些兼差的工程師朋友,但人不能多,溝通成本會隨著團隊人數而增加,導致資訊不一致與延遲。

為了盡可能以最具經濟效益的方式接洽這個案子,身為技術背景的我粗略的評估了一下案子的性質,覺得這個案子在美術、視覺設計方面的要求不高,剛好我會一點攝影,學了一點蓬燈打光技巧,一點人像攝影基礎,喜歡拍風景照,累積了一些可以重複利用的素材。

也會簡單的photoshop、Lightroom可以做基本的後製,會一點Illustrator可以做一些Logo, Icon,視覺設計的部分盡可能不用外包出去,就能提高利潤。

而我知道學會這些可以帶來許多綜效,像是工作室的宣傳影片、行銷廣告素材都不用假他人之手,省下一筆開銷。

需要什麼素材,一隻單眼配上基本的後置與影像處理技巧就可以解決:

寫文章時,需要圖片?就自己拍一張吧:

確認人力後,評估專案的範疇即可得到預估的工期,由於客製化系統往往涉及許多domain know-how,不確定性較高,我會採用scrum開發法,並且利用JIRA這套軟體輔助我作Project Management。

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 flow去作版本控制,何時該用feature branch?還是該用develop branch?Commit Message怎麼寫?

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

理想情況下,我並不會參與開發,而是以技術諮詢的方式,幫助開發成員作故障排除,因為這樣我的工作量實在太大了,但有時候不得不加入開發人員的行列,一起埋頭苦幹,不過寫程式依舊是我的最愛,思考如何寫出乾淨的程式碼、注重reusability、scalability等,都可以讓撰寫程式變得很有趣,只可惜興趣和工作扯上關係,總是得有一些犧牲,我們不能把程式碼改到盡善盡美,因為時間與成本不允許。不過偶爾還是可以寫一些技術文章,做一些沒有時程壓力的技術學習:

每次新的功能完成前,我會與案方進行下一個功能的需求討論,除了從技術面(複雜度會影響工期和預算,也包括資安層面的考量),我也會以商業角度出發,依我接案的經驗給予具體的建議,例如需要考慮退貨的流程,一般網購平台如何作數位行銷等等,或者透過轉換率的計算和流量分析的各種指標來作為商業決策的參考依據。

為了有廣泛周延的思考與分析能力,持續地學習與閱讀相當重要(至今我依舊持續閱讀,雖然忙碌但每個月還是可以閱讀5~7本書):

2015年搬家時累積的書

寫了這麼多,你會發現要能獨立接案是需要學習許多東西的,除了這些硬實力外,溝通技巧,如何議價,團隊領導等等軟實力也是相當重要的,累積這些經驗需要好幾年的時間。

如果你對接案與寫程式有興趣,聰明的你不會想獨立學習這些東西,而是希望在短時間內學會大多數的技能。如果你是這樣的人,喜歡挑戰,對於開發充滿熱忱,歡迎聯絡我或加我好友,大家可以互相交流、學習、成長。

或許有些人好奇寫程式到底難不難呢?分享這篇文章給大家參考:

我是James,一位自由接案工作者
對於軟體開發與接案工作充滿熱忱,截至2018年,不知不覺已經累積11年的時間在這個領域打轉,擁有6年的接案經驗。 寫作是我一個新的嘗試,初衷是希望能讓這個環境變得更好,從三個面向出發:
1.個人:強化團隊成員的生產力與技術力,提供技術觀點與教學、工作方法等硬實力。
2.組織:培養良好的團隊合作態度與企業文化、分享合作與溝通技巧。
3.社會:讓客戶、發包單位知道如何有效處理系統外包,把資源花在刀口上,並透過接案經驗分享促進良好的合作。
FB粉絲頁艾菲肯先生——您最佳的技術夥伴
個人刊物 艾菲肯先生的咖啡時間
工作室網站
Efacani.com