80歲都無法退休的COBOL程式設計師:他們非要扶我起來遷移老系統

2020-12-14 InfoQ技術實驗室

上古程式語言COBOL火遍全球,但我建議你不要學。

COVID-19疫情的蔓延,讓美國10%的勞動力失業,人數達到了1700萬。但美國至少有12個州的失業救濟系統運行在已經有60年歷史、使用COBOL程式語言的大型機上。這迫使政府機構出手爭搶平均年齡已達60歲的COBOL程式設計師為他們解決各種系統故障。

不僅僅是政府機構,當下全球財富五百強企業的系統當中有90%都運行在COBOL基礎之上,這些系統構建於幾十年前,如今已經很難找到關於其設計思路的說明文檔,因此政府機構及企業只能依賴長期在職的程式設計師們回憶這些具體細節。這些系統的代碼編寫方式陳舊,沒有模塊化的概念,像「義大利麵條」一樣交織在一起,牽一髮而動全身,極難維護。

現在很多COBOL職位的招聘要求擁有20年工作經驗,但開出的年薪卻只有35000美元。年輕人也不願意學這種複雜的過時語言,這就意味著這些已經60歲高齡的COBOL程式設計師至少還需要在未來一二十年裡繼續維護這些老系統。

COBOL:60歲的激進程式語言

COBOL的發明人Grace Hopper絕對是個現象級的人物。她擁有耶魯大學數學博士學位、在瓦薩大學擔任教授,並曾出任美國海軍少將職務。她對整個計算領域的貢獻,單從專為紀念她而命名的項目數量就可見一斑。國家能源研究科學計算中心以她命名Cray XE6超級計算機,海軍當中也有一艘「Hopper號」飛彈驅逐艦——該艦的座右銘是「Aude et Effice(敢想敢為)」,很可能正是Hopper本人的生活準則。

Hopper致力於在計算機能夠理解的範圍之內,開發出一種更接近英語表達的程式語言;此外,她還開發出了世界上第一款編譯器。這也為FLOW-MATIC等一大批早期編譯語言打開了大門。這些貢獻,讓她在1959年的數據系統語言大會(CODASYL)上獲得了一個寶貴的席位。當然,她還協助制定並開發出了面向公共業務的COBOL語言。在1959年6月23日的首次CODASYL會議之後,她很快於次年4月發布了COBOL語言及編程規範。

COBOL當中包含著一系列突破性概念。可以說,該語言最重要的特性就是能夠運行在不同製造商生產的硬體之上——在當時,這是一種前所未有的重要特性。COBOL語言經過精心設計,允許程式設計師使用與英語相近的詞彙表達,能夠處理大量數據並擁有極高的數學運算精度。

COBOL語言的保留字(構成該語言的可用字)總詞彙量接近400條。程式設計師可以將這些字串連起來,建立起語法意義,進而開發出完整程序。任何熟悉其他語言的程式設計師朋友,都會馬上意識到COBOL的保留字確實相當豐富。相比之下,C語言只有32個保留字,Python語言則為33個。

COBOL的另一大特性,在於其嚴格要求開發者將某些程序行放置在特定行當中。沒辦法,這是打孔卡時代遺留下來的問題。如今,程式設計師在COBOL編寫格式方面擁有更大的自由空間,也不必再用大寫字母輸入所有內容了。為了體驗COBOL的最初面貌,下面一起來看這段代碼示例:

IDENTIFICATION DIVISION. PROGRAM-ID. Hello-World. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. MAIN-PROCEDURE. DISPLAY "Hello world, from How-To Geek!" STOP RUN. END PROGRAM Hello-World.

蓬勃發展幾十年,如今卻無法遷移和升級

雖然用今天的眼光看,COBOL的設計已經非常笨拙,但在剛誕生的時候,這絕對是一種革命性的程式語言。COBOL在金融部門、聯邦政府以及大型企業/機構中備受青睞。究其原因,出色的可擴展性、批處理功能以及數學精度成為COBOL的致勝之道。它被廣泛安裝在世界各地的大型機中,長久紮根並蓬勃發展。如同頑固的雜草,COBOL似乎永遠無法被徹底消滅。

那麼,當下到底有多少系統仍然運行在COBOL之上?結果絕對令人驚訝。根據路透社2017年發布的報告,我們看到了以下令人瞠目結舌的統計數據:

目前,全球仍有2200億行COBOL代碼被持續使用。COBOL在全部銀行系統基礎設施中佔據43%。COBOL支持的系統每天處理3萬億美元的商業交易。COBOL處理著95%的ATM機刷卡業務。COBOL支撐著高達80%的店面信用卡交易操作。如大家所見,如果COBOL及相關系統突然消失,人類社會很可能會瞬間崩潰。銀行帳戶與支票清算服務,外加面向公眾的各類基礎設施(包括ATM機與交通信號燈)仍在使用幾十年前編寫的COBOL代碼。

這類陳舊系統的升級之路絕不像聽起來這麼簡單。因為此類系統往往扮演著極為重要的角色,意味著各分支機構、金融、政府乃至整個商業世界都在24/7全天候依賴於這些系統。另外,其中的COBOL代碼老舊、分層而且往往極度缺少說明文檔。再加上升級過程不能破壞系統的正常運行,導致整個過程就像是在正在前進的飛機上拆下螺旋槳、然後換個噴氣發動機上去。

那些遷移失敗的案例...

去年,美國政府問責辦公室曾在報告中26次提到COBOL,並敦促各機構對核心陳舊技術進行現代化升級。HP Marin Group首席技術官Phil Teplitzky表示,目前仍在使用的COBOL代碼數量超過2400億行,它們的存在完全是為了支撐企業繼續使用早已陳舊不堪的計算系統。

這些系統構建於幾十年前,如今已經鮮有關於其設計思路的說明文檔,因此政府機構及企業只能依賴長期在職的程式設計師們回憶這些具體細節。Teplitzky將其稱為COBOL「民俗學」。更可怕的是,很多專家已經去世,而在救市法案要求對這些系統的代碼做出重大修改時,在職人員往往感到無從下手。

COBOL代碼的陳舊編寫方式,同樣給更新帶來了挑戰。現代計算語言會將程序拆分成多個塊,每個塊擁有明確且特定的用途。COBOL程式設計師則往往將所有內容編織在一起,意味著對其中任意部分的代碼做出變更,都有可能影響或損壞程序的其他部分。這種現象被稱為「意面代碼」,彼此纏繞的狀態令代碼修改比學習程式語言本身難上十倍甚至百倍。

除了風險,遷移至現代系統的方案還存在不少經濟障礙。維持這類大型機與COBOL程序的正常運轉需要花費驚人的成本,考慮到代碼本身仍能正常運行,各機構真的有必要放棄一切、重新開始嗎?決策者很難做出這樣的判斷。

希爾斯伯勒縣學區的學生信息系統就是基於COBOL構建的。該系統最初安裝於1984年的IBM大型計算機中,由14名COBOL程式設計師和大型機操作員負責維護,每年維護花費150萬美元。與其他大型學區相比,該學區的學生需要在這種又老又笨重的大型臺式機組成的計算機實驗室中學習,而不是在配備較小平板電腦的教室中。他們不得不進行升級,希望能將該系統從COBOL遷移到Java。「但他們花了四年,仍然沒有完成。」他們的顧問COBOL Cowboys公司的Hinshaw表示。

澳大利亞聯邦銀行曾在2012年藉助埃森哲和SAP替換了其核心COBOL平臺。這個項目十分複雜,不同時代的老系統緊密交織在一起,一旦失敗,成千上萬客戶的帳戶數據就會消失。轉換成功前後花去五年時間,最終成本為7.499億美元(約合10億澳元)。

這還是一切按計劃進行的結果。再來看另一例,英國銀行TSB在2018年被迫進行了一輪COBOL系統遷移,由於執行不力,導致整個銀行的正常交易中斷數日,最終遷移成本為3.3億英鎊——這還不包括實際遷移產生的工程費用。此外,TSB在系統崩潰期間還因財務欺詐損失了4910萬英鎊。

客戶賠償總額更高達1.25億英鎊,TSB方面還被迫投入1.22億英鎊僱用新員工以處理多達204000例客戶投訴案。執行長因此引咎辭職,到事件兩年後的今天,TSB仍沒能徹底走出這片陰影。

「真心不推薦你學習COBOL!」

大多數COBOL代碼都運行在大型機上,而這些計算設備出自IBM之手。多年以來,IBM公司一直在努力幫助客戶物色COBOL技術專家,並說服年輕人繼承這門「老手藝」。

就在上周,IBM方面宣布推出一項新的培訓課程,除了向初學者傳授COBOL知識之外,也幫助經驗豐富的專業人員進一步提升自身水平。IBM公司副總裁Barry Baker表示,「事實上,某些關鍵系統一直沒能得到應有的關注。現在的年輕人有必要了解並掌握某些早期技術,這也足以支撐起理想的職業生涯。更重要的是,專業的傳承具有重大意義。」

