🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

AtCoder完全無法

這並不是誇張。

在A題上卡住,在B題上誤讀限制,C題根本不看。
賽後,看著時間軸上流出的「首次參加就解出C題」的報告,靜靜地關閉瀏覽器。

而我在做什麼呢?

  • 工作中寫Go和Rust
  • 也用TypeScript寫後端和前端
  • 進行API設計,做代碼審查
  • 通過程式編寫賺取薪水

我算是那種「在工作中寫代碼的人」。
不過,AtCoder我完全無法搞定。

先說明一下

在此我先聲明,這篇文章並不是想要否定AtCoder或競技程式設計

在有限的時間內閱讀問題、洞察解法,並準確實作的能力,從常理來看是相當高難度的,我覺得能做到的人實在是相當厲害。

這篇文章是為了整理「為什麼我做不到」的幾乎自我分析。

結論:我無法進行競技程式設計

首先給出結論。

我並不是不會編程,而是不擅長競技程式設計

這兩者看似相似,實則有著相當大的不同。

AtCoder是「回憶算法的遊戲」

每次看到AtCoder的問題,我都想著。

那麼,這個問題我該回憶起什麼?

業務編程的流程是,

  • 閱讀需求
  • 整理規格
  • 必要時進行查詢
  • 在試錯中實施

而AtCoder的流程則為,

  • 閱讀問題
  • 查看限制
  • 想到「啊,這是〇〇法」
  • 實作

這是個完全不同的世界。

當然,這並不是說「因為是記憶遊戲就簡單」。
反而是相反,我認為理解大量典型的同時,能瞬間調用起來本身就是一種專業技能

然而,我幾乎沒有進行過那樣的訓練。

業務編寫的代碼與AtCoder的代碼方向截然相反

在業務上,通常會這樣告訴我。

  • 可讀性很重要
  • 可維護性很重要
  • 變數名要用得當
  • 要以有意義的單位切分函數

而AtCoder的代碼呢?

  • 變數名為 i, j, k
  • 只有 main 一個函數
  • 沒有註解
  • 只要通過AC就算正義

在AtCoder寫代碼時,

這樣我之後可讀性恐怕不高……

的想法會浮現。
然而「之後」這一刻永遠不會來,通常在到來之前就結束於TLE或WA。

即使看到限制條件,也沒有任何靈感

AtCoder的問題通常是這樣寫的。

1 ≤ N ≤ 2×10^5

能競技的人看到這個,會立刻判斷:

  • O(N log N) 也行
  • 全部探索是不可能的

(我想應該是這樣的)

而我則是,

  • 「2×10^5嘛……挺多的……」

思考就停下了。

在業務中,

  • 如果慢就修正
  • 進行緩存
  • 根本不會有這樣的輸入

就可以解決了。

我從未訓練過在看到限制的瞬間就制定策略。

實作速度不足

在業務中,代碼寫得很謹慎。

  • 編寫測試
  • 添加日誌
  • 考慮錯誤處理

在AtCoder中,根本沒有那樣的時間。

尤其是Go。

  • 標準輸入極為繁瑣
  • 每次都要想起 bufio.NewReader
  • 在類型轉換時會暫時停下來

不知不覺間30分鐘過去了,問題幾乎沒什麼進展。

AtCoder接近於運動

我最近有這樣的感覺。

AtCoder與運動其實非常接近。

  • 知識
  • 反射神經
  • 模式識別
  • 限制時間內的判斷力

那些日常鍛鍊的人會更強。

而我鍛鍊的卻是,

  • 設計思考
  • 積累規格
  • 預測未來的變更
  • 閱讀他人的代碼

所用的肌肉完全不同。

因此,當我看到在AtCoder能穩定解題的人時,自然會認為他們「真厲害」。
他們經歷過我沒有的訓練,具備我不具備的判斷力。

那麼,不能搞定AtCoder的我算不算失敗呢?

我想應該不算失敗。

  • AtCoder強的 = 能做好產品,並不成立
  • AtCoder弱的 = 不代表工作能力差

但有幾個事實是存在的:

  • 算法庫不夠豐富
  • 對運算量的感覺鈍化

如果認清了這些事實,那麼,

  • 是繼續嘗試競技程式設計
  • 還是專注於業務生存

只是選擇而已。

總結

  • 我完全無法進行AtCoder
  • 但我依然每天編程
  • 競技程式設計與業務編程所需的能力是不同的
  • 明白自己為什麼做不到之後,心情會稍微放鬆一些

與我有相同經歷的人,或許不在少數,說明在工作中寫過代碼卻在AtCoder上完全無法解題的人,真的不只是你一個。

至少我就是這樣的。

如果覺得這篇文章不錯,請讚好收藏關注謝謝🙏


原文出處:https://qiita.com/Shiro_Shihi/items/31b9e50abda41e4c2b71


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬9   ❤️4
346
🥈
我愛JS
📝1   💬7   ❤️2
56
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付