軟件從敏捷到超精益開發的10步
做軟件開發的都知道瀑布軟件開發模型吧,也都知道它已經成為軟件工程教科書上一個小節的內容吧,僅此而已,因為它已成為歷史,現在已經沒有人愿意說自己采用的是瀑布式軟件開發模型,取而代之的是敏捷開發模型,這個是大家現在掛在口頭上的常用語吧,其實你有所不知的是敏捷開發模型早在10年前就開始被廣泛采用了,但軟件開發的創新從來沒有停止過,敏捷開發現在也已經OUT了,許多新出現的開發方法很多地方都比敏捷方法還優秀,我們暫且統稱為精益開發或超精益開發模型吧,下面我們就來看看一個團隊如何做到超精益開發的境界。
1、選擇商品化的技術
不管你在哪個國家,總還有一個國家的工程師薪水比你低,作為軟件工程師,這是一件讓我們很心寒的事情,但事實就是這樣,真的很殘酷。軟件開發工作越來越商品化,借助第三方庫和API,使軟件開發不再是一件復雜的事情,需要實現的業務邏輯變得越來越簡單,Web領域也正在經歷一場運動,人們開始重視簡單的業務模式和內容質量,而不是技術,因為軟件開發已經進化到只需要調用現成的庫或API就可以組裝成功能強大的系統,開發人員自己寫的代碼會越來越少,其實這樣也會提高軟件的質量,組裝式開發比一個字母一個字母敲代碼穩當多了。
2、關注技術風險和市場風險
另一個與技術商品化并行存在的現象是缺少關注所謂的技術風險,在上世紀90年代,很難招到優秀的程序員,因此那個時代開發出來的軟件都很讓人害怕,也讓不少公司吃了苦頭,項目不是被迫推遲就是被迫取消的情況時有發生,雖然現在情況有所好轉,但一樣讓人不那么放心,項目被延遲,成本超出預算,要進行大規模用戶測試時軟件還沒有準備好的現象仍然頻頻發生,但一般來說,所有問題都是可以解決的。
3、選擇沒有技術風險的想法
雖然我的話聽上去象是沒有技術風險,但如果你想在復雜的領域創新那還是有的,如語義網絡、云計算、搜索或其它高級的或資源昂貴的計算機科學領域,如果正好身處這些領域,你一定能體會到有很多的技術風險,雖然這些新興技術領域常常會讓人很興奮,但遺憾的是,除了技術風險很高外,市場風險也很大,因此整體風險就翻了一番。在選擇創新的領域時,大多數人會選擇風險低和更簡單的領域,選擇高風險和難度高領域的人一般都是技術狂人,一旦成功,他們可能就會獲得“xx之父”的美名。
4、累積技術債務,快速將產品推向市場
這一點并不適合每一個人,如果你在做企業軟件開發,你一定要避免累積技術債務,因為它會使你組織中的其他人花時間來處理你構建的軟件,如果你開發的是金融或醫療信息系統時,那你一定要小心謹慎。另一方面,如果你開始做的不是很關鍵的系統,你可以跳過許多最佳實踐需要考慮的事項,可以認為是偷工減料的做法,這樣做可以更快速地將產品送交測試和推向市場,可以探一下市場風險究竟有多大。
5、僅當被黑了才重視安全
安全是累積技術債務的鮮活實例,加強安全的技術有很多種,如果你在一家對安全要求很嚴格的企業里,這一點并不適合你,另一方面,如果可以,放棄最安全的做法,只著眼于簡單有效的做法,如輸入驗證,這樣也有助于減少錯誤。除此之外,你可能想遠離會話劫持或復雜的服務器安全配置,或通過被黑爾發現安全漏洞,是的,我擁護被黑后在加強安全保護,但只有不會造成很大損失時才推薦這樣做,大多數黑客攻擊都沒有惡意,而是希望幫助你發現安全漏洞,這樣你就不用猜測哪里有安全漏洞,可以專注于核心產品的開發。
6、忘掉可擴展性
當我希望快速發布一個版本,看市場的反應如何時,忘掉可擴展性是我最喜歡的一件事,擴展性是業務人員最喜歡談的一個概念,但真正了解這個時髦詞語背后概念的人都知道它是這么一回事,簡簡單單三個字卻包含了很多技術和很大的工作量。首先,需要產品的某些部件可以進行擴展,其次,在創新階段,許多功能添加進來后可能很快又被移除,這是創新的正常過程,沒有什么東西是一步成功的,價值在于快速開發,為小部分人提供樣品測試,確定這些功能是否值得保留。精益項目的特點就是快速迭代,快速確定哪些功能需要保留和擴展,那些不被看好的功能就應該迅速停止開發并移除,這樣可以提高創新的速度。
7、對好的想法說“不”
根據定義,精益項目需要精益的資源,而本文涉及的是超精益項目,這意味著在任何給定時間只能構建有限的功能,決策過程需要清晰地確定哪些功能是需要的。一個常見的困難是,要在無數的好想法中間確定哪些可以繼續做下去,哪些應該停下來,這意味著比以往說“不”的時間更多,一個原則是盡快將產品推向市場,那些違背這個原則的想法都應該先否定,因此需要對好的想法說“不”的魄力。
8、沒有笨重的語言
我知道現在肯定沒有人用C++來創建一個Web項目,大部分人都在使用Java,Java對企業來說的確很有吸引力,但它對精益項目來說可能顯得有點笨重。很多新項目現在都轉向了PHP、Ruby或其它一些擁有快速原型優勢的語言,一個成功的例子就是Twitter,它就是從用Ruby On Rails做的原型逐漸發展起來的,它將快速迭代開發模型展現得淋漓盡致,對于Twitter團隊,迭代的成果就是Twitter。
9、速度高于質量
這是另一個有爭議的觀點,因為從長遠來看總是以質量取勝的居多。但在產品開發初期,哪些功能會成功是不知道的,因此唯有快速將產品推向市場,并收集用戶的反饋,然后再把重點放在提高產品質量上,如果發現沒有人使用這種產品,那么必須承認這是一個廉價且快速的失敗,但我們應該從失敗中學到東西,避免重復失敗,并迅速釋放出更好的產品。擁抱精益和超精益項目的團隊喜歡“失敗”這個單詞,因為他們將它看作是成功的前奏,每一次失敗的成本很少,并可以從失敗中汲取大量的教訓,然后在很短時間內發布更好的產品,從而將上一次的失敗掩蓋掉,因此以小的失敗換來大的成功是非常值得的。
10、用戶體驗高于用戶界面
在過去的15年中,我們看到了網絡的成長和成熟,經歷了網絡泡沫和后泡沫時代,每個時代總會看到很多外觀簡單,甚至有點丑陋的產品,但給人們帶來的價值卻很大,盡管它們看起來很丑,但所做的事情卻讓人欣賞,如著名的Google搜索引擎,Twitter和Craigslist,它們一個共同的特點就是界面簡單,但功能強大。我之所以提出這個觀點是因為,許多人覺得產品既應該好看,功能又應該很強大,但很多時候是不能兩全其美的,核心功能必須強大,然后是易用性,最后才是美觀。在開發新產品時,有很多創新的想法需要去實現,因此精益和超精益開發團隊可以使用快速原型和迭代不斷改進,并最終取得完勝。




















