7 months ago

在定義完MVP之後,接下來Sprint 開跑

Sprint#0

回想起來,其實第一個sprint (Sprint#0)是最累人,最難熬的,原因主要是:

1. Don't know what we don't know

不確定因素太多。萬事起頭難,我們要從0開始把地基先打出來,但卻不太確認我們還缺少些甚麼,諸如:

  • API到底能做甚麼事?
  • 是否需要以後端實作
  • UI 各頁面整合中需要傳遞甚麼資料

然而當眼前是一片空白時,我心裡面更多的懷疑是我們做這個產品是否真的有其存在的商業價值,但後來 S 君的一個動作其實解開了我們的疑慮,容我之後再補充。

2. It must be a long long night ...

大家都是工作完一整,天下班後直接殺過來的,其實當下開幹已經是晚上十一二點了,是蠻適合睡覺的時候了XD
可是偏偏「開始」應該是要最拼,把所有不確定因素的問題限縮到在最小的範圍內的時刻,需要有產出振奮士氣

planning

大會第一餐:胖老爹炸雞,填充過熱量後,Sprint#0 我們討論出主要是進行前期的研究工作,同時進行以下兩件事:

  • 嘗試API 的串接 主要是為了省後端的工,在還沒看過api document之前,我們希望以最快速簡單的方式就可以把api接起來,所以先決定直接用 jquery 來在前端進行串接(當然後來才發現無法偷吃步)
  • Prototype and UI implement 決定使用最簡單直接的 jquery + bootstrap 來進行實作。 UI 設計部份由W君主導,一開始他建以可以使用 Figma 這個ui建置tool 來產生prototype,但後來被大家說服了直接出 html source 就好,因為基本上 prototype 是針對 UX 的優化方便討論,但是我們要做的是MVP,求功能出來就好了,先省掉 UX tuning 的步驟。

Supplement

「欸Tenmax 的,外面有人要來探你們班」
funP 行銷長麥可竟然真的履行承諾要來送宵夜了,帶我們去附近的夜市又補了一頓,感動

Fire

宵夜喘息過後,開幹了,break down 後的分工如下:

  • S君 與 J君 - 先找方式製造頁面需要的假資料
  • W君 - 製作 UI 並出 html source code
  • N君 - 把UI 中的interaction 以 jquery 串起來
  • 我 - 試著串接api

API的串接過程中,應該跟其他大部份組別一樣先串接第一個 search 的API。

上面提到 S君做了一些事去除了我心中關於商業價值的疑慮。

「這個網站跟我們要做的事情幾乎一模一樣,但功能比我們想的更齊全了」S君嘆了一口氣,「可惡」

大家便圍過去他的螢幕前看是甚麼利害的網站,原來於大家正嘗試直接做下去的同時,
S君卻先進行了調查工作,一方面他在尋找可以爬取景點資料的網站,
另一方面也在確認同質性產品的差異。
這個網站是 TripAdvisor
主要是結合旅遊景點跟住宿資訊,提供訂房服務

但是旅遊資訊服務同質性的產品本來在網路上就是琳瑯滿目,
雖然TripAdvisor與我們的設計連UI上也有著類似的視覺Layout,
但我們服務所提供的是鐵路訂位服務,這就是一個極大的差異,
主打背包客客群,而正因為 TripAdvisor 這樣規模大的服務也提供了與我們類似的使用流程,
反而讓我們對自己設計的使用流程打上了一劑強心針,
也確認了這樣的服務是有商業價值的。

再望環顧一下其他人的狀況:

  • UI 實作組的 N君與W君,也已經快速用bootstrap 打造了一個有模有樣的首頁出來了。
  • 接著J君也從沐浴的舒爽中回歸戰場協助S君製作旅遊景點列表所需要景點假資料,
  • 我則是閱讀文件後知道 API 的 request authentication key 異常的複雜難產生,也發現因為要overwrite request header 中的 Date 而無法使用front-end 進行串接

時間跑著跑著,記得已經進行到凌晨兩點多了,大家有共識4點時先來standup sync 一下進度。

4:00am Mid Break - Stand up sync

其實這時有點累了,其他人sync的狀況我也不是記得很清楚,大概就是UI繼續進行,景點假資訊還在整理之類的?
而我則描述API串接遇到的困難,所以決定用 sprintboot 以Java來 porting API文件中 python 的串接範例。

反正大家遇到的所有問題都在這個時間點整理起來了,經過調整後,S君會跟我一起解決API的部份。

Issue of API integration

在大家抱怨完沒有人對python 比較熟的同時,S君靈機一動說,可以用JRudy 於JVM直接呼叫範例程式的.py檔。
如此只要研究一下JRudy的使用方法,便可以免去porting的工了。

後來再分析全部API也只有 search, booking, confirm, download 這四個,連車站列表的API也沒有,覺得還是先找John來了解一下是否有其他資訊。

其實這時候才發覺,我們太晚去詢問API的問題了,
因為以向來串接API的經歷,通常只要好好讀對方提供的API doc,基本上就可以順利串接起來
便沒想到大會提供的這個API卻這麼雷,而且導師們早就下班休息了
難怪中途接到John的恐嚇說:「你們落後了喔,可能是現在倒數第一二的」

就這樣,sprint#0 就這樣繼續如火如荼地進行著。

End of Sprint#0

然而,sprint#0進行到結束時,大概的狀況總結如下:

  • API 串接S君使用JRuby 有成功的打通了search 的範例,收到成功的response,但是其他的API都是 authentication error 的結果
  • John 像NPC一樣,問對了key word才會回應答案,但他提供新的token也是無法讓API通過authenthication,還是得等早上導師回來後才能解決
  • UI 進度神速,F君的回歸,建置好webpack設定,進一步加速了前端開發的進程
  • N君表示他已喝了第三罐紅牛,視紅牛如洛克人的E罐一樣用來回血,每喝一口好像就有回來一點精神,但我們得阻止他了,不然怕他要壞掉了 XD
  • 我睡了第一覺,然後請大家開始輪流休息。
  • 第一覺醒來後,發現大家竟然架起了不知哪來的投影機,正在review現有的頁面了
  • 從昨晚開始大會提供食物不斷: 胖老爹、永和豆漿、麥當勞早餐 ... 。

我們知道現在最大不確定的變數在於API,所以目標便是集中火力先把頁面都用假資料連結起來。

隨著第一次demo的逼近,Sprint#0的希望似乎也漸變明朗

最難熬的Sprint#0,似乎可以結束了。

待續...

← 2017 AgileTour 暖身場 24Hrs敏捷戰鬥營 - 活動心得#1 - Kickoff