RubyistのAtCoderとの向き合い方

AtCoderとは AtCoderとは競技プログラミングのコンテストを行っているサービスです。良質なプログラミングの問題が沢山提供されています。またRubyistとはRubyを書く人の事で私もRubyistです。今回はRubyistがAtCoderに取り組む姿勢についてまとめてみました。 といっても私は偉そうにプログラミングを語れる程の技術力がある訳ではないです。なので今回はRubyistがAtCoderを利用することで何を得られるか、どう向き合っていくべきなのかという事を自分なりの目線で勝手にまとめてみたという記事です。 RubyistがAtCoderに取り組む意味 まず先に断っておくと私がAtCoderに取り組んでいる目的は競プロで良い成績を残したいからではありません。そもそもパフォーマンスで他の言語に劣るRubyは競プロには向いていません。※もちろん少ない記述でコードを書けるRubyは大好きですよ 私がAtCoderに取り組んでいる目的はRubyを使って様々な問題を解くことでRubyに対する理解を深めるためです。AtCoderで問題を解いているとそれまで知らなかったメソッドを知れたり思いがけない発見があったり多くのことを学べます。そしてRubyによる課題解決の訓練をたくさん積むということは確実に仕事にも活きてきます。場数を踏んだエンジニア達は面構えが違います。 人の回答を読む AtCoderで問題を解いてみると分かりますがコードを提出すると即採点してくれます。ただ、その結果が合格だからといってそれで終わらせてしまうのは勿体ないです。大事なことは先にも言いましたが、Rubyの理解度を高める事です。他のRubyist達がどんな解き方をしているか見ることは非常に勉強になります。これは自分の知らないメソッドだけじゃなくアルゴリズムや考え方など概念レベルで学べる事が多くあり、コーディング以外の副産物も得られます。 コードを書くこととコードを読むことは表裏一体です。コードを書くのが速い人はコードを読むのも速く、逆にコードを書くのが遅い人は大抵読むのも遅いです。人のコードを読む能力は書く能力と同じぐらい重要なことです。 テストを書け AtCoderを続けていればいつか必ず提出したコードが不合格になります。その時優秀な貴方ならきっとこう思うでしょう。「何故不合格なんだ、落ちたテストサンプル見せろや」と。お気持ちはよく分かるのですが、しかしこの考え方はエンジニアの姿勢として正しくありません。何故なら「テストサンプルくらい手前で作って自力でバグを見つけろや」が世のエンジニア達の一般論だからです。 もしかするとこの記事の中で一番伝えたかった事はこれかもしれません。どんなに小さな機能でもテストを書きましょう。どんな機能でもテストを書けるということはそれ自体が高度な技術です。テストを書く事はベストプラクティスです。また、テストを書く事に慣れるほど仕事の開発速度・精度が向上し必ず幸せになります。 これはつい最近の話ですが兄弟会社からあるシステムの機能拡張を依頼されましたが、こいつがとんでもなくクソコードでした。恐らく様々な人達が手を加えたのであろう無秩序で煩雑なコードで書かれた無数のファイル、もといゴミの山がそこにありました。勿論テストは一切ありません。 一応は要件通りの機能を追加しました。ですが果たして今回の変更が既存の機能に影響が出ないと言い切れますでしょうか。無理でした。システム全てを把握している時間は無かったですし、何より作成者との連絡が取れなかったので。そもそもバグの上に機能を追加するような状況でしたからとりあえずリリースして出たとこ勝負です。 こういう時テストさえきちんと書いていればどこで不具合が発生しているかの切り分けが楽になるのです。切り分けがスムーズにいけばデバッグに掛かる時間も短縮され、精神的にも余裕が生まれます。面倒でもテストは書きましょう。AtCoderでテスト力も身につけてられたらエンジニアとしてもっと上に行けるはずです。 とりあえず一問解いてみる まずは一問解いてみましょう。AtCoderのチュートリアルのような問題です。 あなたは、500 円玉を A 枚、100 円玉を B 枚、50 円玉を CC 枚持っています。... 御覧になる | 御シェアする