矽谷敏捷軟體開發

18
那些老師沒有教的谷敏捷軟體開發 經驗分享 By Wen Hsu

description

Slides created for C.C. Agile #15 - 那些老師沒有教的矽谷敏捷軟體開發經驗分享。https://www.facebook.com/groups/268206229913141/

Transcript of 矽谷敏捷軟體開發

Page 1: 矽谷敏捷軟體開發

那些老師沒有教的矽谷敏捷軟體開發經驗分享

By Wen Hsu

Page 3: 矽谷敏捷軟體開發

Outline● 敏捷開發. 當傳統遇上敏捷?● 團隊合作● Extreme/Pair programming● 讓你半夜睡得好的幫手 - 測試!● 讓你半夜睡得更好的決策 - 如何找到對的人● 公司 tech stack

Page 4: 矽谷敏捷軟體開發

傳統流程 - Waterfall錯一步,就得打掉重練

http://en.wikipedia.org/wiki/Waterfall_model

Page 5: 矽谷敏捷軟體開發

傳統流程 - 問題在哪?

每個人的理解不同

傳統流程軟體開發時間難以預估,太常失敗

Page 6: 矽谷敏捷軟體開發

Agile導入

強調從早期開始跨部門,以及部門間溝通 (green lines)

*http://www.ambysoft.com/essays/whyAgileWorksFeedback.htm

Page 7: 矽谷敏捷軟體開發

當傳統遇上敏捷?

建議直接執行敏捷的流程。逼不得已時,在從傳統導入敏捷的過程,時間可以小時和點數同時預估,幾次之後對於多少點數換算成多少時間會較準確。

Waterfall Agile

需求 (Requirement) Up-front Evolve with time/iterations

進度 (Progress, Blocks) N Daily standup, scrum board

所需時間 (Design & Estimate) Hours Points

秋後算賬 (Retrospectives) N Y

Page 8: 矽谷敏捷軟體開發

部門間合作 Cross Teams

- 綠色為agile流程,全部以點數計算

- 省略原有的D&E過程,直接開始coding

流程 Requirement

D&E D&E review

Development

Demo Biz acceptance

QA測試 客戶測試

參與人 - Biz Owner- Dev- QA

Dev - Dev- Biz Owner- QA- SME

Dev DevBiz OwnerQA

Biz Owner

QA Client

Page 9: 矽谷敏捷軟體開發

Extreme/Pair Programming● 開放空間● 雙銀幕● 兩張椅子● 白板 + Scrum板● 兩個人做同一件事● 輪流主導,一起討論

http://www.codinghorror.com/blog/2007/11/pair-programming-vs-code-reviews.html

Page 10: 矽谷敏捷軟體開發

Pair Programming - why?● 提高程式品質● 縮短研發時間● Knowledge transfer● 訓練溝通能力● 專心於解決問題本身,而不是deadline

Page 11: 矽谷敏捷軟體開發

Code Review● Just do it!● http://www.codinghorror.

com/blog/2006/01/code-reviews-just-do-it.html

Page 12: 矽谷敏捷軟體開發

遠距合作

● 同一或相近時區● 快速回應● Skype● 螢幕分享

○ Screenhero○ Readytalk

● Pair programming的文化讓遠距合作變得容易

Page 13: 矽谷敏捷軟體開發

半夜睡得好的幫手 - 測試!

● Study conducted by NIST in 2002. Software bugs cost the U.S. economy

$59.5 billion annually● http://en.wikipedia.org/wiki/Software_testing

完整測試讓問題在這一階段就找到

Page 14: 矽谷敏捷軟體開發

半夜睡得好的幫手 - Testing!● Unit Test (TDD):最小的

邏輯單位● Integration Test:一套系

統如何運作● System (Selenium)

Test:一套組合系統的運作

Page 15: 矽谷敏捷軟體開發

完整測試的好處

● 減少開發時間:測試feedback快,不需手動測試

● 鼓勵Refactoring:如果改了其他處有問題,測試可以幫你抓包!

● 測試可以幫助對程式的瞭解:e.g. 測試名shouldIncludePromotionWhenTravelWithPartner()

Page 16: 矽谷敏捷軟體開發

● 回家作業 - 寫程式習慣● 電話面試 - 溝通能力,技術能力

○ 約一小時, 刪掉約一半人選

● 面試 - 思考過程,臨時應對能力○ 至少跟3位會一起工作的工程師面試○ Pairing exercise (鼓勵google)

● Hire or no hire?● http://www.joelonsoftware.com/articles/guerrillainterviewing3.html

睡得更好的決策 - 對的人

Page 17: 矽谷敏捷軟體開發

Tech Stack● Documentation: Confluence● Bug tracking: TargetProcess● Skype● Email● IDE: IntelliJ Idea

● Apache● Spring MVC (Java)● Ember (Javascript)● Freemarker (Template rendering)● Coldfusion (big no no)● Couchbase● Postgres● Git● Maven & Ant● Jenkins● PgBouncer

Page 18: 矽谷敏捷軟體開發

謝謝聆聽,Q&A