What COMPETITIVE PROGRAMMING Gives You(の日本語訳)

この記事は Competitive Programming (2) Advent Calendar 2018 の 4 日目の記事です。

この記事は何

どちらの国の方だったか忘れたのですが mg2μ さんという競プロ er の方がおりまして、その方が書かれたミニコラム「What COMPETITIVE PROGRAMMING Gives You」にとても感銘を受けたので、こちらを日本語訳したものをご紹介します。

(この度の翻訳/掲載について mg2μ さんにご快諾いただきました。ありがとうございます!)

↓↓ 引用ここから ↓↓

競技プログラミングがあなたに与えてくれるもの

ここでは「競技プログラミングがあなたに与えてくれるもの」について簡潔に述べます。

実装力が上がります

競技プログラミングがあなたに与えてくれるものは、目的のロジックを実現する速度・正確性だけにとどまりません。
コンテストに出続け成長したあなたは、どのようなロジックを組めば良いかすらすぐさま思いつく自分に驚くことでしょう。

アルゴリズム力が上がります

アルゴリズムに関する知識は、エンジニアにとってさながら武器のようなものです。
優秀なエンジニアは数多くの、それでいて研ぎ澄まされた武器を駆使し様々な問題を解決していきます。
さぁ、あなたも競技プログラミングを始めて、武器を集める旅に出かけましょう!

頭が柔らかくなります

知識だけでは解くことができない、人々に考察せしめる問題は競技プログラミングの醍醐味の一つです。
あなたはこれらの問題を解くことで、手持ちのアルゴリズム力をより輝かせることの出来る、柔軟な発想力を手に入れることができます。

計算量に対する感性を養います

実装を完了させたは良いものの、思うようなパフォーマンスが出ず、ロジックを見直す。
そのような苦い経験があなたの記憶にもあることでしょう。
しかし、訓練された競技プログラマは計算量に敏感で、そのような失敗をすることはありません。
ロジックを書く際には息をするように計算量を気にかけている、そんなエンジニアになってみたくはありませんか?

バグに対する嗅覚を養います

コーナーケースは、あなたのコードの価値を 0 点に叩き落とす悪魔のような存在です。
そんな悪魔に苦しめられた競技プログラマたちは、徐々に、仕様の隅に潜む悪魔たちの気配に敏感になっていきます。
そして、悪魔の姿を捉え、味方につけた彼らは、撃墜フェーズで猛威を奮います。(自らのコードはテストに通した上で!)
このような能力を手に入れたプログラマは、実務、例えばコードレビューの際にもその力を発揮し、同僚たちから賞賛を(ときには苦い顔を)浴びることでしょう。

↑↑ 引用ここまで ↑↑

以上が mg2μ さんのミニコラム「What COMPETITIVE PROGRAMMING Gives You」の内容です。
簡潔ながら競技プログラミングにより得られるスキルを的確に表しており、また mg2μ さんの競プロ愛が伝わってくる良いコラムだと僕は思います。

僕の力不足によりうまく伝わっていない箇所もあるかと思いますので、ぜひ 原文 の方もご覧になっていただければ幸いです。


明日の記事は Mister さんの 超自己流 解説記事の書き方 です。楽しみ!