エンジニアの継続的成長に大事な4つの取り組み

 最近AtCoderをはじめました。一日一回は取り組む程度にはまっています。きっかけは、自分の会社であったセミナーでした。そのセミナーは「エンジニアの継続的な成長」をテーマにしたものです。実はこのテーマ(とスピーカーさん)は過去に2回聞いたことがあり、3回目だったのですが、それでも過去と同じように刺激を受けました。要旨としては、エンジニアの継続的な成長に重要なのは次の4点だという話です。

  1. 技術文書を読む
  2. 技術文書を書く
  3. コードを読む
  4. コードを書く

このシンプルな考え方がとても好きです。

 自分自身に当てはめると…

  • 「技術文書を読む」…技術書を読む習慣はあります。
  • 「技術文書を書く」…Qiitaは書いていたけど、最近はめっきり・・・。
  • 「コードを読む」…GitHubのコードを読むことがあります。
  • 「コードを書く」…最近はめっきりやってない。

あれ、ずたぼろじゃないか。特に「コードを書く」は仕事でもほとんどやっていません(1年に数十~数百行のプロダクションコードを書くくらい)。

 このセミナーが良いきっかけだったため、仕事でできなくても「コードを書く」はやろうと思いたち、AtCoderをはじめたわけです。

AtCoderでコードを書く

 コード書く手段なんていろいろあるんですが、実はやったことが無かった競技プログラミングを試してみようかなと思いました。なかでもAtCoderは有名どころですし、日本で運営されていて日本語で分かりやすいし(ネット上で多くの情報を発見できます)、さまざまなプログラミング言語に対応しているし、はじめるハードルはとても低いと感じました。

https://atcoder.jp/?lang=ja

 アカウントを作り、最初に始めたのは、AtCoder Beginners Selection(通称、ABS)

https://atcoder.jp/contests/abs

当初は手になじんでいるC#で進めようかな~と考えたのですが、せっかくなのでPythonを選択(いまは、pypy3へ浮気)。問題文を読み、ローカルのVS Codeで問題を解いていく。サンプルの回答例があるため、それで書いたコードが正しいことを確認をしてから、提出します。間違えるとWA、コードが遅いとTLE、メモリーを喰いすぎるとMLE(だったけな…)、正解するとACが返ってきます。正誤判定するために、自動的にUnitTestが走っているようです。

このサクサク感とちょっと脳みそを働かせる感じが良い刺激!勢いにのり、その週末に開かれていたコンテスト:AtCoder Beginner Contest 174に参加しました。だが結果は6問中2問しか解けないという惨敗でした^^; コンテスト後に順位表を見ると、2位の人はどうやら16歳の高校生!すごい世界があるものだな~と新しいコミュニティに触れることができ、びっくりしました。

 残念ながらコンテストは月数回しか開かれていため、普段は過去問を解いて修行することになります。単純に過去問を解いてても実はやりがいを感じないため、何か良い仕組みはないかな~と探していたらぴったりなサービスを発見しました。AtCoder Problemsです。過去問を解いて修行するにはもってこいのサービスです。

https://kenkoooo.com/atcoder

このサービスの中にはBoot camp for Beginnersというトレーニング教材があって、AtCoderのコンテストの過去問から300題が選ばれており、Easy、Medium、Hardに3分類されています。これらを上からこつこつ解いていって鍛えるという使い方ができます。

 最近はこのBoot campを1日2~3題(15~60分)解いて、修行をしています。プログラミング言語の勉強(文法とか標準ライブラリの使い方)になるのはもちろん、アルゴリズムや数学の勉強にはもってこいです。このまま進めていき、解けない問題が増えてきたら、それはアルゴリズムの勉強を真面目に取り組まなくてはいけない時だと思います。

 実は私の積読にもアルゴリズム本はいくつかあります。これまではかなり下のほうに積まれていました。

[amazon asin=”4839941068″ price=1 kw=”プログラミングコンテストチャレンジブック 第2版 ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~”]

[amazon asin=”482228493X” price=1 kw=”世界でもっとも強力な9のアルゴリズム”]

あともうすぐ発刊されそうなのだとこちらですね。

[amazon asin=”4065128447″ price=1 kw=”問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)”]

 お仕事で難しい「アルゴリズム」が出てくることもなく、学生時代から塩漬けの知識でしたが、AtCoderに取り組んだおかげで、日の目を見るようになるかもしれません(そのまえにAtCoder熱が冷めるかもしれませんが^^;)

 とにもかくにも、三日坊主にならなかったのは良かったです。来週AtCoder Beginner Contest 175が開催されるようで、次はどうにか3問は解けるように少しでも修練に励もうと思います。