競技プログラミングは役に立つのか?
毎年定期的に『競技プログラミングは役に立つか』について大喧嘩が発生しますね。
その様子を見ていて思う事があります。
それは、「どこにも意見の対立する論点が見当たらない」という事です。
どちらの論陣もほぼすべての論点に対して同意しているのです。
なので、何をめぐって対立しているのかよくわからないのです。
せっかくなので、よくある論点について極々常識的な回答を書いてみます。
競プロ肯定派も否定派も異論はないのではないでしょうか。
一応ポジションを書いておくと僕はこういう人です。
- 競プロやってる
- プログラマーとしてすでに仕事についている
- でもさらなる成長のためにやってる
- 競プロは役に立ったと感じている
- 特に楽しいとはあまり思わない
でも、誰でも同意できるようなことしか書いてないと思います。
競プロは役に立つのか?
計算量の感覚、アルゴリズムの知識、正確なコーディング能力などあって損はないはず。
どんな人に勧めるべきか
楽しいと思える人(少なくとも苦にはならない人)。
もしくはプログラミング求道者系の人。
競プロとはAtCoderのようなアルゴリズムのコンテストを指すのか?
他にもいろんな趣のコンテストがあるね。
AtCoder的な物と実際の業務と関係があるのか?
会社による。
ただし、「さすがにこの問題解けなかったら仕事もできていないはず」というラインはある気がする。
競プロだけでは養えない能力はたくさんある
たくさんある。
競プロは楽しいのか?
一部の楽しい人にとっては楽しい。
キャリアのために競プロを勉強・練習する価値があるか?
あるけど、それだけやっててもダメだと思う。
そんなものに数字で優劣をつけるべきか
参加者が「こんなのは所詮仮想の基準だ」と理解しているなら無害だし
それを忘れだしたらボウリングだってカラオケだって有害だよね。
答えの用意された問題ばかり解いててどうなる
それを自分なりに楽しめるひとはやればいいし、楽しくないならやらなければいい。
それで伸びる部分もあるし、伸びない部分もある。
競プロ楽しくないんだけど
他のことやったほうがいいと思う。
競プロめっちゃ楽しい
あんまり役に立つとか気にせず楽しめばいい。
競プロは有害か?
私生活に支障をきたすほどやってたら有害でしょう。
あと、もし初心者に「これだけやってれば大丈夫だ」と思わせてしまったらよくない。
プログラミング能力に1次元の優劣があるという考え方に染まるのもよくないし、
AtCoderのレートで人をバカにしたり不合理な差別をしたりするのもよくない。
プログラミング入門に適しているか?
自分で作りたいものが特にない人にとっては便利。
解答や第三者の解説記事や参考情報がたくさん落ちているので、変な迷子にならない。
他に自分で作りたいものがあるならそっちを頑張るのもいい。
学生が競プロをすると就活に有利か?
入りたい会社の種類や、その時の面接官の心持ちによる。
他の条件が変わらなければやってないよりはやってた方がいいでしょう。
企業側が求職者を競プロのレートで測るのは合理的か
初心者の場合
- やる気は買えると思う
- レートがそこそこ高ければポテンシャル高いはず
- 答えがある問題を解く能力だけ高くてもあんまり意味ないという点も大事
キャリア採用の場合
- もっと実践的なスキルや経験のほうが必要
- とはいえ基礎は大事
- もちろんキャリア採用だろうと採用後の成長は求めたいのでこういう考慮材料にはなる
- プログラミングが好きか
- 成長意欲があるか
- 伸びしろ
- 完全なる口だけ星人を見抜くのに有効な場合がある
競プロが凄い人はすごいのか?
野球だろうとサッカーだろうと、一つのことを頑張って上位数%に入れるほど成長した人はすごいよね的な意味では凄い。
Discussion