NASA 的 Agile 經驗
很多人說NASA裡有用Agile,沒人相信,我找到這篇證明,大家可以看一看,像是論文一樣,不是很好讀,不過我在此總結一下希望有所幫助(我把論文旁邊小字的結論意譯再加一點自己的心得)。
忽快忽慢比不上笨鳥慢飛
Sustainable Pace
產能跟工作小時不會成正比,整天過度勞累的工程師比不上早睡早起的。我想這個大家都有經驗,有時程式硬逼出來的結果改bug的時間比重寫還久,為什麼不一次把事做好?如果上級要求,每個程式都要做到最好,然後還要加班工作,你直接說"不可能,要不然你做給我看看",我們是"人"需要休息。
兩個諸葛亮
Pair Programming
三個臭皮匠勝過一個諸葛亮,那兩個諸葛亮呢?Pair Programming很多人誤以為是兩個人"分工"寫一支程式,其實是兩個人"同"寫,那怎麼一起完成呢?一個攻一個守,去想怎麼設計好一段模組,然後換成一個守一個攻,這樣兩個人的意見可以混在一起,做出來的東西犯錯的機會比較小。如果你有經過損失第一把交椅程式設計師的慘痛經驗,用這個方法可以有50%的機會保你,不過一般經過PP以後兩個人會變死黨,一起走的話那就沒救了。
沒有自動測試休想簽入
Test-Driven Development
很明白了吧!依照規定來,先寫測試再寫程式。沒有測試的功能不存在。
簡單是王道
Simple Design
任何時間只要發現設計太複雜就要想辦法簡化。因為複雜的設計不好維護,然後你花越多時間維護,東西會變得更複雜,斧底抽薪的辦法是一發現就先簡化。
不要等,不要猜
On-Site Customer
如果你對客戶的需求有什麼疑問,有駐點專家的話,你可以馬上問,最麻煩的事就是你問半天沒人知道,然後等在那裡,或用假想的,這樣就不敏捷啦。不過你也不可以讓駐點專家浪費時間在Standby等你的問題,是吧?如果一個星期可以有一天,那你把這一星期需要的部分搞清楚,剩下的用打電話問就好了,Agile就是要想辦法變通。
還有一些沒提到的重點,歡迎大家提出來分享。
2009年3月21日 星期六
NASA 的 Agile 經驗
2009年3月20日 星期五
微軟內部Agile成功個案 -- CodePlex
Sara Ford's Blog - How I Learned to Program Manager an Agile Team after 6 years of Waterfall
背景介紹
Sara Ford 從學校畢業以後就馬上加入Microsoft,在Visual Studio團隊工作了六年,目前在CodePlex團隊擔任Program Manager(程式經理)的工作,她在這篇部落格文章裡描述了怎麼從每三年一個循環到三個星期一個循環的適應過程,對想開始從傳統瀑布(Waterfall)開發模式轉到敏捷(Agile)開發的團隊而言,這份經驗很值得大家借鏡,我想當個中間人引導大家來讀這篇文章。
三加一個教訓
Sara用時光如果可以倒流的方式來點出三個Agile的重點
1.Design and plan for the very next step, instead of designing and planning for the very next feature.
我想把它譯成:"要就馬上做,不要想著下次再改"
有很多時候花很長時間想設計,寫了長達60頁的規格書,結果到後來寫出來的程式不見得跟規格書一樣,倒不如不想太多以後,只想接下來三個星期可以完成的工作,專心的把事情做好,這樣就比較不會落入"等太久"或"想太多"的麻煩,每次專案都是到後來才趕工累得要死,而且很多時候都是程式開始寫的時候問題才會出來。
2.Break down work into smallest possible sets. Adding work is fun and rewarding; removing works is panful and risky
不以善小而不為;把小磚塊建好了才有辦法蓋高樓。
把工作細分,不要覺得事情小就不以為然,這是Agile的重點之一,Sara本來覺得只把三個星期完成的事情送出去外面給使用者會被嘲笑,殊不知把一項完成的工作堆出去,要比三項半成品推出bug一堆好得多,所以Agile是著重在可以合理掌控的工作量。
3.Design and plan 80% of the way as the very next step. Use feedback to solve the remaining 20% in the very next step after that.
每次解決80%的問題,剩下20%接著解決,所以不想完美主義,事情才可以一步步完成。
很多問題是沒辦法一次解決的,在解題的過程中你會得到一些重要的資訊,接著要解決就比較容易,有些問題甚至會自行消失,變成不是問題。
4. Forget everything you’ve been told about what makes a Program Manager successful at Microsoft. Thinking about this will only drive you insane and make you completely miserable on a real agile team.
第四點是她在Microsoft的心得,原本在大案子裡做的經驗要全部忘掉,這樣才能完全融入Agile的開發環境中。
隱藏的資訊
我覺得Sara的成功經驗有幾個重點,大家不注意可能看不見:
1.專案特性
由於CodePlex是一個推動OpenSource的網站,所以五星期一次的更新週期沒有問題,如果像一般軟體需要測試安裝或切光碟的話就不太容易。
2.老闆支持
Sara的老闆 Jim Newkirk 出過一本 Test-Driven Development in Microsoft.NET 的書,所以老闆本身是相信Agile的。Sara剛到組裡的時候問"密碼最長幾個字元?"結果每個人都告訴她"去看測試程式是怎麼寫的就知道了!"實際的建置取代了文件,這是Agile的重點。
3.Developer主導的Agile
Sara說,有人問她是怎麼說服這個團隊用Agile的?她回答是"剛好相反,是她被說服的,本來這個小組的Developer就是Agile了",讓寫程式的人主導要怎麼做,讓可以直接影響軟體品質的人主動要求,這樣做出來的東西要不好也難。
4.你願意放棄你所熟知的方式嗎?
我想這是執行Agile的最大阻礙,管理程式設計師的專案經理一但失去所謂的"控制",要讓大家去"亂搞",那就沒有章法了。Sara用了很多心思去放棄原先的思維方式,最後發現Agile的開發方式對這個團隊而言是比較合理的。
後記
各位可以注意一下5星期為一周期的規劃圖,兩週寫程式,一週穩固,再來讓測試小組接手做一週的完整測試,然後第五週放上機房。
另外他們的辦公室配置也值得一提,所有的人全部在開放空間裡(來上班的時間就工作,工作完早點回家,不要在公司做家裡的事,在家裡想公司的事,Very Agile!),寫程式的人兩個人一組坐在Y型的桌子(Pair programming),測試小組在左方一排,Developer可以直接跟Tester討論測試結果,PM去面壁別吵到大家(No Manager is Good Management)。 :)
白板上用來控制專案進度的貼紙,很有效,誰什麼時候做什麼事情一清二楚!
在Microsoft總部這裡Agile己經引發一股熱潮,有越來越多的成功案例,不過都是局限在小一點的專案,目前聽說最大的團隊是Office裡的OneNote,而且不只Microsoft,NASA也有成功案例,以台灣大多數是小規模軟體公司來看,這確實是值得注意的發展趨勢。
標籤: 技術分享, MIC Taiwan
2009年3月11日 星期三
從 Amazon Kindle 看價值創造的過程
上個月Amazon新版的Kindle2上市了,如果不曉得什麼是Kindle可以上網查一下資料,基本上Kindle是一個可以上網的電子書閱讀器,所以簡單的說我可以用它來:
1) 看書:在6英吋的面板上由於不閃爍(使用e-Ink技術),所以看起來感覺跟紙印出來的差不多,而且在大太陽下也可以看。
2) 查字典:在看書的時候如果有不懂的單字,把游標移到字前就可以查到意思,如果是專有名詞還可到Wiki去查,Kindle有內建的連線功能,直接使用手機的網路上網。
3) 買書:Amazon做了個網路電子書店,讓你上去看書評,下載試讀版,喜歡的話可以直接買書。
4) 拿在手上的書架:閱讀器裡配備1.5G記憶體,可以讓你放約1000本書,你沒看錯零,是一千本書,在不到0.3公斤的小機器裡。
5) 聽音樂或電子書:可以把喜歡的背景音樂放進去,邊看書邊聽音樂。我原本在Audible網站上買的有聲書也可以放在Kindle上聽。
所以我想放棄開車上班改搭公車,享受每天通車時的閱讀樂趣,不過我同事告訴我現在公司的接泊車上早就客滿,而且大家早就人手一本Kindle2,看樣子這個流行還傳得真快,不過我想跟大家分析的不是這個東西的功能而是它創造出來新的價值與綠色產業。
對我個人而言上述功能1~5改變了我買書的習慣,因為現在我上廁所也可以逛書店,等太太買菜在車上也可以逛書店,而且不只可以"逛",買書不必等好幾天,馬上下載馬上看,而且價格只要實體書的1/3。
對作者而言,Amazon的編輯平台,提供每本書售價的35%付給作者,不僅鼓勵作者,而且幫作者建立跟讀者溝通的管道。
對出版商而言,不必再大量印刷,過去的舊書電子化以後,再版可以省去庫存管理的風險,又可以多個銷售通路。
Kindle2一台359美金,盒子上寫Made In China,所以大陸的工廠也賺到了。
除去大陸工廠的製造業,這個新科技從18個月前上市到現在,Amazon把二十四萬本書電子化,你可以想像從轉檔,打字,翻譯,編輯,美工,排版,校對,完稿,上載,上架網路書店,客人買書,成交,下載,電子書管理... 這些創造了一個高價值的產業,有多少人得到新的工作機會,而這些都在美國(或是Outsourcing 的國家)。
我在想,全世界可以讀中文的人口可能早就超越了英文,怎麼就沒有人想要去創建這樣的價值體系?讓個人可以方便閱讀,是培養一個社會有創意有產能的基本條件,不是嗎?
不曉得怎麼樣讓馬政府的官員,或是還在想投資"軟體代工綠色科技產業"的郭董,可以看到這篇文章?當大陸當局都準備發給一億六千五百萬學生電子書包的時候,我們還在用10幾年前的統計資料做"代工"的夢?真叫人感慨。最近台灣有很多企業家都做了跟比爾蓋茲一樣的預測:"這次金融海嘯將對世界經濟帶來結構性的變化",我覺得這個變化的關鍵將會被注重教育的國家所掌握,因為不管如何"教育"才能培養出優秀的人才,而人才是創造價值的唯一途徑,您認為呢?
2009年3月3日 星期二
改變
前幾天在收音機裡聽到,一位第一次準備到非洲去參加志願服務的護士Call In,節目主持人說了一句話,讓我頗有感觸:
"我想你能為當地帶來的改變可能有限,但是這次服務一定會改變你的一生。"
是啊!我自己也有很多類似的經驗,想改變一個人,或改變一群人,結果最後改變的是自己。或許是有熱心想改變的人,心裡面相信"改變"是有可能的,所以最後不管外界是不是變了,自己的心態卻是第一個變了。
所以我相信一個人,一群人或一個地方要改變,一定要有一小群人在沒有看到證據之前就相信"改變"是有可能的,然後努力的去讓大家看到"證據",等到大部份的人都相信而且行動起來之後真正的改變才會發生。
用這種思維去想想:
你認為景氣會"變"好嗎?
你認為教育會"變"好嗎?
你認為政府會"變"好嗎?
答案在你心中。