競技プログラミングは就活の役に立つか
立ちました。
けど、
このスキルは 使い方を間違えると破滅 しそうな雰囲気を感じたので共有します。
想定読者
競技プログラミングをしていて、アプリやソフトウェアの開発する会社への就職を目指す人。
なんというか一般的なIT企業だったりベンチャーだったりな所。
(アルゴリズム力を強く問うような会社を除く)
アカデミック、研究職の方面に関してはわからないので触れられません。
筆者のスペック
- Atcoder 1800くらい
- 大学に入ってからプログラミングを学ぶ
- 初手競プロでスキルを付けた
- 開発は3年になってから手を付けた
- 競技プログラミング部 部長
- ICPC出場経験あり
- ぼちぼちの成績(台湾で10-20位ぐらい)
競技プログラミングがどのように役に立ったか
実際めちゃくちゃ役に立ちました。
少なくとも以下のような点でメリットでした。
コーディング試験で落ちない
落ちたことが無いです。
水色以上あれば解けるような問題が多数でした。
ただ、アルゴリズム系の問題ではない、開発力を問うような問題も少数ながら見かけたのでそのあたりは注意です。
プログラミングのスキル/意欲の担保
競プロでそれなりのレートを持っていることで、プログラミング自体の実力が担保されました。
コーディング力やアルゴリズム力、意欲を証明するには競プロを出すだけで十分でした。
学生時代に頑張ったこと
これ、 一番でかい です。
いわゆる「ガクチカ」ってやつですね。
就活始めるまでこの質問の存在知らなかったのですが、これを考えるときマジで競プロやってて良かった、になりました。
ICPCに出た事、それに向けてチームで頑張ったこと、多少の結果が残せたこと
これは、ガクチカとして語るには十分でした。
競技プログラミングがどのように役に立たないか
メイントピックです
ここを勘違いすると、間違いなく 破滅 すると思います。
私は就活を始めるまで気が付きませんでした。
即戦力にはなり得ない
即戦力を求めている会社を目指すのであれば、競プロ力だけでは不十分です。
競プロやっているだけでは、即開発出来る人としては捉えてくれません。
競プロ一本で行くのであれば、教育に力を入れている会社を選ぶ方が無難です。
エンジニアとしての総合力を担保しない
エンジニアとしての力を測る指標として、競プロ力だけでは不十分です。
足りない点は諸説あるとして、具体的な問題としては開発力の話です。
面接官も一番ここを測るために質問してきます。
例えば、Webアプリケーションフレームワークに関する話だったり、SQLの使い方だったり、設計モデルだったり。
要するに
技術力というか、開発力というか、その辺が不足しがちです。
Git、Docker、RDBMS...
面談やら面接やらでは大体問われる。
まぁ、競プロ一本の私は何もわからんわけです。
困った。
どうしよう
リングが動いてる
自分なりの解決法を共有します。
アウトプットしよう
自分で何か一つ、開発しましょう。
ジャッジシステム作ったり、PythonでBOT作ってみたり。
それを見せられれば、上記エンジニア力の部分を多少証明できます。
結局見せられる物作るのが、自分が就活した中では最強の補助パーツでした。
オマケに、実際に開発すると自然と開発に掛かる周辺知識が身に付きます。
この辺りの質問は面接で問われがちです。
自分で言うのもなんですが、爆速で身に付きました。
多分、競プロで身に付いた土台があったからこそな気がします。
結論
アウトプット、お勧めです。
なんか、競プロに関係するwebアプリ作ろう。
例外
ポテンシャル
赤コーダーとか橙コーダーレベルだとポテンシャル枠に入り込んでいる例を見かけました。
コミュ力
やべえよやべえよ。
必死に面接の準備をして何とかするしかありませんでした。
まじで、準備、大事。毎回数時間かけた。
ついでに
少し枠から外れる話ですが早めに動くが吉です。
加えて、2年の春休み(2-3月)から動くと、1-1面談イベントにもワンちゃん参加出来て、人事の方との繋がりが作れます。
そこから伝手伝手でインターンに応募しましょう。
早くから動くことで、面接の数をこなせることがまずメリット。
そこの面接で、自分に足りない力が沢山わかりました。
あとコミュ力の問題も解りました。