從廢柴到成材 - 那 20 個 sprints 教會我們的事 c.c agile #40

73
從從從從從從 那 20 那 sprints 那那那那那那 Diro 2015/12/17

Upload: diro-fan

Post on 16-Apr-2017

2.692 views

Category:

Education


4 download

TRANSCRIPT

Page 1: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

從廢柴到成材那 20 個 sprints 教會我們的事

Diro 2015/12/17

Page 2: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

簡介在網路上充滿了許多敏捷開發的童話故事,例如只要上完課,大家有敏捷思維後就可以變成敏捷團隊,從此過著幸福快樂的日子之類的。在這次聚會中,我將與大家分享這 20 個 sprints 當中所發生的真實故事: BOSS/PO/SM/RD/QA/UX 等不同角色所面臨的挑戰、各種角色之間高潮迭起的恩怨情仇,以及最重要的 ... 這個一開始用廢材形容也不過份的團隊,最後真的成材了嗎?相信這些情節,也會在你導入敏捷開發時一一發生。

Page 3: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

講者范姜士武 Diro 個人簡介: VIVOTEK 晶睿通訊 技術經理,自幼熱愛程式設計,近年來努力推動 Qt/QML 及敏捷開發,希望能為軟體界做出一點小小貢獻。個人網站: http://diro.twSlideshare : http://www.slideshare.net/dirofanQt@Taiwan : https://www.facebook.com/groups/qtdev/

Page 4: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

書上的美好故事

Page 5: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 6: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

通常只是童話故事

Page 7: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 8: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

讓我們來看看一個敏捷團隊

Page 9: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

一路上的關卡 & 真正的演化過程

Page 10: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

卡司陣容 = SM + UX + GUI + QA + 7 Developers合力打造新一代錄影監控軟體

Page 11: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

正片開始真實故事改編

Page 12: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

第一關/ 老闆 ( 的老闆 *)/ 老闆的老闆的老闆的老闆人資。 管理處。同事

Page 13: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

每當你提了一些新想法或新作法 ...馬上就會聽到 ...

Page 14: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

「我們這個產業不一樣啦!」謎之音:到底是有多不一樣 ...

Page 15: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

別怕,不是只有你老闆這樣

Page 16: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 17: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

這時侯你需要嘴砲舉證 ...

Page 18: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 19: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Agile/Scrum in IP SurveillanceH/W

AXISAvigilonBosch

S/WGenetecAxxonsoftMirasys

Page 20: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

如果成功,你就會得到

Page 21: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 22: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

第二關最大的敵人是自己

Page 23: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 1 - 初生之犢 ... 被虎吃

Page 24: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 1 - 初生之犢 ... 被虎吃1. CI 還沒建好,缺乏持續整合

a. 在 demo 前一天就爆掉了2. 最後的執行結果跟預估值大約差了 3 倍3. 但我想到很好的理由:

a. 第一次沒經驗b. 有幾個 stories 比較特殊

i. CI (TeamCity)ii. UAT (Robot Framework)

1. 有時侯付錢也買不到好東西,只好自己來2. 自製武器 小菜一號 - QML driver for Robot Framework

iii. 自製武器 小菜二號 - Visual Studio Project Template

Page 25: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 2 接受事實

Page 26: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 2 接受事實1. 到底該不該讓 member 在最後二天瘋狂的加班2. time-boxing! time-boxing! time-boxing!

a. 下了決定:承認失敗,就放棄它吧!b. 連 vmrun 這種看似簡單的工作都要 overtime 了

Page 27: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 3 抉擇

Page 28: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 4 意外無處不在

Page 29: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 5 承認錯誤,可以跑的更快 1. 花很多時間做 design review/code review

a. 有些 “ task” 也因為這樣自動消失了2. 讓大家感受到 design review / refactoring 的好處。

a. 但是,也讓速度看起來又更慢了

Page 30: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 6 基礎建設終於完畢

