l

2012年2月20日 星期一

交戰守則,自己寫

February 19 11:10~12:41

曾經在網路上看到一則新聞,標題叫做:德軍看到敵人可以直接開槍了,新聞內容如下。

由於傷亡慘重,德軍修訂交戰守則,今後在阿富汗的德軍不必看到敵人囉哩囉嗦的警告半天,才開槍了。

德軍一九四五年戰敗以後,受到制裁成了沒牙的老虎。有很多的限制,前幾年根本不能出國,現在跟北約盟國一起在阿富汗作戰。為了確保不侵略的形象,德國國防部頒佈了一本有七頁厚的交戰守則,裡面規定,德軍在敵人還沒殺死自己之前,不可以殺死敵人 德軍在敵人沒準備好要開槍以前,不可以開槍。開槍以前還必須用英文以及帕什屯和達里這兩種阿富汗語喊出「聯合國,別動,再動就開槍」這兩句話。

北約部隊私下說,在阿富汗戰場要認出德軍很簡單,手裡緊握著交戰守則,死在地上的就是了。德軍最近終於修改了交戰守則,把七頁減成四頁。新守則規定發現敵人就可以開槍,不用等敵人裝好子彈,打開保險,當然也不用先警告敵人了。

***

很多想要採用或是已經嘗試Scrum的鄉民們心中可能都會有這樣的一個問題:

Scrum或是其他的敏捷方法都說不用等需求全部都確定之後就可以寫程式了,問題是我正在開發一個資料庫應用系統,如果我不先把資料庫的schema全部都設計好並且讓使用者畫押確認,那我根本無法把工作分配給開發人員去施工啊?總不能設計好一個table就馬上開工吧。

討論這個問題的solution之前,先回答另外一個問題:

  • 在以前的經驗中,是否只要先花時間把資料庫的schema設計好,後續的schema幾乎很少更動?

如果這個問題的答案是Yes,那麼恭喜你,你遇到了一個需求很明確的專案,或是一個什麼都不會要求,並且胃口很好什麼都吞得下去的 白癡 好客戶。那還管什麼Scrum不Scrum的,就按照你原先覺得很好的方式去開發軟體就好了。先把需求包含資料庫schema設計好,假設花了你整整兩個月好了,之後再把Scrum團隊找來,開始施工。在這之前Scrum團隊成員可以先去忙其他的事。

不要為了 CMMI而CMMI  Scrum而Scrum,最後落得手裡緊握著Scrum講義,死在地上的下場

***

對於想要導入Scrum的團隊,都會遇到一個很根本的問題:如何把現行的軟體開發方法,偷渡…不對,應該說過渡,或是「無痛」轉換成Scrum所描述的方法,並獲得所有敏捷開發方法所宣稱的好處:每個iteration結束都有一個可執行的軟體、可以隨時接受客戶需求變更、開發出高品質的軟體、賺大錢、取水某、嫁好尪、出國比賽,得冠軍,拿金牌,光榮倒轉來…等等等等等。

Yes, you can…大概run個幾十上百年應該就可以(這是在開發軟體還是準備修道成仙…XD)。

如果鄉民們是一位軍人,國防部可以給你武器,給你裝備,給你後勤支援,給你發餉甚至是加薪,讓你無後顧之憂的去打戰(那個國家的國防部那麼好?)。但是國防部沒辦法給你一個「完美敵人」,沒辦法要求敵人一定要跟你打正規戰。你的敵人可能是把炸彈綁在C字褲上的辣妹(氨辛啞?),或是開車以時速300公里衝撞崗哨的101歲人瑞阿嬤,或是準備到處散播致命病毒的瘋狂科學家。

「新守則規定發現敵人就可以開槍」,好,很好,非常好,非常之好,好的不得了。為了自身安全,那就來個「看到黑影就開槍吧」,你心裡面暗自竊喜的如此盤算著。但是,這樣也不行啊,到時候又引來濫殺無辜的批評,每天聽到這些 狗嘴 名嘴在電視上大放厥詞,你的下場也好不到那裡去。

七刀,吃這個也癢,吃那個也癢,那到底要怎麼辦?

沒什麼怎麼辦,就是要看著辦。每一位好的工程師,心中都有一本交戰守則(Teddy內心獨白:其實不好的工程師心中也有一本,而且比你的那一本寫得還要好很多…Orz)。這本交戰守則,可能是歷經十幾年以上的實戰經驗所累積出來的寶典。也可能是苦學多年看了幾百本書與論文的心血結晶。想要輕輕鬆鬆聽了幾場免費的演講就寫出一本屬於自己的萬用交戰守則是不可能的。

演講還是要聽,搞笑談軟工還是要看。但是最重要的還是要回歸原點,馬步有沒有好好地蹲,基本功夠不夠。如果鄉民們的「國防部」沒有給你足夠的訓練與資源,只能想辦法自己變強,或是換個「國防部」吧。下一個「國防部」也許會更好…XD。

***

友藏內心獨白:這一篇亂七八糟的到底在講什麼碗糕。

沒有留言:

張貼留言