AtCoderで茶色になった話

要約

 夏頃に始めた AtCoderで、なんとかギリギリ2022年中に最初の色付きである「茶色」になれました。嬉しいもんです、という事を書きます。それだけです。

きっかけ

 以前から漠然と興味を持っていたところに、この夏発売されたこの本を読んだことで、「ちょっとやってみようか」という気になりました。

その頃の日記:
sakaik.hateblo.jp

開始の頃の記録

  • 2022/08/13
    • 記念すべき初回参加申込み!! ・・・をしたのだけど、すっかり忘れていて、日が変わってから数問を黙々と解いてみた、苦い出発の思い出。2点もらえてる! とりあえず、時間内に参加しなきゃいけないことを覚えた。
  • 2022/08/21
    • 先週の失敗を繰り返さぬよう、とりあえず時間は覚えていた!・・・けど、ゆったりと21時半を過ぎてからAtCoderサイトを開いてみると、どうやら申込みをしていなかったらしい。 とりあえず、申込みをしなきゃいけないことを覚えた。
  • 2022/08/27
    • ようやく実質的なスタート。ちゃんと申し込んだし、ちゃんと、21時過ぎてからPCの前にゆったりと座ったし。 ・・・解いた時刻も順位(ポイント)に影響するらしいことに気づく。 とりあえずこれは、21時にはスタンバイ完了して、時報と共に試験問題を開くゲームなのだ、ということを覚えた。

 というドタバタのスタートでした。

採点されるのは面白い

 普段の生活の中で書くコードには、正解であることを保証してくれるものは何もない。分かりやすいエラーになればさすがに分かるが、ちゃんと動いている「ように見える」状態で稼働しているものも多いのではないでしょうか。(テストケースを書いても、そのテストケースに対する信頼度=書いたのは誰?=に対する不安は常にあるし)
 そういった中で、充実した(そして多くの場合は信頼できる)テストケースを用意してくれて、作ったコードが正しく動くのか、パフォーマンス要件を満たしているのか、ちゃんと判定してもらえる機会というのは、非常に面白いものです。 確実な「おっけー」が出ることはない世界で、「おっけー」を出してもらえるうれしさを、このゲームに感じました(ゲームと呼ぶなと怒られそう(笑))。

やってみて感じたこと

  • それなりに業界経験も長いので、まぁ依頼された仕様に対してそれなりに書けるだろうと思っていたけど、いやいやとんでもない
  • きれいに書かなきゃいけないというか「自分はこんなきたないコードを書いちゃいけない」という思いがあって、最初の頃は手が動かなかったけど、数回参加しているうちに「きれいにしようとして完成しないコードよりも、泥臭くても動くコードを」と切り替えてから、手が動くようになりました
  • 本来は、「きたなくてもまず動くコード」を書き上げてから、しっかりとコードの整理(リファクタ)を行ってこその完成だと考えますが、きたないコードがテスト通過した時点でもう見返すこともないので、この点は多少もにょもにょします。いまのところ、この点は割り切ることにしています(動くコードを書いた奴が偉い)。
  • 知らないものは解けない。アルゴリズムの知識や、使用すると便利な関数やデータ型の知識を要求されることがあります。仕様(問題文)を元にゴリゴリ書けるものは自力で書くこともありますが、知らないと時間内ではどうしようもないものもあり(300か400点より先の問題はほぼそう?)、自分のこれまで触れてきた世界の狭さを身を以て感じました。
  • 集中する時間は楽しい。仕事でも過度に集中して数時間後に貧血を起こすことがありますが、AtCoder では制限時間が決まっているのが良いですね。時間を決めて集中する機会はそうあるものでもないので(仕事では「できるまで集中」が基本)、終了時間に向けて集中するのは楽しい時間でした。
  • もっと勉強したくなった。いままでも各種アルゴリズムに触れる機会はあったものの、実務上それらを必要とする機会は多くないため、いつしかそういったアルゴリズムらに対して「あぁキミね。こんど時間があるときじっくり向き合うからね」と優しくない態度を取るようになっていました。このたび、学んだことを使う機会= AtCoderで使用できるかも=を得たので、アルゴリズムさんたちに対してより親密な態度で向き合えそうです。
  • 毎週はキツい。開始後2ヶ月くらいは最優先で時間を確保したものの、11月頃に世の中が少しずつ動き始めるのに合わせて私も外出の用事が入ることが多くなりました。気がついたらまるまる1ヶ月の間があいてしまった次第。意外と週オビでの時間の確保は難しいのです。2023年は「月に2回くらいは参加できたらいいな」くらいで、ゆったりと向き合えたらと考えています。無理は良くない。
  • しくみがスゴイ。前述のとおり採点の仕組みもすごいのですが、とにかく成果の「見せ方」がスゴイ。自分の成績の変化を折れ線グラフで見せてくれたり、全体の中での自分の位置をヒストグラムもどきで見せてくれたり、やったことに対する成果の見せ方が素晴らしいです。ヒストグラムもどきは、統計グラフとしてはやっちゃいけないこと(横軸の恣意的な操作)なのだけど、灰色部分を4本の棒にしてしまうのではなく、敢えて細かく分けることで自分が少しずつ右のほうに移動していることを実感できるのが良かったです。最初の嬉しかったのは、このグラフで「峠を越えた」ときでした(笑)。今後は100点ごとに1本進むので、なかなか大変そうです。

AtCoderは「暗記科目」か

 この数ヶ月の間で「AtCoderは暗記科目なのか」という話題を目にしました。いろんな意見があったようですが、「知らないと解けない」ものがあるのは間違いないでしょう(今回、自分のアルゴリズム経験の少なさにがっかりしました)。この「知っている」の部分は本来「理解している」と同義であってほしいと私は思いますが、理解せずとも「パターンとして暗記している」ことで解くことはできるので、手っ取り早さの点では「暗記勝負」という面もあるのではないかと思います。
 暗記して→使って見て→何度も使っているうちに「あっそうか!」と理解に昇華することがあるかもしれない、という期待もありますね。
 私としては「暗記科目ではないが、暗記は有効だし、暗記で解く人がいてもいいのかなー」という感覚ですかね。

楽しかったです

 優秀な若い人たちの遊び場という雰囲気のところに、いい歳して混ぜていただいた感はありますが、普段使わない脳ミソを使ったりして、今年の後半、楽しかったです。運営、作問、いつもありがとうございます!


記念キャプチャ:色々なところの表示が茶色に変わって、テンション上がります!