2014年10月10日 星期五

preparation is the key...

還記得我去年寫了一篇文章,關於『練習』,看看時間,剛好快一整年。

當時寫『練習』這篇文章時,是因為同時間看到了一些讓我挺有感觸的東西。一個是當時跟大家提過的日劇Dinner,一個是Robert C. Martin的The Clean Coder。而剛好那時候又碰到TechDays結束,忍不住把一些心情整理下來,這也是後來在MVP Open day當中,會和朋友們談到我自己的一些學習過程的緣起...

後來,曾經有學員(也是朋友)私下問過我,如果凡事都需要那麼多練習,那豈不是沒有生活的時間了嗎?真的每一個所謂成功的人,都那麼精實的訂定自己的『目標』,都那麼積極的過每一天的生活???

當時我沒有回答,因為我不知道該怎麼回答。

我不知道的是,是不是只有我看到(學到)的是這樣?我無法肯定是不是一個通往夢想或實現目標的正確方程式就一定是如此;同時我也不能那麼肯定,這就是唯一正確的道路。

一年之後,我看到了一場兩年前的演講,讓我可以更肯定地跟朋友們分享:或許我在上課時提到的那些(目標、努力、練習...etc),不一定是通往夢想的標準答案,但顯然不只我一個人這樣做(或這麼想)。

或許通往成功的方向有很多條路,但更多的準備,絕對是讓你在這條路上可以走的比別人更快的方法

可能是因為幸運,我求學階段沒有太多參加補習班的經驗,我也沒有去過台北知名的補習街上過太多的課,所以對於補教界的老師也只是耳聞(雖然某種程度上來我,我自己搞不好也 算是補教界的一份子...),再加上前幾年風風雨雨的補教人生,可能讓很多人從新聞媒體上看到的印象是很負面的。

不過如果暫且撇開這些不談,主講者在工作上的努力,和對於目標的專注與積極的準備,是讓人相當欽佩的。顯然在極度競爭的市場中,要擁有一席之地,倚靠的絕不會是僥倖。

本來只是假日想讓讓自己休息所以找個演講用聽的,點開youtube時不很期待,但沒想到她的演講講的很好,比我預期的要好~非常多...

整場內容時間不短(但卻一點不會沉悶),講到目標、講到夢想、講到教學、講到熱情、講到練習、講到努力、講到核心價值...etc.這些主題都是我熟悉的(甚至是我自己講過的),但能講得這樣吸引人真的很不容易,講者在演講和授課技巧上算相當不錯...推薦給當講師的朋友 或 想當講師的朋友(part 2還談到了教學技巧和怎麼準備好梗)...是場少見的演講

其中一句話讓我印象深刻,呼應了去年寫的那篇文章的主題...『preparation is the key』。

假日,不妨敞開心,聽一場演講吧。
part 1-4
https://www.youtube.com/watch?v=WvN6IQzlFWo&list=PLmqK1wR8I6PefHfEvmLcaXmPBITOwljeP

2014年10月4日 星期六

飛機上的27A - 談敏捷開發的成案問題

 
最近看一本書,書名就是這篇文章的標題『飛機上的27A』,剛好工作上發生一些事情,頗有一些感觸。

這是一本小書,也是一本小說,我是看電子書,但看完之後我又買了紙本書(送給身邊的朋友)。書中一位成功的企業家對於選擇合作對象的想法,讓我重新省思一些幾乎快被我忘記了的原則。

書中主角是一個成功的年輕人,算是在當今這個營營汲汲的資本主義社會中的佼佼者,然而有一天,他在飛機上碰到了這位很不一樣的企業家,在企圖爭取這個企業家成為他的客戶的過程中,他所學習到的一些故事。

看完這本書後,讓我回頭思考的問題是,這個世界不知道從什麼時候開始,充斥著各種商業與管理技巧,各種tips類型的準則,讓我們目不暇給,眼花撩亂。時間管理? 談判法? 如何成交? 銷售的心法? 甚至連生活都有小技巧...然而被這些tips轟炸的同時,我們都忘記了很多最基本的原則。

其中之一,就是『誠信』。

為什麼對這個特別有感觸?

書中的企業家選擇合作的廠商,首先看重的不是獲利能力、不是資本額、不是折扣的高低、或是交易的利益。而是這家公司的誠信、道德操守、以及員工、經理人的人格特質,和公司文化。

我發現上面這一行最後幾個字,幾乎是我們現在在報章媒體上已經很少看到甚至很少被用的文字了。

最近一兩年,我們的開發團隊整個改為agile與scrum,然而碰到最大的挑戰,並非制度與工具、也不是人員或方法。坦白說,最大的問題是外部的客戶、採購與銷售。

Scrum在意團隊,也在意客戶,agile從軟體開發最原始的角度出發,我們希望建構一個客戶能用、好用的軟件。說真的,這可能是每一個軟體開發人員最原始的初衷,沒有人希望自己寫的code只能看不能用(或是不能看也不能用)。