Page 31: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 7 UAT 大不易1.UAT 的實作時間很難估算2.測試區的 camera 有時候會無法連線,導致 UAT failure

a. 成員:是否應架設 UAT 專用的 camera?

Page 32: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 8 燉煮魚翅排骨鳥蛋時蔬百匯1.UX 覺得要花更多時間來加強使用者體驗

a. 「都可以啊,反正你們只要做 80 分」2.RD 覺得 UX 都不知道民間疾苦

a. 很多功能不是外表看到那麼簡單, CP 值你懂不懂啊 ?

3.QA 覺得壓力超級大a. 中文的 UAT 可行嗎 ?

4.請問 PO 說好的 product backlog 呢 ?5.規劃會議 & 自省會議 是讓佛跳牆團隊成功的關鍵

a. 聚餐、爬山、烤肉 也蠻重要的 ...

Page 33: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 9 測試展笑顏1.QA 原本要手動計算來驗證程式執行結果,但 RD 用一天寫個

python lib 就全自動搞定了 ~a. 感受到 Cross-Functional Team 的好處

2. 自製武器 - 小菜三號:小紅點3.中文描述

Page 34: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 10 不持續的持續整合1.Once you stop integrating, you start dying2.耶,那你為什麼要停掉 CI?

a. 人在江湖身不由己 ...b. 破窗效應

"Once you stop learning, you start dying" ~ Albert Einstein

Page 35: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 11 UAT 穩定性1.UAT 的不穩定性,要花很多時間克服

a. 怎麼可以用 Sleep 呢 !b. 加入 Wait Propertyc. 攝影機不穩定 ..d. 該失敗的卻沒有失敗 ..

2.UAT 寫到哭a. UAT 也是要有良好的設計的b. Keyword 可重用性,易讀性 ... 跟程式是一樣的

Page 36: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 12 專職的 PO

擁有一個專職的 PO 是件幸福的事 但是我們沒有 ....

Page 37: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 13 眾人智慧的力量1.SM :開始會有 long-term UAT 要加入 CI 系統了2.成員 A :單純測 worker ,不要測整個 plugin ,會比較單純、做起來

也快,整個 plugin 由 UAT 來涵蓋3.成員 B :可以考慮引入 FLUX 架構4.成員 C :全新的 Layout 設計 !5.成員 D :更棒的 bug report 方式~6.成員 E : UAT 應該改用 QML 的 UT7.成員 F : CI 應該產生 Debug + Symbol

Page 38: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 14~16 暴風雨前總是特別美1.團隊看起來已經合作無間,合樂融融一家親 XD2.能夠發揮眾人的智慧,大家都能提出新點子來改善工作效率3.UAT 開發速度也變快了,寫起來得心應手

Page 39: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 17 湘北的不安定因素

Page 40: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 18 舉步維艱軟體是逐步演化而來的如果演化過程中的時間不夠,就會變成異形

Page 41: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 19 含淚達成任務 1.程式碼中的 "負負得正 " ,讓大家不快樂 (咦 , 不是有 Unit Test 嗎 ?)2.最後硬撐,還是把任務完成了

RD :我也不知道執行結果為什麼會對 ..

Page 42: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Sprint 20 砍掉重練     跟 PO 協調,讓我們有時間進行大幅度的重構 !!

Page 43: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

浴火重生 1.更好、更短、更易讀的程式碼

a. 幸好有 UAT, Unit Test ,這是重構的基礎2.親身經歷,才能真正了解

a. RD 對程式碼品質有深刻的體悟b. 體會到 Code Review / Design Review 有多麼重要c. 沒有親身經歷,永遠無法體會"理所當然的廢話"

Page 44: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

影評與幕後花絮

Page 45: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

每個角色都能變成 T 型人嗎?1.RD

a. C++ / JavaScript / Python / QML / Unit Test / UAT / Client & Server b. 不是每個人都可以變 T 型人

2.UXa. QML

i. Image / Font / Transition / Animation

b. Subversion3.QA

