到 2030 年,軟件開發(fā)人員可能會被淘汰
編者按:軟件正在蠶食世界。軟件正在滲透到虛擬和現(xiàn)實(shí)世界的一切——甚至包括軟件世界本身。是的,越來越多的軟件工作正在被自動化,自動化測試、自動化編程。著不僅讓人擔(dān)心,軟件到頭來會不會蠶食掉軟件開發(fā)者的崗位呢?從某種意義上來說,是的。但從另一種意義來說,不是。且看看Rhea Moutafis的分析。原文發(fā)表在Medium上,標(biāo)題是Software developers might be obsolete by 2030。

軟件開發(fā)是狗屁工作嗎?我不這么認(rèn)為。
劃重點(diǎn):
隨著越來越多的流程被自動化,軟件開發(fā)的很多工作大概會變成狗屁工作
軟件自動化的三個層面:1)輔助軟件開發(fā) 2)封閉系統(tǒng)的自動化 3)集成系統(tǒng)的自動化
人類的確有很多機(jī)器不擅長的特質(zhì),但是軟件開發(fā)不是光靠這些
計(jì)算機(jī)很擅長流形的處理和規(guī)?;?/span>
“從長遠(yuǎn)來看,唯一重要的是對計(jì)算的利用”
軟件開發(fā)人員這個職業(yè)在很長一段時間內(nèi)依然令人興奮
開發(fā)者要向管理的方向轉(zhuǎn)移,從極客變成領(lǐng)袖
將來所有的企業(yè)都會變成軟件企業(yè),需要把軟件放在優(yōu)先的位置
1930年,約翰·梅德·凱恩斯(John Maynard Keynes)曾做出預(yù)測,到那個世紀(jì)末,我們每周將只需要工作15小時。但是時間一直拖到了2013年,結(jié)果證明這位偉大的經(jīng)濟(jì)學(xué)家顯然搞錯了。
歡迎來到狗屁工作(Bullshit Jobs)時代,這個詞是人類學(xué)家大衛(wèi)·格雷伯(David Graeber)(編者注:《狗屁工作》的作者)的發(fā)明。自1930年代以來,全新的產(chǎn)業(yè)如同雨后春筍般地出現(xiàn),但那些行業(yè)未必能為我們的生活增添太多的價值。Graeber大概會把軟件開發(fā)里面大多數(shù)的工作稱為狗屁工作。
我不同意格雷伯的想法,尤其是在軟件方面。但是他確實(shí)提出了一個有趣的觀點(diǎn):隨著越來越多的流程被自動化,大多數(shù)工作到了一定時候也許都會被淘汰。根據(jù)一項(xiàng)估計(jì),利用當(dāng)前技術(shù)可以讓45%的工作自動化。而隨著時間的流逝,情況也許會是這樣的。
在發(fā)展日新月異的軟件開發(fā)行業(yè),你可以親眼目睹這種情況:一旦軟件測試成為熱門話題后,自動化工具便開始興起。而這只是眾多領(lǐng)域的其中一員——我是指軟件當(dāng)中那些狗屁工作,那些重復(fù)性的耗時的工作都會被自動化掉。
不過,這會引出一個問題,那就是開發(fā)人員開發(fā)自動化工具是不是自掘墳?zāi)?,把自己給淘汰掉了。如果越來越多的機(jī)器可以自己編寫代碼的話,那還需要人類干什么?
從設(shè)計(jì)邏輯到設(shè)計(jì)思想
軟件開發(fā)人員本質(zhì)上是建設(shè)者。他們開發(fā)邏輯鏈接,算法,程序,項(xiàng)目等。關(guān)鍵是:他們開發(fā)具有邏輯性的東西。
不過,隨著人工智能的興起,我們看到了范式正在轉(zhuǎn)移。開發(fā)人員不再設(shè)計(jì)邏輯鏈接。相反,他們正在根據(jù)這些邏輯鏈接的啟發(fā)去訓(xùn)練模型。
許多開發(fā)人員已經(jīng)從構(gòu)建邏輯轉(zhuǎn)變?yōu)殚_發(fā)思想。換句話說,越來越多的軟件開發(fā)人員正在從事數(shù)據(jù)科學(xué)家的活動。
自動化的三個層面
如果你曾經(jīng)用過IDE的話,你應(yīng)該知道輔助軟件開發(fā)已經(jīng)發(fā)展到什么程度。一旦用慣了自動補(bǔ)充完成或語義代碼搜索之類的功能,你就再也離不開這些。
這是軟件開發(fā)自動化進(jìn)軍的第一個領(lǐng)域。當(dāng)機(jī)器知道了你想實(shí)現(xiàn)的目標(biāo)時,它們就可以幫助你完成相關(guān)過程。
第二個領(lǐng)域是封閉系統(tǒng)。不妨想想社交媒體app是什么樣的:里面包含了眾多彼此鏈接在一起的不同頁面。但是,由于在設(shè)計(jì)上它不能直接跟其他的服務(wù)通信,所以屬于封閉系統(tǒng)。
盡管用于開發(fā)此類app的技術(shù)變得越來越易于使用,但我們還不能說實(shí)現(xiàn)了真正的自動化。到目前為止,如果想要創(chuàng)建動態(tài)頁面,使用變量,應(yīng)用安全規(guī)則或集成數(shù)據(jù)庫,你還是需要編碼。
第三個,也是最后一個領(lǐng)域是集成系統(tǒng)。比方說,銀行API就是這樣的系統(tǒng),因?yàn)樗菫榱烁渌姆?wù)通信而開發(fā)的。不過,目前想實(shí)現(xiàn)自動化的ATM集成、通信、對世界建模、深度安全性以及進(jìn)行復(fù)雜的故障排除幾乎是不可能的。
隨著時間的推移,這三個領(lǐng)域都取得了不同程度的發(fā)展。如今,前兩個領(lǐng)域已實(shí)現(xiàn)了自動化,不過第三個領(lǐng)域還沒有實(shí)現(xiàn)自動化。
隨著時間的推移,這三個領(lǐng)域都取得了不同程度的發(fā)展。如今,前兩個領(lǐng)域已實(shí)現(xiàn)了自動化,不過第三個領(lǐng)域還沒有實(shí)現(xiàn)自動化。

