傳統(tǒng)的程序員將會被淘汰
要成為當(dāng)今軟件開發(fā)中受人尊敬的專業(yè)人士,你需要掌握各種技能,而且達(dá)到高水平的專業(yè)級別。最起碼,你需要能夠把你的英語解決方案翻譯成軟件實現(xiàn)。 不僅技術(shù)上要正確,在業(yè)務(wù)上也得可行。因此,對業(yè)務(wù)有一個深刻的理解總是沒有壞處的。這使得你可以有效地收集和談判客戶的需求,并確保軟件能夠經(jīng)過時間的 考驗。企業(yè)希望軟件是一個長期的投資,能夠在幾年甚至幾十年之后依然物盡其用。很少有希望軟件只存活幾個星期的。如果真的有,那可真是一個糟糕的投資。
對軟件開發(fā)的熟練要求放寬了
在美國,對軟件開發(fā)人員的需求一直在增長,但對技能熟練程度的要求卻在降低。計算機編程退步到了尋找正確的軟件庫然后將它們串接起來得程度。那么你 如何解釋軟件或平臺作為服務(wù)的迅速崛起?是的,有時你是需要弄清楚哪些組件裝配在一起才最適合你的特定問題,而且,當(dāng)找不到這樣的組件時,你必須自己動手 創(chuàng)建。但是,現(xiàn)在的問題是,很多時候,該軟件已經(jīng)存在。在這種情況下,你的工作就是無聊重復(fù)的順序:選擇庫,聯(lián)合庫,按照需求測試。
但是先等等!你可能會認(rèn)為,編程還囊括了很多合同規(guī)定的內(nèi)容。當(dāng)然,我們可以構(gòu)建一個已經(jīng)構(gòu)建過的結(jié)構(gòu),但它們還需要個性化,才能適應(yīng)特定的業(yè)務(wù)需 求。這無疑需要一定程度技術(shù)和智慧的,對吧?而對于這種說法,我承認(rèn)。是的,業(yè)務(wù)需求常常是非常多樣和特殊的,然而現(xiàn)在卻在開始漸漸地變得大同小異。
因此,選擇組件來滿足業(yè)務(wù)需求成為了自動化的主要目標(biāo)。既然有這么多潛在的組合,那么那些永遠(yuǎn)不需要睡覺、吃飯和休息的員工才是最完美的員工。人工輔助軟件開發(fā)的時代正在到來。也就是說,計算機將執(zhí)行大部分的開發(fā)步驟,而人類只需要協(xié)助它們即可。
在這個新的時代,人工智能研究人員和測試人員將占據(jù)統(tǒng)治地位。人工智能研究人員負(fù)責(zé)想出大致的思路。他們將確定需要解決哪些問題,即通過給定的輸入 描述期望的輸出。然后,測試人員編寫斷言這個問題確實被解決的測試。也就是說,驗證正確的輸出是由給定的輸入確定的。此時的計算機負(fù)責(zé)將給定的輸入轉(zhuǎn)換為 所需的輸出。
遺傳編程
你可能會覺得自動化的軟件開發(fā)是一個奇思妙想,甚至覺得這是不可能的。但是遺傳編程告訴我們nothing is impossible。軟件會產(chǎn)生變異,改變它們的指令,努力順利發(fā)展以變得更適合。在每個突變后,它們將自行評估它們是否正趨向于期望的輸出。這里對于 合適的評估是由測試提供的。而且是大量的測試。這些測試都封裝了經(jīng)過時間、空間和功能性制約的業(yè)務(wù)邏輯。突變越合適,通過的測試越多。這是值得重申的是, 我們不應(yīng)該關(guān)心生成實現(xiàn)的細(xì)節(jié)。事實上,生成多個符合要求的解決方案是完全合理的。要減少解決方案只需要增加更多限制問題就可以了。
軟件開發(fā)人員的傳統(tǒng)角色將會被淘汰。他們很快會被重新定位到設(shè)計、開發(fā)和維護(hù)測試。即,計算機的程序設(shè)計將變得不必要,因為它們自己就能編程。這種 范式將對軟件行業(yè)產(chǎn)生翻天覆地的影響。改變業(yè)務(wù)需求,直接改變測試,而這會觸發(fā)軟件自動化的進(jìn)化。修改現(xiàn)有代碼,以滿足新興需求的壓力將一去不復(fù)返。計算 機會做好這件事:因為它不會有重新開始的顧慮。它也不關(guān)心可維護(hù)性,并且最后一定更兼容不斷變化的業(yè)務(wù)需求。
說了這么多,我決定把將來的重心放到測試上,以應(yīng)對將來軟件行業(yè)的變化。那么,你呢?
譯文鏈接:http://www.codeceo.com/article/programmer-become-obsolete.html
英文原文:Software Developers Will Become Obsolete