然而,從這個角度出發,實際上會碰到最嚴重的問題,其實往往是『信任』。

依照Scrum,最合理的合約與付款方式是time material,也就是合約金額不固定。原因很簡單,因為我們隨時接受需求變更,如果隨時接受需求變更,那總工時當然也會跟著變更,沒有道理總工時調整了,合約金額卻不變吧? 這種合作模式,time material當然是最理想的付款選擇。

然而,這在台灣幾乎被視為不可能。

客戶總是希望固定付款金額,固定工時(遲了還要罰錢),但需求內容則在成案後還是會變更(好一點的客戶會註記變更幅度不超過15%之類的),麻煩的是,許多案子在成案前也無法把規格或scope確定(或許從客戶的角度來說是確定了,他有提供三張A4描述了SOW啊?但對我來說靠這三張A4要精確地算出專案成本,根用猜的差不多吧? 更何況還要落在合約上?)。但如果選擇先談好規格再簽約,則往往案子不成,SA成本卻又已經付出了。

當然,我們知道客戶的老闆想知道完成這案子大概要花多少錢,這我們能夠理解,但合約上能不能不要寫死那個金額還加上罰則呢?不行 >_< (很多客戶會質疑,你們又不是on site做案子,我怎麼知道你會不會浮報工時?我心裡想:難道我們on site就沒法浮報工時嗎? 你就能肯定我們寫的code一定和你的案子有關?)

因此軟體廠商為了自保,只好在時程預估上保留很大的buffer,膨脹工時或是人天數,以避免案子賠錢。久而久之,買方採購就習慣拿到報價先砍個2-3成,接著的拉鋸就是看買賣雙方的談判技巧了。

這樣的報價模式,廠商留有buffer,買方採購也可以交差,剩下就聽天由命了。如此一來,痛苦常常發生在專案開發團隊(一直碰到需求變更而無法結案)與軟體終端用戶(最終拿到可以驗收卻無法用的軟體)身上。

從整個交易過程和行為模式上來看,你很容易發現,這種deal其實是一個假雙贏的零和遊戲。本質上買賣雙方幾乎沒有進行第二次交易的打算,似乎都想幹完這一票走人的感覺。

有時候買方會說,Eric你放心,我們後面還有很多這樣的案子。有經驗的Eric心裡會想:你少唬爛我,我這筆先賺到再說,大不了不拿尾款(當然,表面上肯定不會這樣說)。

這種交易裡面少了什麼? 對,就是我想說的:『誠信』。

在累積了幾年的接案經驗之後,我大概得出一個結論:只要客戶企圖用最低的價格讓你做這個案子,那表示該客戶後面肯定幾乎沒有其他案子會給你。

久而久之,我開始把報價越拉越高,主動放棄需要用價格來競爭的案子,因為我不想要(我需要、但不想要)這樣的客戶。我希望跟客戶的合作建立在誠信上面,我希望培養的是長時間的默契與往來,我希望真的透過我們團隊的技術與經驗(這才是真正值錢的部分,我的客戶你必須認同),協助客戶解決難題。

因為這樣,我們必須放棄很多的案子,因為客戶和我的理念與公司文化不合

坦白說,這很辛苦。我甚至也不知道值不值得。

但回頭想想,難到不該這樣嗎?

看看身邊,最近台灣很多食安的問題,不也是因為誠信? 賣你黑心商品的上游廠商,心裡想的也是賺一票走人的邏輯、考慮的不是永續經營,而中間廠商只願意用最低的成本採購原料,用最有競爭力的價格賣給消費者,這彷彿已經是商業既定的唯一真理。(但競爭力怎麼來的呢?壓榨了誰呢? 犧牲了什麼呢? 卻沒人在意了)

記得有天我感慨的在臉書上寫到:『在這個時代,大多數人都遺忘了一件事情,就是商業行為一開始是建立在信任和誠信上的。如果大家還有印象,就會發現以前(近百年前)的廠商,對信用這兩個字很在意的,人無信不立,說到的就一定要做到,撒謊和欺騙是一件很嚴重的事情。但這個時代變了...所以其實重點是在,重新建立一個和消費者之間的信任的過程...

(想一想其實很好玩,30多年前我記得沒有超商的時候,巷口的雜貨店老闆我是認識的,他住在那,從小我就看著他長大,老闆的兒子是我同學,我100%信任他賣給我的東西不會有問題,但時代變了,7-11可以讓我買到遠在海外不知名的地點生產的加工食品,但我卻再也沒辦法信任這些賣我東西的廠商...)


科技是進步了,但我們在商業行為中慢慢失去了最原始的信任。

