前兩天,幾位互聯網大佬聊人工智能(AI)上了熱搜,一些觀點比較犀利,在軟件行業掀起了大範圍的熱議,其中一大熱點是:“程序員”這個職業會不會存在?去年就有驚人的觀點:谷歌工程主管:程序员的职业生涯将在 3 年内被AIGC终结
其實,我5年前就寫過一篇文章:未來兩年:人機結對編程(MMPP)將成爲現實。当时,我过于乐观,但也不算乐观:2020年北京大學推出了aiXCoder 2.0(版本到了2.0,说明産品相对成熟了,其工作始于2013年),可以完成代碼補全、代碼評審等,開始實現人機結對編程。
今天的大語言模型(LLM)是一個概率模型、一個不確定模型,我甚至說過(見:軟件工程3.0實踐之路(一)最後一段):因爲LLM的不確定性,有幻覺/幻想,倒是不適合做編程助手,更適合幫我們在一些不確定事務(股票投資、風險管理等)上做決策、可以獲得最大的贏率。LLM也更适合参与我们的头脑风暴活动、文化创意、设计等活动,这时幻觉/幻象成了优点、有创造性,例如挖掘用户的需求、应用场景、海报生成、視頻创作、音乐创作等。
今天,我们确实越来越多地将LLM应用于代码补全、代码生成、代码理解、代码解释等工作中(見:軟件工程3.0實踐之路(六):LLM驅動編程,銀彈快來了嗎?),它也可以生成單元測試腳本、測試用例。但所有生成的結果都不能直接采用,需要人工review。如果你的能力弱,就無法判定結果對與錯,review的效果就不理想。如果你只懂英文和中文,而不懂計算機編程語言,那根本無法review。對,像其他同學說的,你還要懂操作系統、懂數據庫、懂通信協議、懂架構、懂算法和數據結構......這些都是軟件開發的基礎。
但是否有可能:生成的代碼不需要人工review呢?在某些情況下也是有可能的,我的設想是:
- 事先分別構建獨立的開發LLM(更多是代碼正例)、測試LLM(語料更多是反例,如缺陷報告、測試腳本、測試運行日志等)、業務/需求LLM等。
- 讓LLM幫我們實現BDD那樣的需求(GWT格式,即需求足夠明確),這個過程還是人機交互的,需要業務需求專家確認結果,確保結果是正確的(相對的,不是絕對的)。
- 從基于BDD的需求出發,开发LLM生成産品代码,測試LLM生成測試代碼,兩者獨立工作,相互博弈、相互驗證(類似AlphaZero,之前也有微軟的論文做了局部驗證)。這種情況下,幾乎不需要人工參與(但很有可能是少量參與),讓LLM相互驗證,確保結果運行正確、通過測試。
- 业务/需求LLM 会参与全过程来验证,包括针对运行的程序进行验证。
- 谷歌廣告中,開始集成進大量的生成式AI功能。
- 谷歌的聊天机器人,可以帮人们浏览大量的广告産品。
- 谷歌的某AI系統,可以根據廣告購買者給出的預算和目標,自行制作圖像和文本。
- 過去,提供銷售指導、創建藝術資産、決定文本和布局這些工作都是人類做的,但是現在,AI完成起這類任務可以每秒做一千次。
不过,面对AI的冲击,绝大多数(70%)的开发者认为,AI辅助工具能够幫助他们更好地完成工作。尤其是在以下這幾個方面:
- 編程輔助、代碼自動補全與生成,例如用ChatGPT、GitHub Copilot、CodeArts Snap等。
- 學習與答疑,不懂的問題找大模型。
- 文檔潤色和生成,需求文檔潤色、個人總結和測試報告生成等。
在這之中,有大約67%的開發者表示,自己已經將AI作爲工作的一部分了。所以,我們可能會說,你的能力越強越安全,同時,你必須擁抱AI、擁抱LLM,不會用AI/LLM工具的人會被熟練使用AI/LLM工具的同行所淘汰。
- 根據國內招聘網站統計數據(以下相同)顯示,機器視覺的薪資差距最大——達到了62.44%。其中,要求AIGC技能的機器視覺招聘平均年薪爲48.45萬,而無此要求只有29.83萬元。
- 售前技術支持、大客戶銷售和平面設計這三個職位,是否具有AIGC技能也將帶來超過50%的薪資差異。
- 對于企業來說,在同等條件下,有57.04%會優先考慮那些具備AIGC技能的候選人。
- 被開聊次數最多的是注明具有AIGC技能的算法工程師,高達15.72次,比未注明的同等職能多6.21次。
- 從行業分布來看,新發職位主要集中于互聯網、計算機軟件、人工智能三大行業,占比爲29.65%、12.7%、9.96%。好消息是:說明互聯網/軟件職位在增長,軟件定義世界、數字化轉型,會帶來更多的互聯網/軟件職位。
鉴于此,我们要尽早着手學习使用AIGC工具,从而增强自己的职场竞争力和求职议价权。
原文作者:Test Ninja