自動化的三個領(lǐng)域。軟件開發(fā)這條路坎坷不平,未來何時到來真的無從知曉。
計(jì)算機(jī)眼里的世界
在被問到將來自己會不會被機(jī)器人所取代時,人類的打工人通常不會這么認(rèn)為。這一點(diǎn)同樣適用于軟件開發(fā)等許多其他領(lǐng)域。
他們的理由很明確:創(chuàng)造力,同理心,協(xié)作,或者批判性思維,這些特質(zhì)不是計(jì)算機(jī)的擅長。
但是對于把工作完成來說,這些東西通常不是關(guān)鍵。哪怕是最復(fù)雜的項(xiàng)目,也會包含有很多可以自動化的一小部分。就像DeepMind科學(xué)家理查德·S·薩頓(Richard S. Sutton)所說那樣:
“研究人員尋求利用自身掌握的本領(lǐng)域的人類知識,但是從長遠(yuǎn)來看,唯一重要的是對計(jì)算的利用?!?br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">
不要誤會我的意思。人的素質(zhì)還是非常出色的。但是,就常規(guī)任務(wù)而言,我們一直高估了這些問題的重要性。比方說,很長一段時間以來,甚至連研究人員都認(rèn)為機(jī)器永遠(yuǎn)也沒法識別出照片上面的那些貓。
現(xiàn)如今,一臺機(jī)器可以一次性地對數(shù)十億張照片進(jìn)行分類,并且準(zhǔn)確性比人類還要高。雖然機(jī)器也許欣賞不了小貓的可愛,但它在處理未定義狀態(tài)方面非常出色。這是的,就是機(jī)器眼中小貓照片的狀態(tài):未定義的狀態(tài)。
向新流形和規(guī)?;~進(jìn)
除了處理未定義狀態(tài)以外,還有兩件事情計(jì)算機(jī)執(zhí)行要比人類更高效:首先是規(guī)模化的處理。其次是對新穎流形的處理。
我們都體會過計(jì)算機(jī)規(guī)模處理的效果如何。比方說,如果你要求計(jì)算機(jī)執(zhí)行 print(” I am so stupid”) 200次,它會毫無怨言地把你的抱怨打印200次,而且不到一秒鐘就能把這件事兒干完。如果你讓人去辦,你需要等幾個小時才能完成……
流形基本上代指的是分享一組特定屬性的空間子集(局部具有歐幾里得空間性質(zhì)的空間),是一種用數(shù)學(xué)表示的復(fù)雜形式。比方說,如果你拿出一張紙,那它就是在三維空間里面的二維流形。如果把紙張弄皺,或者把它折疊到平面上,它仍然是流形。
事實(shí)證明,計(jì)算機(jī)確實(shí)很擅長處理人類難以可視化的流形,比方說,因?yàn)樗鼈兛梢匝由斓?0維,或具有大量復(fù)雜的彎折和邊。由于很多的日常問題(比方說人類的語言或計(jì)算機(jī)代碼)都可以用數(shù)學(xué)流形表示,所以未來有很大的潛力可以部署真正有效的產(chǎn)品。