a. Subversion / UAT4. 雖然一開始成本很高,但現在

a. 人力資源很容易交換 (舊組織的一大問題 )b. 更能激發出新的 idea!

Page 46: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

RD 與 UX 之間的互動1.UX 認為產品體驗要做到 100 分

a. 第一個 sprint 做到 70 分,下一個 sprint 可以進化到 80 分b. 重點功能會做到 90 分

2.UX 改來改去, RD 的感受 ?a. 設計的本質,就算先做過 usability testing 也一樣

3.UX 要做最好的,不管成本a. RD 分析實作成本,但最後由 UX 決定要用那一種

4.溝通很重要 !!溝通很重要 !!溝通很重要 !!

RD :一樣都會到,為什麼不走樓梯 ? UX :為了更好的體驗 !

Page 47: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

RD 與 QA 之間的互動1. RD & QA 思維大不同2. 品質是 DQA 的事 -> 品質是團隊的事3. RD 開發完時, QA 才能玩到完整的產品

Page 48: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

PO 與 SM 之間的互動1.透過規劃會議可以了解每個 story 所需要的成本2.但某些特別的 story 對 "價值 " 如何取得共識?

a. Technical Story b. Refactoring

3.這裡也沒有什麼屌絲的逆襲a. 純綷就是 Scrum Master 比較鴨霸 ...

Page 49: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

ScrumMaster 可以做些什麼事1.做武器、解 bug 、解疑難雜症 ... 可以嗎 ?2.育才、 Code Review3.參與開發,才知道問題 (C++ / QML / UAT)4.聚餐、下午茶、 Team Building ,建立團隊向心力5.以及 ...

Page 50: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

讓成員持續進步1.讓成員成為頂級工匠 Software Craftsman

2. 保留時間a. 一天二小時:其實執行效果不好,不會有人 3:30 一到就開始來看書之類的

b. 跑的比較順之後:星期一下午、星期五下午保留下來3.自省會議讓成員更勇於發言,更容易聽到基層工程師的聲音

a. 動手做事的人,才是最多 idea 的人!

Page 51: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

一個 sprint 就能浴火重生 ?1.平常就累積了實力跟想法2.體質很好,只是缺乏訓練以及演化的時間

a. C/C++ 的經驗可以重用b. 大部份只有重構 QML & JavaScript

3.C++都是 plugin 型式,比較單純,不需要重構4.這個 sprint 決定了我們能不能成功 !

Page 52: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

理論 v.s 現實1.Story 沒有全部完成怎麼辦 ?2.Unit Test / UAT 涵蓋率可以做到 100% 嗎 ?

Page 53: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 54: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

世界上沒有什麼速成秘笈1. 敏捷給你流程上的改變,做對的事

a. Do the right thing2.技藝給你本質上的改變,把事做對

a. Do the thing right

Page 55: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

不負責任推薦區知識分享

1.http://vvtk-digest.blogspot.tw/2.https://www.gitbook.com/book/diro/advanced-qml/3.https://www.facebook.com/groups/qtdev/?fref=ts好用的工具4.https://www.safaribooksonline.com/5.https://www.jetbrains.com/teamcity/6.http://robotframework.org/7.http://www.gurock.com/testrail/8.小紅點 正在準備 open source 中 XDD

Page 56: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

負責任推薦區1.誠徵軟體工匠

a. 如果你對軟體開發懷抱著熱情,希望用軟體技術為世界做出一點貢獻,歡迎加入我們 !b. 還有很多開發中的故事沒有跟大家分享,歡迎你來跟我們一探究竟

Page 57: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

負責任推薦區1.誠徵海盜型軟體工匠

a. 如果不喜歡風平浪靜,也可以到我們的新創公司來看看 XD

Page 58: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

番外篇拍片現場

Page 59: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 60: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 61: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 62: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 63: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 64: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 65: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 66: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 67: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 68: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 69: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 70: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 71: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
Page 72: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Thank You!歡迎加入我們 !

Page 73: 從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40

Q & A