我是如何撐過 Demo day

Max Hsieh
開發者特攻隊
Published in
9 min readApr 25, 2018

想撐過去,先來這裡找根竿子

這裡,是 這篇 文章的後續。想用我的角度,來講講這一個月來,我們的團隊 — 賣紅蛋,用來撐過 demo day 的…一切。

Demo Day 時程

Demo Day 的時間不長,扣除初期確認方向,以及後期準備簡報的時間,開發時間約有 5 週左右,這次剛好有一個長達五天的清明連假(請別忘了你的家人),所以真正能寫程式的時間,大概不到一個月。

這裡先快速展示一下整個 demo Day 時程的架構,藍色是我們「賣紅蛋小組會議」,紅色為 ALPHA Camp 安排的產品會議或 Demo Day 既定行程。

真正能專心投入功能開發的,大約是 Week 2 - Week 5

溝通模式

賣紅蛋的組成,是 Fred Hung 組織 AC 南港讀書會群組促成的(之後實體讀書會還會持續進行,詳情請洽 Fred),但 egg 李威辰 其實沒有參加過實體聚會。所以第一次的真正的合作,是 Git 協作課程,當時我們組了個 3 人 Line 群,並採用 Trello 協作,這大約是去年底的事,差不多也是從那時開始,開始培養一些合作的默契。

在 demo day 的開發過程中,我們並沒有安排固定會議,大部分是自主開發,並採用 Line 文字或螢幕截圖的方式快速溝通。視訊會議的時間都落在晚上 10 點後,約略進行 1–1.5 小時。我們儘量在每次與 AC 的會議當天,都安排視訊會議,可以就 AC 產品團隊的建議,快速調整方向,並分配任務。

一直到最後一週 4/16 晚上,藉由第二次實體彩排的機會,賣紅蛋三人小組才第一次見面。所以說全程都是遠端協作

協作工具

既然是遠端協作,我們選擇了兩項工具,作為專案管理:Trello 和 Quip。另外使用 Line 和 Zoom 來進行文字或視訊溝通。

Trello: 專案主控面板。列表(list)是進度,卡片(card)是功能。並加上 tag 和 member 標示。Quip  : 專案文件資源。包含 user story,ERD,wireframe,開發 wiki 等文件資源統整。可以直接在文件中逐行進行討論,是一大重點。

Trello 主要負責的,是劃分任務,我們並沒有清楚定義一個任務的大小,初期是依照 user story 做切割。實際進入開發階段後,就一邊調整,根據每個人實際開發的功能開卡。自動化測試的撰寫,也是以卡片為測試標的。

Trello 的使用重點:標籤標示與人員標示。

人員標示:很單純,哪個任務誰領走了,就標上人物頭像,避免重工。這部分運作良好,整個專案過程,幾乎沒有任何重工的狀況。

標籤:了解哪些是重點項目,哪些是 bug,哪些項目尚需討論才能執行。好處是能一眼看出項目的優先權,並進行認領。

而 Quip 是屬於文件管理中心,事實上用 Google drive 也能做到,不過 Quip 比較美一點,而且有 desktop app。

另一個選擇 Quip 的原因,是因為他可以根據文件逐行進行討論,可以增進效率,一樣 Google docs 也有類似的功能,但 Quip 的介面比較友善。

工具的選擇並不是重點,而是團隊有沒有辦法做有效的溝通。最終要選擇什麼工具,還是要依照合作模式而定。

任務分配

關於任務分配,我們是採用認領制,先領先贏,反正要開發的項目很多,也不用擔心沒事做。

每個人想要參與的任務,應該有兩類:「想做的」和「擅長的」。「想做且擅長的」一定是每個人的首選。但由於這是個學習專案,所以也會有「想做但不擅長」的部分。

由於時間有限,一定是優先認領擅長的,儘快將專案推動到一個進度。

以賣紅蛋來說, Fred Hung 擅長資料庫設計 ,所以初期 ERD 就是交由他來規劃;我有專案管理經驗,user stroy 和 wireframe 是我負責。egg 李威辰 正好在自主學習 TDD ,所以自動化測試的規劃就交給他,並由他負責切割 user story 以符合測試的架構。

因為學員的程度和經驗可能都差不多,像我們三個人,都是比較熟悉後端。並沒有前端與設計的經驗。這在真實的專案比較不會遇到。這時候也只能犧牲該部分的品質,所以我們的專案前端互動設計並不突出,後期是透過大量的測試來改善 UI/UX 流程,以及文字敘述的故事性來彌補。就結果而言,效果也不算太差。

發揮互補精神

如果一開始分配的狀況良好,大家都先領「擅長且想做的」項目,那初期的進展會比較快一點。以我們為例: Fred 接續 ERD 設計,完成首要功能的 model 和 controller 的後端項目;我從 wireframe 出發,進行 UI 設計和 view 的建立;egg 持續開發測試的部分,讓我們安心地將進度推進,並一邊找出 bug ,並開出未來要解的 bug 任務卡。

老隊友功能卡了 2 小時,最後靠隊友神救援,才成功撈出資料

當專案推進到一定進度,就可以開始領一些自己「想做但不擅長」的項目。此時開發進度會開始減慢(好做的都做完,要開始卡卡了)。此時就要盡量發揮互補精神。譬如:篩選隊友的功能是我 想做但不擅長 的,在我開發途中,由於 active record 不夠熟悉,常常一個資料撈半天撈不到。此時團隊的另外兩位大大就是我的求救對象。