新穎流形與可伸縮性的圖示。自動化的區(qū)域位于左下角。
關(guān)于計(jì)算機(jī)可伸縮性以及對新穎流形的探索我們目前所處的位置。我們目前正在研究區(qū)域一和區(qū)域二,但區(qū)域三幾乎還沒有觸及。
現(xiàn)狀目前的進(jìn)展
似乎開發(fā)人員已經(jīng)在運(yùn)用了很多的自動化。不過這只是因?yàn)槲覀冋锰幱谲浖詣踊娘L(fēng)口浪尖而已。到目前為止,對集成系統(tǒng)進(jìn)行自動化幾乎是不可能的。但是其他領(lǐng)域已經(jīng)在自動化。
一方面,代碼評審和調(diào)試可能很快就會變成過去的遺跡。瑞士公司DeepCode正在開發(fā)一種用于自動識別錯誤的工具。Google的DeepMind已經(jīng)可以針對原有代碼推薦更優(yōu)雅的解決方案。Facebook的Aroma可以自行自動完成小型的程序。
此外,機(jī)器推斷代碼相似性系統(tǒng)(Machine Inferred Code Similarity System,簡稱MISIM)據(jù)說可以像Alexa或Siri能理解人類語言那樣去理解計(jì)算機(jī)代碼。有一點(diǎn)令人興奮,那就是這樣的系統(tǒng)可以讓開發(fā)人員把常見且耗時的任務(wù)自動化掉,比方說把代碼推送到云端或者實(shí)施合規(guī)性流程。
令人興奮的曙光
到目前為止,所有這些自動化在用到小型項(xiàng)目上的時候都可以很好地工作,但在面對較復(fù)雜的項(xiàng)目時卻基本不管用。比方說,錯誤識別軟件仍然會返回很多的誤報(bào),而且如果項(xiàng)目有一個非常新穎的目標(biāo)的話,自動完成功能就不起作用了。
由于MISIM出現(xiàn)的時間還不長,所以對這種自動化下定論還為時尚早。不過,需要牢記的是,這只是開始,而且這些工具有望在將來變得越來越強(qiáng)大。
即將推出的應(yīng)用
這些新型的自動化會有一批早期應(yīng)用。其中可能包括對人類活動的跟蹤。當(dāng)然,這并不意味著那就是間諜軟件。相反,類似安排工人的工作時間或者給學(xué)生定制課程之類的事情可以通過這種方式來予以優(yōu)化。
這本身就是一個巨大的經(jīng)濟(jì)機(jī)會,因?yàn)閷W(xué)生可以更快地學(xué)習(xí)到重要的東西,而工人可以在他們正好更有效率的時間干活。
如果MISIM的表現(xiàn)就像它的承諾一樣好的話,那也可以用來重寫遺留代碼。比方說,很多銀行和政府軟件都是用COBOL編寫的,這種股東語言學(xué)校今天幾乎已經(jīng)不教了。把這些代碼轉(zhuǎn)換成更新的語言也會讓維護(hù)變得更加容易。
軟件開發(fā)人員這個職業(yè)在很長一段時間內(nèi)依然令人興奮。
開發(fā)人員和公司如何才能立于不敗之地
所有這些新應(yīng)用的確令人興奮。但在它們的頭上,一把達(dá)摩克利斯之劍正在鑄就:如果競爭對手在你趕上前就利用了這些自動化技術(shù)的話,該怎么辦?如果它們導(dǎo)致開發(fā)人員變得完全過時了,又該怎么辦?
要對持續(xù)交付和自動化測試進(jìn)行投資
這無疑是自動化世界里面的兩個熱詞。但是不管怎樣,這兩個東西仍然很重要。
如果你不對軟件進(jìn)行測試就發(fā)布出去的話,可能會損害用戶體驗(yàn),或者在將來遇到安全問題。經(jīng)驗(yàn)表明,自動化測試能夠涵蓋測試人員甚至都沒有想到但是卻可能非常關(guān)鍵的用例。
也有越來越多的團(tuán)隊(duì)加入到持續(xù)交付的實(shí)踐,這是有充分的理由的。當(dāng)你捆綁了很多的功能,而卻要每三個月才發(fā)布一次更新的話,在接下來的幾個月的時間往往就得用來修復(fù)在此過程中出現(xiàn)的所有問題。這種做法不僅阻礙了軟件的快速開發(fā),而且還損害了用戶體驗(yàn)。
測試有大量的自動化軟件,而持續(xù)交付有版本控制(以及眾多的其他框架)。在大多數(shù)情況下,購買這些自動化解決方案似乎要比自己開發(fā)更好些。畢竟,你的開發(fā)人員招進(jìn)來是要開發(fā)新項(xiàng)目的,不是把無聊的任務(wù)自動化掉。
如果你是經(jīng)理,要把買這些東西當(dāng)作是一筆投資。這樣以來,你就可以為開發(fā)人員提供最好的支持,因?yàn)槟憧梢宰屗麄儼l(fā)揮自己真正擅長的東西。
向左移:讓開發(fā)者參與到每一個項(xiàng)目的早期階段
項(xiàng)目一般是高層或者接近研發(fā)團(tuán)隊(duì)的某個地方創(chuàng)建,然后再層層傳遞到開發(fā)團(tuán)隊(duì)的,到了這個時候開發(fā)團(tuán)隊(duì)采取負(fù)責(zé)把這個項(xiàng)目的想法變成現(xiàn)實(shí)。
但是,由于并不是每一位項(xiàng)目經(jīng)理都是經(jīng)驗(yàn)豐富的軟件工程師,所以項(xiàng)目一部分可能是由開發(fā)團(tuán)隊(duì)實(shí)施,而有的要么是成本太高,要么就是幾乎不可能由自己實(shí)現(xiàn)的。
在過去,這種做法有它的合理性。但是,鑒于軟件開發(fā)大量單調(diào)乏味的部分被自動化,開發(fā)人員將有機(jī)會變得越來越有創(chuàng)造性。
這是一個讓開發(fā)者抽身出去的極好機(jī)會,那就是讓他們參與到項(xiàng)目的計(jì)劃階段。這不僅是因?yàn)樗麄冎滥男┛梢詫?shí)現(xiàn),哪些不能。而且憑借他們的創(chuàng)造力,他們可能會以你想象不到的方式為項(xiàng)目增加價值。
把軟件放在首位
現(xiàn)在距里微軟的薩蒂亞·納德拉(Satya Nadella)宣布“每一家企業(yè)都會變成軟件企業(yè)”已經(jīng)過去了五年。結(jié)果證明,他是對的。
開發(fā)人員不僅應(yīng)該向管理的方向左傾。軟件的優(yōu)先地位也應(yīng)該提升。
如果說當(dāng)前的這場疫情能讓你學(xué)到些什么的話,那就是現(xiàn)在很多的生活以及價值創(chuàng)造都發(fā)生在網(wǎng)上。
軟件為王。但自相矛盾的是,自動化的程度越高,這一點(diǎn)就越明顯。
自動化讓軟件極客變成領(lǐng)袖。
總結(jié):極客正在變成領(lǐng)袖
我上學(xué)那時候,喜歡計(jì)算機(jī)的人王婉被認(rèn)為是不善交際的孩子,是書呆子,怪胎,跟大家不一樣的生物,是缺乏人類情感和激情的,像僵尸一樣的動物。其實(shí)真希望我這是在夸大其詞。
不過,時間越久,就會有越多的人看到開發(fā)人員的另一面。寫代碼的不再被看作是書呆子,而是可以做出很酷的東西的聰明人。
自動化程度越高,軟件的獲得的權(quán)力就越大。從這個意義上來說,你對開發(fā)者由于自動化而失去工作的擔(dān)心是沒有根據(jù)的。
當(dāng)然,在十年之內(nèi)——甚至在幾個月內(nèi)——你也許就要做你現(xiàn)在甚至無法想象的事情了。但這并不意味著你的工作將會消失。不會的,相反,它會升級。
你真正需要克服的恐懼并不是你可能會失業(yè)。你需要擺脫的是對未知的恐懼。
開發(fā)者們,你不會被淘汰。你只是再也不會是書呆子了。相反,你會成為領(lǐng)導(dǎo)者。
版權(quán)申明:內(nèi)容來源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無法確認(rèn),我們都會標(biāo)明作者及出處,如有侵權(quán)煩請告知,我們會立即刪除并表示歉意。謝謝!

