程式設計師能被淘汰嗎? | Journal

banq發表於2022-11-25

一些工具或開發專案的目的是為了淘汰程式設計師。讓業務團隊控制系統的行為。
從商業管理的角度來看,這聽起來是個好主意。想想看,如果我們不需要僱傭程式設計師,也不需要浪費時間與他們溝通需求,就可以省下很多錢。在現實中,我從來沒有見過一個工具或專案在這方面取得成功。

幾年前,我作為承包商參與了一個這樣的專案。我們正在為一個大型企業客戶編寫一個呼叫中心應用程式。這個系統的架構師說服了客戶,業務分析員將能夠用一種高階商業語言(由架構師發明)來編寫,這樣未來的變化就不需要僱用程式設計師來修改系統。據稱,每一行商業指令碼都有20或30行低階程式碼的力量。因此,這承諾比取消程式設計師的效率還要高。

這種商業語言有類、建構函式、解構函式,以及幾乎所有現代物件導向語言的特徵。也許一開始它是一種簡化的語言,業務團隊可以使用,但它的複雜程度與我們為實現系統的其他部分而編寫的Java程式碼相同。沒有經過程式設計師培訓的業務分析員是不可能用這種語言寫出有效的程式碼的。

更糟糕的是,程式設計團隊在用這種語言編寫程式碼時也很費勁。沒有偵錯程式或其他工具,甚至沒有一個帶顏色編碼的編輯器。當你遇到錯誤時,你必須確定它是指令碼的錯誤還是直譯器的錯誤,而直譯器幾乎每天都在修改。

即使我們承認消除對程式設計師的需求是一個值得追求的目標,我也認為這是不可能的。

這是因為程式設計師除了擁有程式語言的知識外,還有其他的技能和能力。


無論這是由訓練還是天性決定的,我都說不清楚。可能是兩者都有吧。程式設計師擁有在我們的領域中取得成功所必需的技能,這些技能透過實踐得到了培養。不管怎麼說,我注意到程式設計師在許多方面往往比他們的非程式設計師同事更有能力。

程式設計師的思維更有邏輯性:
透過if-then-else條件工作是任何程式設計師的核心能力。當我和商業團隊一起做需求工作時,我經常遇到缺乏同樣能力的情況。

在一個開發抵押貸款分析專家系統的專案中,我經常收到關於如何處理具有特定貸款價值比或特定貸款金額的貸款的規則要求。通常,這些要求會有差距。我對從0美元到10萬美元的貸款有要求;對從15萬美元到25萬美元的貸款有要求;對超過25萬美元的貸款也有要求。但在10萬美元和15萬美元之間有一個漏洞。在其他時候,我對重疊的範圍有相互衝突的要求。

程式設計師具有分析問題和提出解決方案的卓越能力:
他們擅長分析先決條件、事件的順序和結果。當然,這是程式設計的一個關鍵技能,但它在故障排除和商業案例分析中也很有用。

程式設計師通常具有的另一個關鍵能力是在混亂中創造秩序的能力。我認為這是因為程式設計師要負責在程式中創造秩序。我們把系統分成子系統,把子系統分成模組,把模組分成單元。沒有任何物理約束規定了解決方案的結構。無論存在什麼秩序,都是由編寫程式碼的人創造的。反思我曾經工作過的一些程式碼庫,很明顯,這並不是所有程式設計師的普遍特徵。

雖然人們通常認為程式設計師是編碼員,他們的主要才能在於編寫程式語言的神秘語法。我認為,他們的主要才能在於他們分析、排除故障和解決問題的能力。程式碼只是將程式設計師的思維過程推向高潮的物理表現形式。

假設有人設法寫了一個工具,允許人們定義軟體並控制其行為,而不需要寫程式碼。使用這個工具的人仍然需要程式設計師的所有其他心理能力。如果這種情況發生,我們並沒有消滅程式設計師;我們只是稍微改變了工作描述。

是的,我可以設想在遙遠的未來,人工智慧被用來開發程式碼--但這也不會消除程式設計師;它只是將他們移植到一個不同的平臺。

Reddit網友評論:

"如果我們有一個功能強大的工具,只要你可以在工具中寫出你想要的規範,這個工具就會讓它們變成現實,怎麼樣?"
但是,業務人員真的很不擅長編寫規範。

“如何製作一壺咖啡”的重點不是製作一壺咖啡。而是寫出清晰、簡潔、正確的步驟:

  1. 喝咖啡
  2. 獲取過濾器
  3. 加水
  4. 點選按鈕開始


但是,對於新手,會疑惑:咖啡在哪裡?為什麼有兩種型別的過濾器?多少水?糖在哪裡?
程式設計師需要有某種型別的思維。人們忽視了。它看起來很基礎,直到你試著把它寫下來,突然間它比你想象的要冗長和困難得多。

大多數業務人員也懶得寫出他們已經知道如何規定的事情。

關鍵是:不是“每個人都不擅長規範”,而是“沒有人專注於提高規範技能”:
有很多方法可以改進規範,但企業很少關心。經理要求更多的程式設計師比在任何技術方面培訓經理更容易。

任何足夠完整的規範都可以轉換為程式語言並建立有效的程式?
如果不是因為存在人類需要對模稜兩可的情況做出決定,那麼編寫規範比編寫程式更容易,UML 是對此的嘗試,但由於所有相同的原因而失敗了——程式設計與檔案中的怪異符號無關,它與解決定義不明確、模糊和模稜兩可的問題的複雜邏輯有關。

有另一篇關於 AI 取代程式設計師工作的帖子,基本上是說 AI 將很難將業務需求轉化為能夠滿足業務需求的程式碼,因為人們很不擅長編寫需求。相比之下,人們非常擅長藝術,所以也許人工智慧更有可能開始創造“好的藝術”。
人工智慧之所以擅長藝術,是因為它不需要精確。一個非常酷的城市景觀可以有幾乎無窮無盡的變化,同時看起來相似。因此,任何具有一定複雜程度的東西都可以看起來很酷。

業務需求要求精確:您不能隨便吐出類似於可能模糊的輸入要求的隨機解決方案變體。您必須仔細考慮並迭代以解決特定問題,然後在看到上次迭代中沒有解決的問題時進行更多迭代。
AI 會實現這一目標,但現在它在產生類似人類的模式生成方面做得很好,但(具有諷刺意味的是)在人類邏輯和迭代系統方面做得很差。


 

相關文章