今天與朋友討論《
**大全
》,想起乙個2023年提交的專案報告。自我感覺是乙個不錯的應用實踐,故摘錄出來分享。
背景:以前參與的乙個4人的小型軟體專案(近8w行**),採用自然的手工作坊式開發,生存了下來。公司按照這種方式,逐漸新增人手到13、4個(以應屆生為主),開發乙個中型專案(估計40w行**)。期間遇到進度、功能、整合、穩定性等方面,引起的軟體危機。於是整理了專案對比研究報告,向領導提出初步規範化研發的解決方案。其中對問題原因的「軟體複雜度和資源」方面,說明如下。
x.2 軟體複雜度和資源
誤解:軟體複雜度增加,將模組拆分得更多,通過延長工作時間、或增加人力的方式,能夠保證功能、進度和質量。
事實:軟體複雜度增加,不能簡單等價於工作量增加。簡單地增加開發人員或延長時間,可能導致更低的工作效率和軟體質量。
下面是乙個複雜度和資源的簡單對比。修建狗舍、2層村屋、20層樓房。
修建狗舍:我們可以1人1天,使用斧頭、鋸子、鐵絲、釘子、木板、竹子、塑料布等工具材料,完成狗舍,1小時改變狗舍的開門朝向,10分鐘毀掉它。
修建2層村屋:開始砌牆前,我們需要先對承重牆打1.5公尺的石頭地基,大概分布門窗位置。修建時需要1個包工頭(通常是某個資深磚工)、2~3個磚工、4~5個雜工,修建中使用垂椎來確認牆的垂直度;每層封頂前需要鋼筋工(通常某個磚工兼職)加工屋頂的鋼筋,封頂中使用很多木頭棒子支撐房頂,直到穩固;後期需要裝修工(有的還是磚工兼職)安裝門窗、平整地面、安裝電線電燈及簡單裝修房間內部。大概7~8人2~3個月可以初步完工。一般用於自住,出現質量問題只能自己解決,質量問題不外乎房頂漏水、牆體開裂、透氣性差、風水不好等等(牆體開裂問題,我在我們家鄉的二層村屋中還沒有發現過)。
修建20層樓房:我沒有經歷過,無法準確描述人員結構、人員數量、任務分工、進度、使用工具、材料等等,但與修建2層村屋肯定大不一樣。常見的情況是,在我們家鄉的包工頭、磚工,來到深圳、廣州打工,在他人領導下幹活,大部分人很多時候並不理解工作內容、作用和重要性,多數時候驚詫於工具的先進,感嘆道人力的悲賤,教育下一代好好學習。樓房一般出租或**,還需要配備物業管理公司,隨時維護業主測試出的bug和提出的需求(牆裂、漏水、停水、電梯停運、下水道堵、停車位等等問題,我們耳濡目染)。
n專案與a專案相比,就是20層樓房和2層村屋的對比,而我們現在的開發方式,就如同修建2層村屋。應屆生如果能完成狗舍的修建,就算能力不錯;但如果他修建了乙個二層村屋高的狗舍,那就很危險了。
參考資料:
1.《**大全》
,2.3常見的軟體隱喻。