競技プログラミングを始めたばかりの人に伝えたいこと Advent Calendar 2021の9日目のポストです。
仕事はIT系なわけですが、コーディングをする機会が少ないです。これではだめだぞと、せめてものスキルアップに2020年に競技プログラミング(AtCoder)を始めました。成績はいわゆる「鳴かず飛ばず」というやつですが、コツコツ継続的にコーディングする機会を維持できているなと思い、継続できているコツをまとめておこうと思います。
毎週土曜夜にABCに出場する時間を確保する
AtCoder Beginner Contestは主に土曜の21:00-22:40に開催されます。土曜夜は競プロの日だと家族には説明し、この時間は事前に確保するようにしています(お酒も飲まない。もともとたいして飲まないですが。)。最近は娘からは「プログラミングコンテストで絶対一位になってね!」なーんて言ってくれます。一位ね…パパ頑張るよ…一位のハードルの高さよ…。
一緒にトライする仲間を探す
ABCに一緒に挑戦する仲間/友人がいるのはかなり大事な要素です。満足するように解けなかった時には普通に凹むもので、傷の舐めあい(笑)ができる仲間は貴重です。加えて公式解説が難しい場合もあり、理解するために壁打ち相手にいてもらいたいものです。
AtCoder Problemsで最低限の競プロのコツをつかむ
AtCoder民にとって、AtCoder Problemsほど素晴らしいトレーニングの場は無いと思います。最低限のコツをつかむために、TrainingにあるBoot camp for BeginnersのEasyをやっておくと、よくあるつまづきを回避することができます。そろそろMediumもやらないとなぁ。年末年始に進めようかな。
成長感を味わうために書籍を使って研鑽をする
ただ問題を解いていてもなかなかスキルって上がらないものだと感じています。私の場合は、書籍などで体系だって知識を身に付けることが性に合っているようで、通称けんちょん本と呼ばれている下記の本を読んで日々精進しています。
余談ですが、本書は出だしの5章が特に難しいです。5章の動的計画法でギブアップする人をよく聞きます。実は6章以降はけっこう易しい内容だったりします。5章で諦める前に5章の理解はあっさりさせて、前進するのがおすすめです。(自分が強くなったら、また5章に戻れば良いのです。)
競プロの取り組みは脳みその柔軟体操である
と、思うのが大事。プログラミングとして1つの活動としてとらえるべきではないなと。どこをストレッチさせたいかを意識して、そこにあったトレーニングや取り組みが重要そうです。
パブリックコミットメントを使う
自分を律する(大げさ)ために、SNSで「今日も出場したー」と書き込んでみる。
到達したい色の目標を持つ
スタートしたばかりの人はまずは茶色でしょう。私はどうにか水色までは頑張りたい!先は長そうだ。
取り組み方の改善をたまに行う
漫然と取り組むだけでなく、たまにで良いので取り組みを改善をするのがいいでしょう。私が最近行った改善は、online-judge-toolsをVisual Studio Codeに組み込んでコードの自動生成や、解答の自動提出をできるようにしたことです。ちょっとした刺激も継続するコツだと思います。
大人だし慌てずコツコツやつ
まだまだしばらくITの仕事は続けますし、のんびり続けてみようっていう心持ちでいるのが良いかなと思っています。
継続第一でどんな取り組み方をしているかまとめてみました。けんちょん本のおかげで知識も増えてきたし、来年はもう少しレベルアップできると良いなぁ。
コメント