40多年的軟體工程研究是失敗的 - iansommerville
作者背景:從1981年左右到2014年退休,我一直從事軟體工程或相關學科的研究。從1984年到2014年,我的所有研究都涉及與英國和整個歐洲的工業界合作。我有幸與來自不同行業和國家的許多人一起工作,我從這些經歷中學到了很多東西。
這篇文章反映了我在英國和歐洲的研究經驗。我認為,其他國家的情況在細節上有所不同,但都存在著相同的基本問題:
這篇文章是由我寫的一條推文引起的,這條推文是對提交給2022年ICSE會議(軟體工程研究的旗艦會議)的論文的研究領域的分析。這些導致我對軟體工程研究進行了普遍的反思。我很遺憾地說,我認為我們這個群體在40多年的研究中,並沒有真正交出多少實質性的東西。
從根本上說,我認為有三個相關的根源造成了這種情況。
- 短期主義。
- 還原主義思維
- 競爭而非合作
1. 短期主義
短期主義現在在軟體工程(乃至所有電腦科學)研究中普遍存在。這在一定程度上是20世紀70年代開始的 "不發表就滅亡 "的文化的結果,這種文化現在在大多數國家都很流行。
研究人員必須不斷地寫論文以保持可信度,怎麼能責怪他們呢?
他們專注於短期專案,發表中期成果,不願意投資於生產穩健和可重複使用的示範系統,並傾向於跳上某一特定時間段的時尚浪潮(例如80年代的形式化方法,現在的機器學習)。
這種短期行為的直接後果是:許多軟體工程研究都缺乏雄心。
注重成功指標的研究人員不願意去處理長期的困難專案。在英國,在21世紀初,有一項建議是確定 "計算科學的大挑戰"。提出了一些有趣的專案,如驗證性編譯器,但沒有一個實現。
許多資助機構(如歐盟委員會)的政策加劇了短期行為,即學術研究應該與工業界合作。可以理解的是,工業界不認為自己的角色是一個長期的研究資助者,而是專注於短期或最多是中期的研究。不幸的是,由於好的和壞的原因,這種研究對許多公司來說都是不太優先的。我30多年來的經驗是,它往往資金不足,在短時間內被取消,而且人員不足。
2. 還原論
在還原論的世界裡,小規模、短期專案的工作可以是合理的(也許),可以說這些專案可以形成一些更大的系統的組成部分。
然而,現實情況是,還原主義的方法根本無法擴充套件到大規模、複雜的IT系統的建設。
我以前寫過這方面的文章,這裡就不多說了,簡單地說,還原論的方法依賴於系統各部分之間相對簡單和可理解的關係。大規模的軟體系統根本不是這樣的。
太多的研究人員仍然不明白這一點,他們認為我們只需要找到一些神奇的方法,軟體工程的問題就會得到解決。他們在解決研究 "問題 "時,根本不知道他們的工作可能會如何擴充套件。因此,就軟體工程實踐而言,他們所做的大部分工作實際上是無用的。
3. 競爭而非合作
這些問題的背後是人類的問題,即我們有一個支離破碎的社群,在許多情況下未能共同行動,對競爭而不是合作更感興趣。競爭環境的現實是,那些已經有充足資金的人處於獲得更多資金的最佳位置。新加入的人很難為創新的想法獲得資金,因此,如果他們要取得任何進展,他們必須提出已經建立的增量研究。他們必須依靠富人桌上的麵包屑生活。
作為一個社群,高階成員(這裡麵包括我自己)未能創造一個包容性的環境,使來自傳統精英之外的新想法得到支援。在與政策制定者和資助機構打交道時,我們沒有共同行動,除了極少數例外,我們沒有大聲反對阻礙我們領域發展的徒勞的短期行為。
未來有希望嗎?坦率地說,我並不樂觀,因為變革將依賴於已經擁有終身職位的資深成員的利他行為,放棄短期研究,從競爭中退縮,讓年輕的研究人員蓬勃發展。個人的努力是很重要的(我想我在職業生涯的最後幾年裡已經努力過了),但實際上,只有當社群的大多數人都希望發生這種變化時,才有可能實現。
相關文章
- 基於快速失敗的軟體開發 - levelup
- 亞馬遜Alexa是如何失敗的?亞馬遜
- 什麼是軟體工程?軟體工程
- Java的快速失敗和安全失敗Java
- 做了40多年資料分析,Teradata這次的關鍵字是“任意”?
- 解決IDEA建立maven工程失敗的一種方法IdeaMaven
- 快速失敗是讓失敗立即快速發生! - pathelland
- Win10系統安裝AE軟體失敗的解決方法Win10
- 多年軟體測試大牛分享成長經歷,一個好的軟體測試工程師應該做到這些!工程師
- 寫作是軟體工程師重要的超能 - Gergely Orosz軟體工程工程師ROS
- 阿里失敗的最大原因是什麼?阿里
- 您的微服務是分散式整體嗎? -軟體工程日報微服務分散式軟體工程
- Oracle RAC啟動失敗-軟連結惹的禍Oracle
- 軟體工程師是靠培養就能成才的嗎軟體工程工程師
- 什麼是軟體行業的工程經理? - DZone Agile行業
- 訊息中介軟體消費到的訊息處理失敗怎麼辦?
- 譯:軟體工程師的軟技能(一)軟體工程工程師
- 軟體工程的迷途和沉思軟體工程
- 程式碼中的軟體工程軟體工程
- 軟體工程估算的技巧 - shubhro軟體工程
- 軟體工程的最大難題軟體工程
- 為什麼科學需要更多的研究型軟體工程師? - nature軟體工程工程師
- 以失敗為機制:奇異人生中的真實失敗與虛構性失敗
- 建站失敗的原因分析
- npm install失敗的可能NPM
- 清理重建失敗的索引索引
- 軟體工程博士講師:軟體工程是一個學習過程,程式碼只是學習的副產品軟體工程
- 鴻蒙安裝apk軟體失敗(不支援該裝置)鴻蒙APK
- 軟體工程-軟體工程層狀模型(EHM)軟體工程模型
- Linux中建立檔案失敗的原因是什麼?Linux
- 軟體工程 第一章 軟體與軟體工程軟體工程
- 一場“失敗”的突破:淺談《最後的生還者2》“失敗”的根源
- 軟體工程軟體工程
- 2021研究生考試總結(哈工程軟體)
- 依賴——軟體工程師的痛軟體工程工程師
- 軟體工程是教會不懂寫程式的人開發軟體嗎?軟體工程
- 軟體工程師職業是青春飯嗎?軟體工程工程師
- Cortana小娜失敗背後,微軟的傲慢與偏見微軟