競技プログラミング部活動をはじめました

競技プログラミング部活動をはじめました

競技プログラミングとは


競技プログラミングとは「参加者全員に同一の課題が出題され、より早く与えられた要求を満足するプログラムを正確に記述することを競う」競技です。(wikipediaより引用)

有名な競技プログラミングのサイトとしてはAtCoderやAIZU ONLINE JUDGE、海外ではTopcoderなどがあります。

創設するきっかけ

弊社メンバーとペアプロミングを実施していた時のことです。
実装量自体は多くないものの、処理がやや複雑な箇所がありました。

この箇所は例えると競技プログラミングの問題のような処理内容でした。
そこから競技プログラミングの話題となり、以下のような話で盛り上がりました。

  • 「元々競技プログラミングに興味はあるが、継続して続けられない。」
  • 「以前知り合いにいたレッドコーダー(最上位ランク)の人はすごく実装が早くてコードも綺麗だった。」

そこで、コーディングの品質向上と継続的な学習モチベーション維持の目的で
MMMの部活動制度に則りこの度「競技プログラミング部」を創設することになりました。

活動内容

過去問題を解く

非同期的な活動として、各自の部員が競技プログラミングの過去問題を解いています。

例えば、筆者は現在主にビギナー向けのAtCoderABC問題を解いています。

また、継続して学習する動機づけを与える目的で、
Slackのチャンネルに各部員が前日に解いた問題を通知するAPPを導入しました。

個人的には、このAPPのおかげで最低毎日1問は必ず解こうというモチベーションが維持出来ています。

APPは以下を利用しています。
https://github.com/purple-jwl/atcoder-daily-ac-checker

勉強会実施

同期的な活動として、勉強会を毎週1回開催しています。

現在は「問題解決力を鍛える!アルゴリズムとデータ構造」を1章ずつ進めています。

読んでいて難しかった点や章末問題の解法を議論することで
効果的・効率的にアルゴリズムの理解を深めています。

コンテストに参加する

もちろん本番のコンテストに参加します。
Slackチャンネル上や毎週の読書会で感想を共有しています。

筆者もある程度自信がついた段階でどんどん参加していきたい次第です。

競技プログラミング部を創設してよかったと感じる点

コーディングのスキル向上


部活創設からまだ一か月程度ですが、
個人的には以下のスキルの向上を感じています。

  • 実業務でコーディング中にやや複雑な処理が必要でも以前より短い時間でコーディング方法を思いつく/書けるようになった。
  • 抽象的で複雑な処理の読解力が上がった(例えば利用しているライブラリのコードなど)。

しばしば「競技プログラミングは実業務では役に立たない」という声をネットで聞きます。
しかし、実際に競技プログラミングをやってみた個人的な意見としては、
少なくともコーディングを担う人には有益であると感じています。

継続するモチベーションになる

筆者は以前から競技プログラミングに興味がありました。
しかし平素の業務や競技プログラミング以外の興味関心もあります。
どうしても競技プログラミング自体の優先順位が後回しになってしまい
なかなか継続して着手できませんでした。

今回部活として活動することで、
ある意味「他人の目」による監視が働いていると思います。

他の部員もやっているから自分もやろうという
いい意味で部員同士が刺激を与えあう「部活」らしさが機能していると思っています。

一人でやるより理解が深まる

学習は独学でもできます。
個人的にも独学でコツコツ進めるのは好きなほうです。

しかし、勉強会やslackのチャンネルで議論したりナレッジをシェアすることで、
より効果的・効率的な学習が出来ていると感じています。

報奨金制度


MMMではTOEICスコアやAWS認定資格に応じる報奨金制度があります。
そしてこの度AtCoderのレートに応じて報奨金を支給する制度が新たにできました。

AtCoderの色 報酬金額
茶色(上位50%) 30,000円
緑(上位30%) 50,000円
水色以上(上位15%) 〜 100,000円

やはりお金が絡むと俄然やる気が沸きます。
目指せ水色!!

まとめ

今回は競技プログラミング部創設に関して紹介いたしました。
社内での競技プログラミング活動の参考になれば幸いです。

またMMMへの入社を考えていらっしゃる方もご縁があった際には
競技プログラミング部への入部を検討してみてはいかがでしょうか!
新入部員絶賛募集中です!!

AWSクラウドネイティブな開発でビジネス課題を解決したいエンジニアを募集
クラウドネイティブな開発を推進したいプロジェクト・マネージャーを募集
多彩なプロジェクトで活躍したいフリーランスのWebデザイナーを募集