Gartner方面估計,目前全球COBOL程式設計師的平均年齡已經超過60歲。掌握COBOL編程技巧的程式設計師要麼退休了、要么正在考慮退休、要麼已經不幸離世。是的,能夠保障這些重要系統正常運轉的技術人員群體正在快速萎縮。新的、年輕的程式設計師們壓根不知道怎麼使用COBOL,而且大多數人也不想維護或者更新這些陳舊的系統。

在2004年進行統計時,Gartner方面發現擁有COBOL技能的專家約有200萬名,這一數字每年下降約5%。瑞士聯合銀行的統計數據則顯示,目前全球軟體開發者總數約為2500萬。通常,當對程式語言的需求超過程式設計師供應量時,技術行業就會做出調整。近年來,大學中的計算機科學課程正成倍增加,也出現了不少幫助人們快速掌握Java、Python以及其他語言的開發訓練營。但COBOL,顯然不在此列。

COBOL的全稱為「面向商業的通用語言」,誕生於上世紀五十年代末,當時大學中甚至還沒有任何計算機科學課程。在缺少學術界支持的情況下,眾多COBOL程式設計師開始在政府機關、保險、銀行以及票務預訂等領域使用該語言,他們也被廣泛視為科技行業的第一代藍領工人。

史丹福大學退休教授Gio WIederhold指出,「我個人真心不推薦現在的學生們學習COBOL。跟這種語言相關的全都是維護性工作,給不了人什麼有意義的啟發。」Wiederhold曾經培養出成千上萬計算機科學家,他的學生先後在蘋果公司、Facebook以及谷歌等矽谷科技巨頭工作。他還回憶道,史丹福大學自從1979年遷址以來就再沒設置過COBOL課程。

75歲的Mahmoud Ezzeldin表示,「這是一場災難。」曾為保險公司Blue Cross Blue Shield與美國國稅局工作的他擁有數十年的COBOL計算機系統工作經驗,他說「COBOL確實是種很難掌握的語言,而且在設計上也沒有考慮到網際網路這一運行背景。現在的大學生都喜歡學點簡單的東西,這不怪他們。」

Gartner公司分析師Thomas Kinect則認為,企業及其他組織需要在招募COBOL人員方面再加把勁,包括開出更高的薪酬。否則,這些老設備和老系統就要停擺了。他強調,「看看那些招聘啟事,大家就能感受到這有多荒謬了。這些職位的入門要求是20年工作經驗,但開出的年薪只有35000美元。

這個問題迫使已經退休的COBOL資深大牛Bill Hinshaw再度出山,建立了COBOL Cowboys公司。這是一家私人諮詢企業,專為那些身陷絕望、找不到任何COBOL程式設計師的企業客戶提供幫助。他們清楚地知道,當下全球財富五百強企業的系統當中有90%都運行在COBOL基礎之上。

Hinshaw說,在擔任兼職顧問的20位「牛仔」中,有許多已經達到退休年齡,儘管有些「年輕人」:「好吧,我稱他們為年輕人,但他們也已經50多歲了。」這些經驗豐富的COBOL程式設計師,他們修補各種故障,重寫編碼手冊,使新系統與舊系統一起工作,但每小時只賺100美元。

小結

維持現狀不可行,但全面升級似乎同樣不靠譜。無論如何,想要切實改善事態,唯一的方法就是尋找受控且謹慎的現代軟體與硬體遷移道路。

為了在實現這一目標的同時,不致引發業務中斷、數據丟失以及系統宕機,各類機構需要投入大量專業人才與金錢。而這,還僅僅是成功遷移的一半;另外一半則在於COBOL專家與時間周期。遺憾的是,目前我們既找不到充足的COBOL專家,也沒有太多時間可耗。

