競技プログラミングは大学生活の役に立つか?
結論:立った(立たないところもあった)
(本日はエイプリルフールです。そのためこの記事の中には嘘や誇張や矛盾が混じっていたり混じっていなかったりします。)
役に立ったところ
1. プログラミング能力
プログラムが書けると有利な場面は大学生活において結構あります。 プログラミング能力の獲得をメインターゲットに据えた授業で楽ができるのはもちろん、プログラミング能力の獲得をメインターゲットに据えていない授業でもプログラミングをしなければならない場面はあります。 そのような授業においてプログラミングという非本質的な作業に割くリソースが少ないことはよりよい授業理解につながるでしょう。 また、プログラミングが必要のない授業でも簡単なデータの分析や数値計算を素早く行えるのは便利な能力です。 比較的自由なテーマのレポートではそのような能力を活かして内容を組み立てることでオリジナリティが出やすくなることが期待できます。
2. 数学力
競技プログラミングに取り組む中で、それなりに高度な数学に触れてそれを問題の中で実践していくということはよくあります。 そのなかで着実に数学力は伸びていたようです。 (僕の所属していた学科では数学の要求度が低かったこともあり)おかげで(卒業に関わる単位において*1)数学で苦労したことはほとんどありませんでした。
3. その他
まずは競技プログラミングを通して友人ができたことはよかったと思います。 僕の所属していた学科は学生の仲がとても悪かったので友人の存在はとても貴重でした。
また、僕の場合は卒論のテーマは競技プログラミングの問題が元ネタになっています。 僕の卒論の単位は競技プログラミングのおかげ得ることができたといっても過言ではないでしょう。
役に立たなかったところ*2
1. 毎週末がつぶれる
AtCoderのコンテストは多くの場合土日の夜21時からです。 毎週コンテストに出ようとすると人生に支障が出たりそうでもなかったりします。
2. 生活習慣が壊れる
これは上記よりさらに深刻です。 Codeforcesのような海外のコンテストにしっかり参加しようとすると、深夜は活発に活動できる体を作らなければなりません。 午前の授業は出にくくなります。 それに普通に健康に悪いです。
3. 算数パズル能力
「役に立ったところ」では競技プログラミングを通して得た能力が役に立つところを紹介しましたが算数パズル能力は1ミリも役に立ちませんでした。 それどころか、この手のパズルに対する難易度評価が壊れるので気を付けないと無意識に他人を煽る発言をしてしまいます。(2敗)
4. 趣味として紹介して引かれる
え?家でパソコンをカタカタするのそんなに好きなの?(笑)