会員登録すると
このコラムを保存して、いつでも見返せます
こんにちは。大手メーカーにソフトウェアエンジニアとして入社予定の者です。
この記事では、 競技プログラミング(以下「競プロ」)に出会ってから就職活動を経てソフトウェアエンジニアとして内定を得るまでの体験談 をお話しします。これから競プロを始めようと思っている方や、今まさに取り組んでいて「どう就活に活かせばよいか」と悩んでいる方にとって、少しでも参考になれば嬉しいです。
競プロを通して得たもの
簡単に私の自己紹介をさせていただくと、理系(物理専攻)、競プロ経験ありといった感じです。競プロとは何かご存知でない方は、AtCoderのサイトに記載があるこちらの記事を参照してみてください。
私は大学2年のときに競プロに出会い、以来、趣味のひとつとして4年間継続的に取り組んできました。AtCoderのレートを表す色は黄色です。まずは、 競プロを通じて私がどのような力を身につけたか をお話しします。
実装力
物理系の学科に所属していたため、プログラミングの授業はほとんどありませんでした。そのため、最初は他の参加者と比べてコーディングスピードが遅く、複雑な実装にも苦手意識がありました。
この課題を克服するため、
- 上位者のコードを読んで、効率的な実装スタイルを学ぶ
- バグの原因を言語化してメモに残す
といったことに取り組みました。特に他人の実装から学ぶことは、自分にはない発想やテクニックに気づけるきっかけとなり、 実装力の向上 につながりました。
問題解決力
競プロでは、まったく同じ問題が繰り返し出題されることはほとんどありません。そのため、 解けなかった問題の解説を見て、ただ解法を覚えるだけではあまり意味がない と考えていました。
そこで私は、問題を復習する際に「 どのように考えればその解法にたどり着けたか 」という思考のプロセスを丁寧に言語化するようにしました。こうした取り組みを続けることで、異なる問題でも「どこかで見た構造だ」と気づけるようになり、解ける問題の幅が広がったと思います。
この「思考のプロセスを言語化して再利用する」という姿勢は、研究活動やインターンでも非常に役立ちました。これまでの経験を抽象化して整理し、未知の課題に応用できる力が身についたと実感しています。
競プロ以外にやったこと
応用情報技術者試験
情報系のバックグラウンドが無かったため、基本的な用語やIT関連の知識を補う目的で勉強し、応用情報に合格しました。競プロだけでは触れられないネットワークやセキュリティ分野の知識を得られたのは非常に大きかったです。
個人開発
iPhoneアプリやDiscord botの開発にも取り組みました。ここでも競プロで培った実装力が大いに役立ちました。思いついた機能をすぐコードに落とし込めるようになっていたこと、そしてバグの原因特定や修正にもあまり時間がかからなかったことは、競プロで得た経験の賜物だと感じています。
研究
研究室はあえてプログラミングから離れた、半導体系の研究室を選びました。理由は、 ハードウェアとソフトウェアの両面から技術を理解できるエンジニアになりたかった からです。
研究では、半導体デバイスの特性評価や実験装置の扱いなど、これまでとはまったく異なるスキルが求められましたが、「モノが動く仕組み」や「物理的な制約に基づく設計の重要性」といった、今後のソフトウェア設計に活きる視点を得ることができました。
面接での話し方
失敗した話:「競プロができること」を強みとして話してしまった
学部3年生のときに応募した長期インターンの面接では、「競プロが得意です」「アルゴリズムやデータ構造に詳しいです」といったことを前面に押し出して話しました。
しかし、 「そのスキルが自社の業務にどう役立つのか?」と聞かれた際、うまく答えることができませんでした 。企業研究が不十分だったため、「コードを速く書けます」といった漠然とした答えしか返せず、不完全燃焼な面接となってしまいました。
成功した話:競プロを通してどのような能力を身に着けたか話した
就職活動では、「競プロができること」そのものではなく、 競プロを通じて培った課題解決の考え方 に焦点を当てて話しました。
特に意識して伝えたのは、「ある課題に対する解決方法を抽象化し、別の課題に応用できる力」です。こうした力は、業務で未知の問題に直面したときにも役立ちます。たとえば、仕様変更や新機能の実装といった正解のない課題に対しても、過去の経験を抽象的に捉え直すことで、柔軟に対応できると説明しました。
また、「複雑な問題を要素に分解し、本質を捉える力」や、「時間制限の中で優先順位を判断する力」なども、競プロを通じて培ったと伝えることで、実務にも通用するスキルとして理解していただけました。
面接官の反応
ポジティブな反応
競プロの経験をうまく言語化して伝えられた面接では、面接官から「論理的に話す力があるね」や「学んだことを抽象化して応用できるのは強みですね」といったポジティブな反応をもらえました。
特に印象に残っているのは、あるソフトウェアエンジニア職の面接で、「未知の問題に対してどうアプローチするか」という質問に対して、競プロを通じて鍛えた問題分解力や類題発見力を例に挙げて答えたところ、「まさに現場で求めている思考スタイル」と言ってもらえたことです。
また、競プロ経験者の面接官と話が盛り上がり、技術トークを通じて距離が縮まったこともありました。
ネガティブな反応
すべての面接で競プロが好意的に受け取られたわけではありません。ある面接では、「高度なアルゴリズムの知識って、実務ではあまり使う機会がないかもしれないけど、それでも大丈夫ですか?」という問いかけを受けたことがありました。
実際、多くの開発現場では、競プロで扱うような複雑なアルゴリズムやデータ構造を直接使う機会は限られている場合もあります。
このとき私は、「競プロで得た抽象的な問題解決力やエラー対応力は、技術スタックに依存しない汎用的な能力なので、十分業務にも応用できます」と答えましたが、それでも「尖ったスキルの持ち主」という印象を持たれたかもしれません。
企業ごとに求められるスキルや業務内容が異なるので、 しっかりと企業研究を行い、自分の経験がどのように業務に活かせるか自信を持って話せるようにしておく と良いと思います。
まとめ
競技プログラミングは、その取り組み方や伝え方によって、就職活動において大きな強みとなり得ます。単に「競プロが得意です」と述べるだけでは十分に伝わりませんが、そこから培った抽象的な問題解決力や、実装・デバッグの習慣、柔軟な思考力などを具体的に示すことで、他の候補者との差別化につながると感じています。
この記事が、これから競技プログラミングに取り組もうとしている方や、就職活動でその経験を活かしたいと考えている方にとって、少しでも参考になれば幸いです。
会員登録すると
このコラムを保存して
いつでも見返せます
マッキンゼー ゴールドマン 三菱商事
P&G アクセンチュア
内定攻略 会員限定公開
トップ企業内定者が利用する外資就活ドットコム