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