Categories
程式開發

AI輔助開發比人工編寫代碼快180多倍,程序員是喜還是憂?


程序員坐穩了,AI開始搶你們的“飯碗”了。

如今,開發人員的准入門檻比以往任何時候都要高。重複性的任務佔據了軟件開發的大部分時間,並且很容易出錯。市場上軟件開發人才短缺,團隊超負荷工作,許多企業既無法完全掌握現有的日益複雜的代碼,又追不上新程序開發日新月異的發展步伐。

對於人工智能愛好者來說,推測人工智能如何改進軟件開發是件令人興奮的事兒。人工智能能否在幾天之內創建好原型框架而不用耗時幾個月甚至幾年?它會教人類開發人員如何更好地編寫代碼嗎?人工智能的研究範圍很廣,計算機編程的靈活性基本上也是無邊界的,所以很難想像當智能程序可以幫助人類與代碼交互時,軟件開發會是什麼樣子。

AI輔助開發比人工編寫代碼快180多倍,程序員是喜還是憂? 1

但許多開發人員和技術經理沒有意識到的是,在過去短短幾年裡,人工智能對開發團隊的重要性就已經產生了質的飛躍。其實,目前我們已經走到了人工智能輔助軟件開發的初級階段。

AI在自動化領域不可或缺

所有的軟件開發組織都追求高效、敏捷開發,自動化技術已經能實現大規模敏捷開發。過去十年,在進行自動化測試時,一旦代碼發生變化,開發人員能夠立即做出反饋,同時進行相應的調整,因此軟件質量有了很大提升。自動化軟件流水線利用機器人助手來生成Pull Request請求,從而保證更新的持續交付。

但是許多已經運用了這項技術的公司發現,僅依靠自動化是不夠的。自動化過程仍然存在瓶頸,大多數問題出現在新代碼的創建上。例如,自動化可以快速完成成百上千個單元測試,如果開發團隊自己來編寫這些測試,則需要幾個小時甚至幾週。但是如果這些提交沒有經過測試驗證,那麼自動化的流水線就會產生垃圾。儘管會打破原本自動化的過程,但在添加新代碼(和新測試)時,還是需要進行人工操作。

人工智能編碼技術

好消息是,通過自動編寫驗證自動化流水線其餘部分的測試代碼,現有的人工智能代碼技術已經可以一次性解決掉這兩個問題。這樣的任務過去需要耗費開發人員很多時間,妨礙了他們去做創建新功能等這種更有價值的工作。在單元測試中使用人工智能讓自動化更加完善,儘管這個過程並不容易。

AI輔助開發比人工編寫代碼快180多倍,程序員是喜還是憂? 2

正如曾經預期的那樣,人工智能創建的測試與人類編寫的測試存在差異。但這些測試能在很短的時間內生成,而且功能也算合格。如果不能做到比人類編寫的代碼更好,那就要保證出現問題時代碼能很容易地被修復。正如Martin Fowler在他2006年《論持續集成》一文中所總結的那樣:“頻繁地運行不完美的測試,比完全不寫的完美測試要強得多。”

利用人工智能幫助開發者編寫代碼,讓開發人員和IT經理不再被時間、成本和工作質量無法權衡的問題而困擾。不少開發人員在最初進行軟件開發時都頗具創造力,但是大量的重複性的工作消磨掉了他們原本的創造力。人工智能輔助開發不僅能讓開發人員在不犧牲質量的情況下更快、更經濟地創建新產品,也能幫助他們快速地完成重複性任務,把注意力回歸到創造性任務中,讓他們在工作中更有獲得感。

落地是關鍵

像金融業這些高度重視代碼質量的行業,也已經開始使用人工智能輔助軟件開發。例如,為提高軟件開發效率,高盛(Goldman Sachs)最近已經開始使用人工智能編寫代碼。他們利用AI工具為一個遺留的應用程序編寫了3000多個單元測試和1.5萬多行代碼,在幾個小時內就創建了一個完整的測試套件。與人工編寫測試每個平均耗時30分鐘相比,AI工具能以超過180倍的速度編寫測試。總的來說,銀行利用這項技術節省了一年多的開發時間。

微軟也曾開源Sketch2Code,利用人工智能輔助技術幫助設計師和工程師將手繪的用戶界面草圖轉換為可用的 HTML 代碼。設計師和工程師們在設計上達成一致意見後,會將草圖拍攝下來,然後手動將草圖翻譯成HTML代碼,這個翻譯過程耗時耗力,還會拖慢整個設計過程。因此,開發人員設想如果將白紙上手繪的這些設計草圖立即反映在瀏覽器中會怎樣呢?結果是設計師們在頭腦風暴結束後,立即可以擁有一個已經由設計師、開發人員甚至客戶驗證過的現成原型,這樣可以為網站和應用程序開發省去不少時間,因此也就有了Sketch2Code的誕生。

AI輔助開發比人工編寫代碼快180多倍,程序員是喜還是憂? 3

利用 Sketch2Code 將手繪草圖轉換成代碼的操作過程

Facebook 在這方面也不甘落後,早在去年公司就開發了一款名為 Getafix 的工具,可以自動查找出bug 的修復方案,並提供給工程師審批,這極大提高了工程師的工作效率和整體代碼質量Getafix不僅能夠為工程師提供直觀的修復方案,還能利用更強大的聚類算法,分析問題代碼的上下文找到更合適的修復方案。這款AI輔助bug修復軟件——Getafix已經被部署到擁有數十億用戶的Facebook的生產環境中,大大提升了應用程序的穩定性。

AI輔助開發比人工編寫代碼快180多倍,程序員是喜還是憂? 4

人工智能輔助開發未來可期

值得一提的是,目前人工智能輔助開發還停留在非常初級的階段,只能輔助開發人員編碼和進行自動測試,無法實現大規模工業化應用,複雜和高難度的編程還要依靠人類開發人員。但我們依然需要這樣的AI輔助技術幫助開發人員抗下那些基礎性的“粗活累活”,讓他們有更多時間和精力完成更加複雜的開發。

隨著人工智能技術的不斷進步以及成功應用在更多案例中,各個行業未來都將加大人工智能在軟件開發方面的投入。全球科技巨頭們躍躍欲試開源各種AI輔助開發工具,可見,他們想要在這項技術領域中分一杯羹的野心昭然若揭。為了在競爭中保持優勢並擴大規模,市場主體還需要將提高效率的新工具集成到開發過程中。與此同時,人工智能輔助軟件開發技術正在完成首次迭代更新,也讓我們初步了解了未來編碼技術將如何發展。

原文鏈接:

https://artificialintelligence-news.com/2019/11/25/opinion-ai-software-development-here/