相關焦點

  • 80 歲都無法退休的 COBOL 程式設計師:他們非要扶我起來遷移老系統
    但美國至少有 12 個州的失業救濟系統運行在已經有 60 年歷史、使用 COBOL 程式語言的大型機上。這迫使政府機構出手爭搶平均年齡已達 60 歲的 COBOL 程式設計師為他們解決各種系統故障。年輕人也不願意學這種複雜的過時語言,這就意味著這些已經 60 歲高齡的 COBOL 程式設計師至少還需要在未來一二十年裡繼續維護這些老系統。
  • 新澤西州長急聘COBOL程式設計師
    由於疫情的緣故,許多美國人失業了,他們那邊的操作流程是失業就可以申請領取救濟金,但新澤西的失業救濟系統就是由 COBOL 語言寫的,不僅十分古老,而且效率極其低下,新澤西已經累積了幾十萬救濟申請沒有審核發放,所以州長墨菲才公開招聘的。這是跨越半個多世紀的二次開發需求啊!誰敢接手?現在網傳去應聘的程式設計師最小年齡都在 60 歲以上!
  • 80歲「上古語言」碼農:「扶我起來,這個bug我會修」
    COBOL 是一門非常古老的程式語言,誕生於上世紀五六十年代,鼎盛時期是七十年代,現在多數學校都不再開設相關課程,所以很多年輕碼農都不具備此技能。有個段子寫道,美國舊金山灣區的一家科技公司,為了與銀行客戶進行業務銜接需要招聘 COBOL 程式設計師,誰知道來面試的程式設計師,最年輕的也已經 63 歲了。
  • 六十年前的上古程式語言教程登上GitHub榜首,退休老程式設計師如何煥發第二春?
    康乃狄克州勞工部正在重新招募退休人員,並利用其他部門的IT人員來升級該州已有40年歷史的COBOL系統,這個系統不是完全自動化的,需要在過程中的多個點上進行人工操作。該部門的通訊主管Nancy Steffens說:「我只知道,現在返聘的退休人員都是懂COBOL的程式設計師。
  • 60 歲的 COBOL 憑什麼活到現在?
    她是Burroughs公司的一名程式設計師,在業務開發過程中發現需要一種計算機語言。1959年3月,霍斯提議創造一種新的計算機語言。它將有一個類似英語的詞彙表,可以跨不同的計算機執行基本的業務任務。霍斯說服霍珀等人創建一種與供應商無關的、可互操作的計算機語言。霍珀建議他們向美國國防部(DoD)尋求資助,並將其納為該語言的潛在客戶。商業IT專家對此表示同意。
  • 世界首個商用程式語言 COBOL 60 周歲
    程式設計師 Donald Cropper、KC Krishnan、Grace Hopper 與 Norman Rothberg 以及 Univac I 的控制臺。從誕生之日起,直到 20 世紀 80 年代,COBOL 一直是業界首選的商用程式語言。雖然遭遇了其它語言的興起,但是 COBOL 仍然沒有倒下。根據 COBOL 諮詢公司 COBOL Cowboys 的數據,目前仍有 2000 億行 COBOL 代碼被使用,90% 的財富 500 強公司仍然使用 COBOL 代碼。
  • 搶完口罩呼吸機,美國的州長們開始搶退休程式設計師了
    過去兩周,新澤西州政府已經堆積了超過36.2萬份申請,其中一半尚未支付,使用了40多年的失業系統隨時需要維護,而目前新澤西州招募到的程式設計師,最小年齡都在60歲以上。懂COBOL的程式設計師越老越值錢從上世紀90年代開始,美國多個行業專家建議更換基於COBOL的系統,否則系統維護將變得越來越難。
  • 今日芯聲|搶完呼吸機,美國州長們開始搶退休程式設計師了
    1、搶完口罩呼吸機,美國的州長們開始搶退休程式設計師了美國矽谷也流行著這樣的傳說,「如果你在一家大公司工作超過10年,那麼你的技術將會落後六個時代。」61歲的Java之父James Gosling在應聘時遭遇年齡歧視。因為計算機技術迭代太快,程式設計師超過四十歲,一旦失業似乎下一站就只能是做Uber司機。
  • 美國需要COBOL編程器來幫助他們處理老化系統
    打開APP 美國需要COBOL編程器來幫助他們處理老化系統 綠色消費網 發表於 2020-12-18 17:06:33   正如CNN報導的那樣,新澤西州,堪薩斯州和康乃狄克州的計算機系統都在經歷著大量的需求激增,主要是因為當地居民試圖申請失業。
  • 28歲退休的程式設計師「出逃」日本
    這個世界太不公平:有人28歲剛剛碩士畢業,有人28歲已經實現財富自由並退休。 近日,知乎一篇「如何看待年僅28歲的郭宇宣布從字節跳動退休?」引發網友熱議。
  • 日本一企業將退休年限放寬至80歲!你希望什麼年齡退休?
    80歲退休你聽說了嗎?近期,一則由日本電器連鎖企業「野島電器」發布的消息在中國網際網路圈引起了空前的反響。這家企業宣布:「員工退休年限從65歲放寬至80歲。」至此,這家日本電器連鎖企業的名聲為何一夜響徹中國網際網路,相信中國人的感慨必定比日本人更加的多。
  • 被嫌棄的35歲程式設計師
    如果到了 35、40 歲還沒晉升上管理層去,就會面臨失業、被社會淘汰的風險。一位 35+ 程式設計師在求職網站自述,他在今年年初被裁後的 2 個月裡,瘋狂海投簡歷、面試,只拿到了 6 個非大廠 offer,最終他決定平薪入職其中一家。打擊面並不僅限於職場。
  • 被嫌棄的程式設計師的35歲
    一位 35+ 程式設計師在求職網站自述,他在今年年初被裁後的 2 個月裡,瘋狂海投簡歷、面試,只拿到了 6 個非大廠 offer,最終他決定平薪入職其中一家。打擊面並不僅限於職場。在某社交平臺上,一位程式設計師憤憤表示,新認識的交友對象對「程式設計師到了 35 歲就退休」的定律感到介意,以致於感情快告吹了。越臨近 35 歲,焦慮感越發強烈起來。
  • 300名程式設計師分享他們在30歲,40歲,甚至50歲獲得第一份程式設計師工作的故事.
    我為什麼要寫這篇文章:每天,我都會收到很多私信,他們來自全世界各個角落,卻不約而同地問我同一個問題:「我現在__歲。我這個年紀是不是太大了,找得到工作嗎?」這是計算機行業內最普遍的問題之一。為了讓你體驗一下程式設計師們對他們的年齡有多擔憂,我在Quora(美國版知乎)上搜索了這個問題。
  • IBM將提供免費培訓 以應對COBOL程式設計師青黃不接的危機
    作為一款已有 60 多年歷史的「古董程式語言」,COBOL 仍在許多關鍵業務系統上發揮著重要的支撐作用。然而隨著程式語言的飛速發展,深諳這門語言的程式設計師卻遭遇了青黃不接的危機。 有鑑於此,IBM 決定在下周發布一系列免費的培訓課程。
  • 【疫情我在崗】他們平均年齡在59歲以上 臨近退休的他們是硬核「老...
    【疫情我在崗】他們平均年齡在59歲以上 臨近退休的他們是硬核「老交警」!有的是老黨員有的臨近退休但在這抗「疫」時刻他們都是硬核「老交警」!面對疫情59歲老戰士毅然奔赴防控一線 鄭振海,現為四平市公安局交管支隊公路巡警大隊外勤民警。自開展新型冠狀病毒疫情防控工作以來,面臨無法預知的風險,鄭振海主動請纓到一線崗位,體現了一名老戰士、老黨員的責任和擔當。
  • 40歲不是管理層沒技術,能在體制外混退休嗎?
    給已經步入老年的父母打電話,有時他們也會反問一句:你的身體怎麼樣?要注意啊。每到這時,就會心中一驚。我不得不重視這樣一個問題:不久的將來,40歲就要來了,這可是一個決定性的年紀啊。四十不惑,但是對很多人來說,40歲卻是真正困惑的開始。媒體人李方在《弟弟的故事:40歲,再不去做自己喜歡的事就老了》一文中,講述了他弟弟從房地產公司高管辭職去玩樂隊的故事。
  • 6年字節跳動程式設計師獲0.5-4億期權?年僅28歲的郭宇宣布退休……
    想想自己的28歲,或許是在工作?或許碩士畢業?或許還在苦苦等待一份大廠的offer?可有的人,28歲,已經光榮退休了。微博裡寫道,「我選擇在 28 歲的末尾退休,擁抱山間清泉與峽谷的風,去感受春秋冬夏。
  • 80歲老人都可以用雲計算寫家譜、自學編程寫遊戲,從零開始學吉他……你還有什麼理由不努力?
    可你知道嗎,現在很多爺爺奶奶們都不向年齡認輸,他們身懷絕技,不僅僅是只跳廣場舞那麼簡單。在他們身上,活到老,學到老,絕不僅僅是一句空話。成都82歲老人俞性佑就是一位愛學愛鑽研的「80後」,不僅年齡上積極向年輕人靠攏,心態也不輸年輕人。不僅手機電腦玩兒的溜,還用雲計算寫起了家族,走上了尋找俞姓大家族親人的道路。
  • IT行業,程式設計師35歲危機如何救贖?
    35歲程式設計師該如何救贖呢?要探索自我救贖之路,我們需要先了解程式設計師的35歲危機是怎麼來的。如果他們想在35歲的年紀轉崗,也很尷尬:除了寫代碼,其它的什麼都不會。原來,程式設計師這個職業,對腦力要求很高,而根據大腦發展規律,35歲之後,腦力開始出現衰退的趨勢,很多人無法勝任一線編程的工作,而其它崗位程式設計師又做不來,或者不願意嘗試,所以就容易成為公司裁員的對象。當這種裁員現象普遍之後,就容易被總結成程式設計師的35歲危機了。