適時的互補,才能將團隊合作發揮到最大效益

除了開發上的互補,無法 coding 時間的互補也是很重要的。賣紅蛋的隊員,各自有老婆小孩女友。在隊友忙著其他事情的時候,也別忘了暫停「催繳」的訊息。

時間分配

工具準備好,任務分配妥當,就剩下最後一個重點了:準時結案。

如果你回到第一張圖,demo day 從正式啟動到發表,約有 7 週的時間。我們在時程的規劃,大概是這樣。

* Week 1   : 專案準備,與產品團隊溝通並確定方向,開發任務分配
* Week 2–3 : 主要功能開發
* Week 4 : 次要功能開發,UI 設計
* Week 5-6 : 程式整理,流程優化,提升使用者體驗
* Week 7 : 簡報準備

由於我們 week 1 的準備夠充份,所以時程上都有跟上進度,加上簡報準備的部分,AC 彩排提供非常多實用的建議。所以最後收尾階段相當順利。也讓我們有更多時間,做出許多預期之外的小功能,完善使用者體驗。

Week 1 專案準備期

這週是最重要的一週。除了設置好溝通工具,大家多聊幾次培養默契外,我們做的四個功課:ERDUser StoryWireframe自動化測試。大大提高後續專案的穩定度,完全沒有大改甚至砍掉重練的項目。

開發四寶:User Story,ERD,Wireframe,自動化測試,讓專案後期更加穩定。

有了這些項目,也讓我們和 AC 產品團隊的溝通變得非常順利,且更容易釐清問題,取得共識,確認方向。

Week 2–3 主要功能開發

由於專案準備功課做的夠充分,這兩週就是專心地把功能依照 user story 和 wireframe 實做出來。

此時先不太用管 UI/UX 的部分,Fred 負責主要後端的程式,寫完就把變數和簡單的文字丟到 view。我負責前端項目,但也僅用 bootstrap 做基礎套版,能動能點就好,並開始思考一些不同使用者視角問題,為未來優化做準備。egg 大部分的時間都在寫測試,並且評估第三方服務的 API 串接。

三個人的任務分配完全不會打架。算是整體速度與進度最快的兩週。

Week 4 次要功能開發

這週算是比較痛苦的一週。簡單的前面都做完了,開始為了使用者體驗,做各式各樣的「次要但複雜」的功能。

Fred 開始手刻即時通知,egg 除了第三方串接,也進行緊急招募等附加功能(以及繼續寫測試),我則是因為原生 bootstrap 已經不敷使用,所以導入了一個商業版型,並開始優化整體 UI 的配置,調整 partial 和 helper,以及整理其他重複的程式碼。因為這邊都在碰相對不熟悉的東西,所以整體進度就開始慢下來。

雖然說是「次要」的功能,但主要功能,往往是人人都想得到的,所以這週能開發出貼心的小功能,反而更容易成為整個專案的亮點。

到了這裡,AC 產品團隊已經開始將注意力完全移到體驗的部分了,包含使用者操作的流程,故事背景與敘述方式,整體給人的感受是否符合邏輯…等等。

Week 5–6 收尾階段,提升使用者體驗

第五週前半,可接續第四週的勢頭持續開發,但接下來就一定要開始慢慢進入收尾階段。

收尾階段,大致上都在完成產品團隊與評審提供建議。我們花了許多時間在檢查各個視角,驗證等問題。另外也持續新增一些小功能,譬如 action cable 即時通訊,onboarding 流程,markdown 編輯與 syntax highlighting … 等等,貼心且能提升體驗的功能。

另外為了讓整體故事性符合邏輯,demo 用假資料的設計(這個花了不少時間),說明文件,首頁簡介…等等,也都在這時候處理。

收尾階段可以檢查的項目:1. 新註冊流程: 由於開發時都會使用假帳號,經常會忘記全新使用者註冊的流程檢查
2. 中文跑版: 假資料通常是英文,別忘了中文斷行方式是不一樣的
3. 使用者視角: 不同角色,在觀看相同頁面時,站方給予的提示訊息可能不同
4. 共用版型檢查: 類似第3點,partial內容,在不同頁面的呈現方式。以我們為例,任務筆記的區塊是一個partial,原來標題是「任務對話」,但單人任務不應該有「對話」,所以後來才改成「任務筆記」。
5. 找一個沒接觸過專案的人來試用服務,紀錄他卡住的點

收尾的兩週,有許多的瑣事需要處理,其實我們也沒改完。但如果預留越多的時間在收尾,就能將專案收得越乾淨,bug、奇怪的小地方更少。更加完善使用者的體驗。

Week 7 Demo day

最後就是準備簡報,練習彩排,demo day 呈現了。

享受,Demo day 帶給你的…

以上,是分享賣紅蛋這一個月多來的專案開發秘辛。不過回到本文的主題,我到底是如何撐過 demo day 的呢?

享受和隊友一起 coding 帶來的學習體驗與樂趣

如同我在上一篇文章說的,每個階段的溝通,討論,實做,調整,都是一次又一次的成長體驗,這樣正向的學習體驗是非常有趣的。享受這個過程,其實並沒有要怎麼撐下去的問題。

所以,期待你也能找到 demo day 帶來的樂趣,並且樂在其中吧!

最後,感謝賣紅蛋的隊友們,讓我有一次這麼好的體驗。也希望能帶給之後的 demo day 團隊,一些小小的方向。

--

--