台灣在中小型的軟體專案當中,報價空間是非常大的,差價大多來自專案團隊的經驗、以及許許多多看不見的東西(專案管理技巧、需求分析能力、控管能力、對品質的要求、問題追蹤能力...etc)如果客戶像是選擇香豬油一樣用最低的價格來選擇一個軟體開發廠商,所能得到的軟體能吃嗎? 喔,當然可以,就像香豬油一樣,只不過就是有點不衛生罷了...

2014年10月1日 星期三

廣告:敏捷開發專案管理 與 架構設計實務(電子書搶鮮版)

本手冊是光岩資訊董大偉老師在『敏捷開發專案管理與架構設計實務』課程中的內部訓練教材。董老師以十多年軟體專案與產品開發經驗為基礎,採用Scrum與Visual Studio Online作為專案管理框架的實戰經驗分享,內容相當難得。與坊間的PMP專案管理、CMMI、瀑布式(waterfall)開發有所不同,本書內容為第一手的敏捷開發實戰經驗,不僅如此,這本書也並非傳統照本宣科的Agile/Scrum教材,而是結合了華人特有的專案運作模式與管理制度和文化,所凝結而成的經驗分享。


        內容以Scrum為骨架,搭配Visual Studio Online為實作工具,從專案的kick-off開始,一路談到專案開發的整個Life-Cycle,內容包含工作項目的管理、Features, Backlogs, Tasks, Bugs的建立、管理、追蹤與維護,包含測試與stakeholders的反饋蒐集,也包括Scrum的周期性工作說明與經驗分享。


        在本書中,董老師透過實際專案運用Scrum的經驗,以第一人稱的角度,將運用Scrum和VS Online的第一手經驗真實的呈現給學員,同時也和學員一起探討,面對在華人(特別是台灣)特殊的軟體專案氛圍下,各樣實施Scrum所發生的衝突和解決之道。更豐富的是,書中不僅僅介紹如何採用VS Online進行Scrum團隊開發,更進一步的討論到了如何透過架構與開發框架(Framework)設計,來解決專案經驗不足的團隊,採用Scrum時可能有的水土不服、品質低落的問題。透過開發框架(Framework)設計,簡化開發方法與程序,配合ALM工具和敏捷開發精神,讓您未來面對專案或產品開發更有信心。

        不僅如此,這本書也集結了董老師這幾年來,在不同場合分享的Developers生存之道,是一本與資訊技術密切相關,卻又適合技術人員在茶餘飯後細細品味的書籍。

言盡於此,其餘的,就由讀者自行體會了。

此版本為搶鮮預覽版,後續會持續更新(如何更新),但也可能調高價格!(越早買越便宜) 更新後,先前購買的讀者依舊可以免費持續下載最新版本。需要的讀者可以到這邊搶購。物超所值啊!!!

===============================================
序言
讀者須知
目錄
第1章 先讓我們來聊聊Scrum
 1-1 對於Scrum的看法
 1-2 Scrum中的角色與做法
第2章 專案工作項目的管理
 2-1 從Kick-off開始(建立第一個專案)
 2-2 從蒐集Features開始
  2-2-1 蒐集Features
  2-2-2 建立Features
 2-3 從Features展開Backlogs
  2-3-1 Backlogs的細節
  2-3-2 設定Backlogs的階層關係
  2-3-3 Backlogs的狀態與歷史紀錄
  2-3-4 Backlog的異動Alert(Notification)機制
 2-4 Task的建立與撰寫
  2-4-1 建立Task
  2-4-2 剩餘時數 與 燃盡圖
  2-4-3 指派工作負責人員
 2-5 工作完成狀態 與 相關的圖表
  2-5-1 累計流量圖(Cumulative Flow Diagram)
  2-5-2 燃盡圖(BurnDown Chart)
  2-6 控管每一個bugs
第3章 Scrum專案週期性工作與會議
 3-1 Scrum中Sprint的周期性工作
 3-2 Planning Meeting
  3-2-1 確定目標Sprint Goal
  3-2-2 決定Sprint Backlogs
  3-2-3 決定該如何完成?
  3-2-4 架構設計的衝突
 3-3 Daily Scrum與Team Room
  3-3-1 關於團隊
  3-3-2 關於溝通
  3-3-3 每天溝通
  3-3-4 線上溝通
 3-4 Demo Meeting (Sprint Review)
 3-5 透過Request Feedback取得Stakeholders的反饋
 3-6 Retrospective Meeting
第4章 程式碼版控(尚未完成)
第5章 建置與測試(尚未完成)
第6章 關於CI(Continuous Integration) (尚未完成)
第7章 雲端壓力測試(尚未完成)
第8章 開發人員的密技(尚未完成)
第9章 透過框架設計提升Scrum(尚未完成)
第10章 開發人員私房話(尚未完成)
第11章 專案管理私房話(尚未完成)
第12章 咖啡館呢喃 (尚未完成)