軟件工程之美9講——爲什麼軟件工程項目普遍不重視可行性分析?

軟件工程之美9講——爲什麼軟件工程項目普遍不重視可行性分析?

爲什麼軟件項目很少做可行性研究?

  1. “因爲我們是軟件項目,所以我們很特殊。”“我們很特殊”,這句話聽着有沒有很熟悉?軟件項目確實有和其他工程項目不一樣的地方。比如說軟件項目很抽象,以至於在立項之前對於問題的描述(需求)和解決方案(技術方案)通常都是模糊不清的,只有隨着項目的推進,才能逐步搞清楚需求。而可行性研究是基於問題和解決方案來分析的,因此這有點像“先有雞還是先有蛋”的問題:你得先立項才能慢慢搞明白需求是什麼,然後纔能有解決方案;而你只有搞明白需求是什麼,以及解決方案是什麼,才能去做可行性研究。但“我們很特殊”,不能成爲不做可行性分析的藉口,可能項目需求最開始是模糊不清的,還不具備可行性研究的條件,那麼等到項目有了一定的進展,需求逐步明確後,要繼續對可行性做研究。如果發現方案不具備可行性,也應及時調整方案或停止項目以止損。

  2. “老闆拍板的項目,明知道不可行也得硬着頭皮幹呀!”這個問題要分類討論,有兩種情況。第一種情況,多半是由於老闆或者項目負責人控制決策權,且對於不同意見容忍度較低。底下人不敢提不同意見,明知道不對也只能執行。如果你是項目執行人員,不能參與決策,但覺得項目明顯不可行,我仍然建議你儘可能站在專業的角度給出科學的分析,通過合理的方式反饋意見。畢竟,項目如果失敗了,你也一樣可能遭受損失。如果你就是老闆或者項目負責人,則應該建立可行性研究的意識,並理性聽取不同意見,科學客觀地進行可行性分析,以便有效降低項目失敗概率。第二種情況,老闆或者項目負責人能接觸到的信息更多、更全面,同時還有戰略上的一些考慮,所以下面執行的人覺得不靠譜,並不代表真的不靠譜。舉個例子,2009 年阿里巴巴決定做阿里雲的時候,公司反對者佔絕大多數,只有馬雲和王堅等少數人覺得這個項目可行,而且必須做。最後,事實證明他們是對的。所以有時候,也不要着急下結論,可以換個角度思考下,也許是你因爲條件限制還沒想清楚。

  3. “軟件項目是鼓勵創新、鼓勵試錯的,可行性研究會阻礙創新!”這也是一種很典型的錯誤觀點,認爲創新就可以不做可行性研究,否則會阻礙創新。實際上可行性研究和創新從來就不是矛盾的,它反而可以幫助你提前過濾掉那些不靠譜的創新想法,提前發現可能的風險。想一想文章開頭關於 React Native 開源協議衝突的案例,雖然是一個創新性的項目,卻未繞過開源協議引起的法律糾紛。如果當初有法律方面的可行性研究,完全可以改用開源協議更友好的同類開源技術,避免項目的失敗。

如何做好可行性研究?

前面,我們講了可行性研究在軟件工程中的重要性,也幫你釐清了幾個常見的困惑,接下來我們來看看“如何做”的問題。其實,當你決定要做可行性研究,你就已經成功一半了,怎麼做反而是相對簡單的部分!軟件工程的教材裏面,通常會講如何寫可行性研究報告,很繁瑣,要撰寫諸如引言、背景、定義等內容。在這裏,我們關注的重點是,軟件工程中是如何去做可行性研究的。
如文章開頭所說的,通常從三個方面着手做:

  • 經濟可行性。從成本和收益角度分析,看投入產出比。不僅要分析短期利益,還要分析長期利益,看是不是值得做。
  • 技術可行性。軟件項目最終是需要人通過技術來實現的,所以要分析技術上是不是可行,如果有技術上解決不了的問題又能否規避。
  • 社會可行性。社會可行性涉及法律、道德、社會影響等社會因素。比如,觸犯國家法律的事情肯定不能做;產品如若不符合道德標準,可能帶來較大的社會負面影響,那麼也要慎重考慮。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章