Oracle 程式設計師吐槽:永遠不會再為 Oracle 工作了 !

資料庫頻道發表於2018-11-23

一位Oracle程式設計師在Hacker News上吐槽自己的工作,引起了熱議,內容如下:

Oracle資料庫12.2。它有近2500萬行C程式碼。

這實在太恐怖了,簡直難以想象!你做不到在不破壞成千上萬個現有測試的情況下更改產品中的單單一行程式碼。好幾代程式設計師在很緊的專案期限內編寫了這些程式碼,程式碼中充斥著各種各樣的垃圾內容。

非常複雜的邏輯、記憶體管理和上下文切換等等,一切都用數千個標誌(flag)連線起來。整個程式碼充斥著神秘的宏命令,要是不掏出筆記本,手動展開宏命令的相關部分,你就無法搞清楚這些宏命令。可能要花一兩天才能真正搞明白某個宏命令的作用。

有時你需要搞明白20個不同標誌的值和效果,以預測程式碼在不同的情況下會如何執行。有時多達數百個標誌!我一點也不誇張。

這個產品仍然存活並仍然可以用的唯一原因是數百萬次的測試!

下面是Oracle資料庫開發人員平常的一天:

  • 開始處理一個新的bug。 Oracle 程式設計師吐槽:永遠不會再為 Oracle 工作了 !

  • 花兩週的時間試圖搞清楚20個不同的標誌,這些標誌以神秘的方式相互互動、導致這個困境。

  • 再新增一個標誌以處理新的特殊場景。再新增幾行程式碼來檢查該標誌,避開有問題的情況,並避免該bug。

  • 將更改提交到含有大約100臺到200臺伺服器的測試伺服器叢集,這些伺服器將編譯程式碼,構建新的Oracle資料庫,並以分散式方式執行數百萬個測試。

  • 下班回家。第二天來上班,處理別的bug。測試可能需要20小時到30小時才能完成。

  • 下班回家。第二天來上班,檢查你的伺服器叢集測試結果。順利的話,會有大約100個失敗的測試。倒黴的話,會有大約1000個失敗的測試。隨機選擇一些測試,並試圖搞清楚你的假設出了什麼問題。也許另有10來個標誌要考慮,才能真正搞清楚bug的本質。

  • 再新增幾個標誌,試圖解決問題。再次提交變更進行測試。再等20小時到30小時。

  • 另外重複沖洗兩週,直到你確保神秘的標誌組合無誤。

  • 終有一天你會成功,沒有一次測試失敗。

  • 新增針對你更改的100多個測試,確保下一個不幸接觸這段新程式碼的開發人員永遠不會破壞你的修復程式。

  • 為最後一輪測試提交工作。然後提交以供審查。審查本身可能另外需要2周到2個月。所以現在改而搞下一個bug。

  • 2周到2個月後,一切都已完成,程式碼最終合併到主分支中。

以上就是在Oracle修復bug的程式設計師日常工作的客觀描述,一點也不誇張。現在想象一下開發新功能會有多麼恐怖。開發一項小小的功能就需要一年半載(有時甚至長達兩年!)(比如說新增一種新的身份驗證模式,比如支援AD身份驗證)。

這款產品可以用這本身簡直就是個奇蹟!

我不再為Oracle工作了。永遠不會再為Oracle工作了!

原文連結:

轉自 | 雲頭條

來自 “ 雲頭條 ”, 原文作者:雲頭條;原文連結:https://news.ycombinator.com/item?id=18442941,如有侵權,請聯絡管理員刪除。

相關文章