程序员的“黄金时代”,死去又重来?
作者丨 RHEA MOUTAFIS
譯者丨王者
策劃丨褚杏娟
“我認為過去幾十年的黃金時代已經過去了,那種當一名程序員就能找到工作的日子已經過去了。編程現在更像是會讀書能寫字。你必須具備這樣的能力。”硅谷技術布道者 Tim O'Reilly 如此評價軟件行業的未來。
偉大的經濟學家凱恩斯在 90 多年前曾預言:到 20 世紀末,人類將每周工作 15 個小時。但在 2021 年的今天,人們不僅沒有實現每周工作 15 個小時,甚至有時候一天就要工作 15 個小時。
按照著名人類學家大衛·格雷伯(David Graeber)“垃圾工作(Bullshit Job)”理論,大多數的軟件開發工作可能會被認為是“垃圾工作”。(垃圾工作指那些雖然紛紛涌現但并不一定都能為生活帶來太大價值的工作。)
無論你是否同意格雷伯的觀點,他確實提出了一個值得思考的觀點:隨著越來越多的流程自動化,大多數工作會在某個時間點過時。
據估計,目前的技術就可以將 45% 的工作自動化。隨著時間的推移,工作被完全自動化是非常有可能的。軟件開發領域的技術更新很快,甚至當軟件測試成為熱門話題后,自動化工具便開始興起,而這只是已經被自動化的眾多領域之一,也就是所謂的“垃圾”的部分(迭代且耗時)。
那么,開發人員是否會被自己構建的自動化工具而把自己淘汰了呢?如果越來越多的機器可以自己編寫代碼,還需要人類做什么?
1 程序員的思維比邏輯更重要
軟件開發人員的工作是構建邏輯鏈接、算法、程序、項目等,關鍵的是他們構建的是與邏輯相關的東西。隨著人工智能的興起,我們看到了范式的轉變。開發人員不再設計邏輯鏈接,相反,他們基于這些邏輯鏈接訓練模型。
很多開發人員已經從構建邏輯轉變為建立思想。換句話說,越來越多的軟件開發人員正在從事數據科學工作。
使用過 IDE 的人,肯定知道輔助軟件開發可以達到怎樣的驚人程度。一旦習慣了自動完成或語義代碼搜索等功能,就很難離開它們了。這是軟件開發自動化的第一層應用:當機器知道你要實現什么內容時,它們可以幫你完成整個過程。
第二層使用是封閉系統。比如一個社交 App 里包含很多不同但彼此相連的頁面,但它仍是封閉的,因為它不能直接與其他服務發生通信。盡管開發此類 App 的技術越來越容易,但還不能說這是真正的自動化。到目前為止,如果要創建動態頁面、使用變量、應用安全規則或集成數據庫等,仍然需要寫代碼。
第三層應用是集成系統。銀行的 API 就是這樣的一個系統,因為它是為與其他服務通信而構建的。但目前,對 ATM 集成、通信、深度安全性和復雜的故障排除問題進行自動化幾乎是不可能的。
自動化的三個應用層次。圖片由作者提供,改編自 Emil Wallner 在 InfoQ 的演講
2?人類做不到的很多事情,計算機做到了
人類不會認為自己會被機器人取代,這種想法同樣適用于軟件開發等領域。人們的理由很明確:創造力、同理心、協作或批判性思維等并不是計算機所擅長的。
通常,完成工作并不是最重要的。即使是最復雜的項目,也包含了很多可以被自動化的部分。DeepMind 的科學家 Richard S. Sutton 表示:
研究人員試圖利用已經掌握的領域知識,但從長遠來看,唯一重要的東西是利用計算的能力。
當然,人類的潛力無疑是驚人的。例如,很長一段時間以來,研究人員認為機器永遠無法識別出照片里的貓。但如今,一臺機器可以一次性對數十億張照片進行分類,并且比人類的準確性更高。雖然機器可能無法像人類一樣贊嘆可愛的小貓,但它在處理未定義的狀態方面確實非常出色。通過機器眼睛看到的小貓照片的能力即處理未定義的狀態。
除了處理未定義狀態外,還有兩件事情,計算機比人類做更有效率:一個是規模,另一個是研究新流形。
我們知道,計算機可以大規模地處理任務。比如,如果你要求計算機 print("I am a stupid") 200 次,它會毫無抱怨地照做,并在不到一秒的時間內完成任務。而一個人要需要幾個小時才能完成。
流形是指一種通過數學的方式來指代、共享某些屬性的空間子集。例如,紙是三維空間中的二維流形。如果你將紙張弄皺或將其折疊成紙飛機,它仍然是流形。
事實證明,計算機更擅長流形工作。計算機可以延伸到二十個維度或具有很多復雜的紐結和邊緣,而這對人類來說很難。由于很多日常問題(例如人類語言或計算機代碼)都可以表示成數學流形,因此在未來,計算機的這項功能有很大的潛力可以變成真正高效的產品。
我們正在研究第一和第二區域,但幾乎沒有觸及第三區域。圖片由作者提供,改編自 Emil Wallner 在 InfoQ 的演講
3?自動化工具威脅程序員工作?
開發人員似乎已經在使用很多自動化程序,但我們只是處于軟件自動化的輿論風口。迄今為止,自動化集成系統幾乎是不可能的,但其他領域已經在自動化。
代碼評審和調試可能很快會成為過去。DeepCode 公司正在開發一種可以自動識別錯誤的工具,谷歌的 DeepMind 已經可以為現有代碼推薦更優的解決方案,Facebook 的 Aroma 可以自動完成小型程序。
此外,機器推斷代碼相似性系統(簡稱 MISIM)聲稱能夠以與 Alexa 或 Siri 類似的方式(即理解人類語言)來理解計算機代碼。令人興奮的是,這樣的系統可以幫助開發人員自動化完成常見且耗時的任務,例如將代碼推送到云端或實現合規性流程。
目前為止,所有這些自動化在小型項目上都運作良好,但在較復雜的項目上卻毫無用處。例如,錯誤識別軟件仍會出現很多誤報,并且如果項目的目標跟以前有所變化,自動完成功能就無法正常工作。
由于 MISIM 出現的時間并不長,因此大家對于這種自動化仍然缺乏關注。但這只是開始,這些工具有望在將來變得更加強大。
這些自動化的某些早期應用還包括跟蹤人類活動。當然,這并不意味著它們是間諜軟件。相反,我們可以通過這個方式做一些優化,比如安排員工的工作時間或為學生定制課程等。
這本身就提供了巨大的經濟機會,因為學生可以更快地學習重要的東西,而工人可以在具有更高工作效率的時間里提供服務。
如果 MISIM 像它承諾的那么好,它也可以被用來重寫遺留代碼。例如,很多銀行和政府軟件都是用 COBOL 開發的,而如今很少人懂這門語言,如果將這些代碼轉換為新語言的代碼就更容易維護。
所有這些新應用都令人感到興奮。但這也是一把雙刃劍:如果你輸給了這些自動化技術會怎樣?如果開發人員因為它們而被淘汰了怎么辦?
4?研發人員應盡早參與項目
這雖然是自動化領域的兩個流行詞,但不管怎樣,它們很重要。
如果在產品發布之前沒有對軟件進行測試,就可能會損害用戶體驗或者在發布過程中遇到安全問題。經驗表明,自動化測試會覆蓋測試人員想不到的情況。
越來越多的團隊正在采用持續交付。當產品捆綁了大量的特性,即使只發布一個更新,比如每三個月發布一次,通常也要花上幾個月的時間來修復在這個過程中出現的問題。這種工作方式不僅極大地阻礙了快速開發,還損害了用戶體驗。
現在有很多用于測試的自動化軟件,還有用于持續交付的版本控制系統及框架。在大多數情況下,為這些自動化工具買單似乎比自己構建它們更好。畢竟,公司雇傭開發人員是用來構建新項目的,而不是執行乏味的自動化任務。
管理人員可以把自動化測試軟件當作一種投資,盡可能為開發人員提供支持,讓開發人員做他們真正擅長的事情。
通常,項目是由高層或與研發相近的團隊創建的,然后一直向下級傳遞直至開發團隊,開發團隊的任務就是實現這個項目。
但是,并非每個項目經理都是經驗豐富的軟件工程師,因此開發團隊可能可以實現項目的某些部分,其他部分則可能成本很高或幾乎不可能實現。
這種方法在過去可能是可行的,但隨著軟件開發中枯燥乏味的部分被自動化,開發人員有了越來越多的機會去做一些更有創造力的事情。
這是一個讓開發人員有機會盡早參與項目計劃階段的絕佳機會。他們不僅知道哪些東西可以實現、哪些東西實現不了,同時憑借他們的創造力,還可能以無法想象的先驗方式為公司帶來價值。
五年前,微軟首席執行官 Satya Nadella 曾宣稱,“所有業務都將變成軟件業務”。他是對的,不僅要讓開發人員升級,軟件的優先級也應該被提升。
疫情讓我們更清楚的知道,大部分生活和價值創造都發生在網絡上。軟件為王,軟件的自動化程度越高,這一點就越明顯。
5?擺脫對未知的恐懼
很久之前,不夸張地說,喜歡電腦的人被認為是不合群的孩子、書呆子、極客、不討人喜歡的生物,以及缺乏人類感情和激情的、像僵尸一樣的生物。然而隨著時間的推移,越來越多的人看到了開發者的另一面。程序員現在被視為能夠開發出很酷產品的聰明人。
軟件的自動化程度越高,開發人員的能力就越大。從這個意義上說,由于自動化而導致開發人員失去工作的擔憂是沒有根據的。
十年后,甚至幾個月后,開發人員可能在做一些我們現在無法想象的事情,但這并不意味著開發人員的工作消失了。相反,開發者的工作升級了。
程序員真正需要克服的恐懼不是可能會失去工作,而是擺脫對未知的恐懼。
開發者們,你們不會被時代拋棄,也不會成為敲代碼的機器。相反,你們將成為領導者。
原文鏈接:
https://thenextweb.com/syndication/2020/10/18/why-software-developers-might-be-obsolete-by-2030/
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的程序员的“黄金时代”,死去又重来?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ5102 POI2018Praw
- 下一篇: 有了这份程序员面试指南,你离大厂Offe