前幾天和幾個同事討論軟體規模化生產的問題,覺得頗有意思。現在提出和大家共同討論一下,目前我們熟知軟體行業在全球進行了N年,但一直沒有實現規模化生產,像製造行業或其它行業經過10-20年時間,能夠形成流水線式的操作。我個人覺得可能與如下因素有關:
1、軟體生產,軟體的生產除了我們頭腦風暴然後就是電腦,不存在其它原材料;
2、正是由於人的因素,軟體行業在近期內無法實現規模化生產,行業的人員流動問題;
3、軟體的開發模式,國內目前大型軟體均為精英團隊開發;
4、軟體的個人化問題,無論是同行業的軟體還是不同行業的軟體與公司的業務聯絡的太緊密,不能實現通用化;
5、軟體開發學術重於實踐,我們不難看到某個成果在學術上已經很成熟了但至少要推後5-10年才能進入運行階段;
6、軟體開發技術的不斷更新,為了不斷提高開發效率與簡易性,技術不斷更新。以至於相關人員大部時間除了學習還是學習;
7、國內軟體研發與外包的比例問題;
8、軟體開發週期問題,我們經常跟進一個項目需要2-3年或更長的時間;
9、沒有完整的標準;
等問題!
當然這行年軟體行業的發展也在慢慢的正常化,我初步設想的是軟體要實現軟體的規模化生產我們需要以行業作為分類,因為我們知道,我們開發軟體都是根據需求來的,而同一個行業的需求應該是最相近的,比如我們以菸草行業為例,我們成立專門的菸草流水線(不會管開發工種或語言的問題),也就是我們通常所說的業務。我以此作為分類,對為不同行業形成不同的流水線(項目充足的前提下,如果我們開發成本足夠低,品質高,周期短,項目應該不是問題)。配以軟體工人,軟體工人不需撐握過多的技術或業務,只需要對該行業的業務比較瞭解。這樣不一來不僅可以降低我們的開發成要,人力成本等,也可以提高我們的開發效率。因為我們可以各司其職。我們將業務與需求的分析轉移到專們的部門去,開發部只需要做開發,需求分析什麼都不用管。將各自的責任分開,責任最小化,明確化。各行業按各行業的開發規範進行約束,行業與行業之類彼此獨立!
當然上面只是一種設想,首先我們需要解決的是開發人精英化到平民化。國內的開發項目,特別是大型目項大部是精英化團隊,而且此人員我個認為是沒有發揮到精英的作用。因為的人對業務是精英可能不是技術的好手,是技術的好的不一定是業務的精英。所以我們應該盡化將精英化的團隊轉變為專業化的團隊,行業化的團隊。
其次IT行為人員流動的問題,我個人覺得之所以IT行業的人員流動會到20-25%之間,正是因 為軟體開發的源材料的問題,其它軟體開的重要原材料就是人,人不是機器,而公司過多的把人員機器化,不能對員工做到人性化,還是把製造業的經驗搬到IT行業中,這樣是不現實的。機器是死的人是活的。應該過多考慮人的因素。雖然很多開發模式提出的人的重要性,但基本上治標不治本。我們應該考慮心理學在IT行業中的運行。
再次軟體開發週期問題,我們的軟體開發週期真的需要那麼長時間嗎?我個人認為得打個問號。我們經常很到五年前的需求,五年後還在開發。周期長這個問題也是軟體不能規模化的重要因素。如果我們能做到軟體流水線化。我相信很多問題都可以解決。與此類似的軟體學術化,很多重要的理論經常在學術界討論數年,還不如將其投到實踐中去檢驗。
當然以上只是我個人觀點,歡迎大家討論!