はてなキーワード: 競技プログラミングとは
手広くやってんだね
英会話に関してはVRChatが金をかけずに喋る機会を増やせるからおすすめしたい
https://www.youtube.com/watch?v=xW8xGjQpnIE
プログラミングは周りだと競技プログラミングをやってる人がちらほら居て、俺はよくわかんねえけどゲームのランクマッチ的な楽しみ方ができるのかも
https://qiita.com/mayocorn/items/4edff486428240864808
個人的にはブラウザの自動操作とか、ちょっと悪い方面に技術を使うと生活の中での実用性が実感できていいかも
上の3つに限らず、なんかどれも惜しい段階で止まってそう
俺さ、このシーンが名台詞(笑)として引用されるのずっと嫌いだったんだよ。
ガッツがあの場でイシドロに言いたかったのは「俺達の戦いはもう始まっちまってるんだからやるしかねえだろ」ってこと。
でも実社会において多くの人はまだまだ訓練を受け続ける時間があったり、そもそも戦場って呼ぶしか無いような場所に行く必要なんてない生活をしてる。
その中で「こんな状態で戦場に突っ込んでも死ぬだけだよなぁ……」って人に対して「達人にでもなってからか?」ってドヤ顔でレス返す奴らが本当に嫌いだった。
討ち死にするってわかりきってて、それでいろんな人巻き添えにして大惨事にしてどうすんだよと。
プログラミングにしたって創作活動にしたってあちこちで誰でも参加できるような大会やイベントが開かれてる。
そこで自分の力を試してから『戦場』に行けばいいじゃないかと。
一部の世代にいる『未経験でIT入ってブラックサヴァイヴで成長した』みたいなタイプの人とかの生き方はやっぱ基本的には「悪手」でたまたま成功した人が生存バイアス無視してそれを正解だったと言い張ってるだけに見えるんだよな。
たとえばITなら未経験でいきなり入っていく前に競技プログラミングの世界である程度揉まれておくことは出来るじゃん。
確かにそこで学べるものって仕事とはまた別の技術も多いんだけど、そもそもの基礎体力みたいな所は共通してるし、そこがどこまで足りてるのか、足りてないならどう鍛えるのかぐらいは『実戦』の前に学んでおけと思ってしまう。
「いきなり実戦に突っ込んでいって周りに迷惑かけまくりながらも必死に成長」が最適解みたいに言う人いるけど、完全に間違ってると思う。
そのやり方は大迷惑の元だよ。
まずは模擬戦を何度もやって手応えをつかんでからにした方がいい。
達人になるまで待つ必要はないけど、半人前にもなってないのに入っていっちゃいけない戦場は沢山有るよ。
そういうのに人を平気で送り込もうとする「気の長ぇ話だな?」名台詞引用がマジで俺は大嫌いだった。
本当に嫌いなんだよ。
そもそもイシドロってあの段階でも生存能力においては既にかなりの物を持ってるわけで……その前提を平気で無視するんだよね。
なんつーかあそこでガッツがああ言ってるのって「そんなにビビんなくても生き延びてそのうち強くなれるよ。俺の(鷹の団とかでの)経験上、お前みたいな奴はそうそう死なねえんだ」って気持ちっつーか評価があるわけじゃね?
俺は元ニートFラン卒だ。現職はソフトウェアエンジニアで収入はそこそこある。
親は元生活保護で、俺を養うために仕方がなく婚活をして結婚をした。
俺は中学を出て働く予定だったんだけど、労働への反骨精神があまりにも強すぎて高校に行くことになった。
高校を出たら働く事になっていて、危険物取扱者試験を取らさせられた。
ニートの時にあまりにもやることが無かったのでひたすらプログラミング(Webアプリ、OSS、競技プログラミング)をしていた。
それが親からすると勉強熱心に見えたようで、大学に行くことになった。
大学では勉強自体はしていたが、あまりにも怠惰すぎて必修を落としてしまい、1年留年した。
このあたりでようやく、自分が忌避していたのは肉体労働であり、ホワイトカラーの仕事は苦痛に感じないことが分かったので就職をした。
何もわからずに写経してreactのwebアプリ作ってるやつより相当まし。
https://paiza.jp やってみ。
他の競技プログラミングとかのサービスより簡単で就職しやすいから。
あとその IT 業務改善話を「なんとなくIT係みたいになって、~とか~とかvbaですけど自分で改善点を見つけてコード書いていろいろ業務改善してたんです。ITの方が好きだからITで、就職したいと思ってます。」とか言えばいけるから。
paiza は未経験採用のためのサービスもあるし、採用側もその前提だから怖くないぞ。先人たちのインタビューもあるし、読んでみたらどう?
https://paiza.jp/feedback/entry_interview_14
正直、paiza はプログラミング競技サービスとしては簡単すぎるけど、paiza の良いところは働くのに必要十分なスキル測定をして、先人のインタビューもたくさん掲載してて、就職しやすい仕組みを作ってるところがすごいんよ。
そこそこのWeb企業が基本的に経験者しか採用しないことについて、教育コストを他に転嫁しているとか、IT業界が先細りする行為で未来を潰しているみたいな言い方をされているときがある。
自分もこれについて課題意識はあって、ここ数年Web企業での採用活動と実際の業務に関わりながら、色々考えたので少しまとめてみたい。
ここではいわゆるキャリア採用ではなく、新卒採用やポテンシャル採用の話をしていると前置きしておく。
Web企業でよく求められるスキルは以下の3つだが、これを満たすような人材はもれなく経験者である。
この3つの条件とそれを満たす応募者について、この記事では以下の様に呼称する。
当然レベル4以上はそう多くなく、それを求める企業では応募者のほとんどは書類選考で落とされてしまう。それでも毎年雇いたいレベルの人が来る(来てもらえるように色々やっている)ような企業ではこの採用基準を下げる意味はないため、いわゆる「経験者しか採らない」と言われる状態になる。
一方で世の中はそんな人気企業ばかりではない。それらの企業ではこの基準を落とすのだろうか?自分の感覚としては「一部を諦める」みたいになっていると感じる。つまり、チーム開発の経験はないとか、自社では使ってない言語の経験しかないとか、コンピュータサイエンスはよく分からないなどを許容するという方式になっていそうだ。よってレベル3以上あたりを狙って、レベル2~4くらいのグラデーションで採用する。
よって、本当の未経験者がWeb企業を受けるためにはまず最低レベル2、できればレベル3に到達する必要がある。そこまでしてようやく「面接に到達する資格がある」という状態であり、おそらく有名な企業では軒並み一次面接で落とされてしまう。
一方で満たしている人は本当に全部満たした上でプラスアルファが多数あるみたいな状態で、多数の有名企業の内定を取って手のひらで転がして悩んでいる。
このような一部の外れ値のような人はどんどん内定を取るが最終的に選ぶのは一社なので、それ以外の企業は内定辞退され辞退率が上がる。すると「それなりに合格は出しているのに人は足りない」みたいな状況になってしまう。
自分は応募者に基本的にレベル4以上を求めている。これは教育に対して年単位で割いているほどの余裕がなく、教育を施しても難しい問題を解決する能力が身につかない可能性のある人を採用段階で落とすことで「当たりを引く確率を上げる」ためである(誤解の無いように言っておくと、単に既にできる人は更に色々と(しかも早く)できるようになる可能性が高いというだけで、レベル4未満は絶対ダメとかそういう話ではない)。
今の会社では新卒であっても入社後半年もすれば手取り足取り教える段階ではなく、社内で自走していけるようになっていると感じる。
これが健全でないと言われればそうであろうと思う。
コンピュータの世界は恐ろしいほどに親の資本力に左右される。レベル4以上の人は早ければ中高生の頃からコンピュータと関わりがあり(自分専用のPCがある、部活動で触る、地域の習い事で……etc)、更に大学に進学して関連分野を学んでいる。これを親の資本力と関わりないと言うのは難しい。
更に地方よりも都会の方が、コミュニティの発達においても、そこに集まってくる人材のレベルについても圧倒的に勝ると学生時代に感じていた。これも当然都心に住居を構える/一人暮らしさせられる親の資本力とは切っても切れない関係にあるだろう。
レベル2くらいに到達することは全くの未経験からでも十分可能である。例えばJava・JavaScript・PHP・Ruby……なんでもいいので一つ選んでちゃんと勉強し、いくつもプロダクトを作ってみればよい。現代ではこれはPCが一台あればできる。動画講座も安価で手に入るし、大抵のことは検索すれば出てくるし、Twitterにいるエンジニアはみんな教えたがりだし、ChatGPTだってある。PC自体もそんな高価な物ではなく、中古で買えるやっすいThinkPadで十分できる。
しかしレベル2~レベル4までの間の壁があまりにも高い。コンピュータサイエンスの広範な知識を身につけるには基本的に大学に行くのが一番コスパが良いと思っているが、誰しもが大学に通える経済力を持つわけではない。チーム開発はやはりどこかのコミュニティに参入できないと難しい。手っ取り早いのは企業のバイトで雇われることだが、これは鶏と卵問題だ。
本来ここの教育は企業が担うべきではなかったか?そういう意識が学生時代から漠然と自分の中にあった。これをやらずに、レベル4以上しか採用しませんというのは他のどこかに教育コストを押し付けていたり、更なる格差拡大に繋がっているのではないかという後ろめたさを感じていた。
企業に入ってもまだしばらくは上記の意識を引きずっていたが、最近は別の考えになってきつつある。
まず、Web企業の使う技術は割とオープンになっていることが多く、隠すインセンティブがあまりないため、企業間での教育はおそらくかなり共通化できる。企業内に囲い込んでから教育を施す意味があまりなく、入る前から知っているという人も多い(Web企業の研修が知っていることばかりでつまらないと思った人も多いのでは無いか)。
これを実現する一つの手段として、入社前の広い母集団に対して何かしらの形で援助を行っていることが多い。例えば以下の様なものだ。
これらは広義の教育であると考え始めた。それらの中で企業はスポンサーセッションなどを通して採用枠をアピールするし、実際それ経由で就職する人も居る。
もちろん支援企業に就職しない人の方が多いが、最終的にどこかWeb企業に入ってくれるなら、これはWeb業界全体で人材教育を行っていると言えないだろうか。
次に、大変残念な現状として「学生時代から触れているのにいまいち地力が伸びていない人」とか「そもそも触れていない人」がその後ぐっと伸びるという事例はかなりレアだと感じる。つまり、未経験ですが頑張りたいです!という人を雇っても伸びず、「これくらいやっています」という人は更に伸びるという(ある意味当たり前の)現実がそこにある。
故に先に挙げた広い範囲での教育を進めていくと、選考よりも前の段階でたくさんの機会をどんどん与えていくことになり、自然と「やったがあまりうまく行かなかった人」とか「機会はあったがやらなかった人」がどんどん可視化されていく。すると選考の段階では今後も投資の価値がある可能性の高い人材が自ずと絞れてしまい、経験者のみが採用されていく状態になるのではないだろうか。
自分はこういったことを考えているうちに、積極的に未経験を雇って教育するよりも、選考よりずっと前の段階から様々な教育機会を提供していく方がお互いにとって幸せなのではないだろうかと思うようになった。
学生は自分の興味ある方向にスキルを伸ばしてそれがマッチする企業を選べば良いし、企業はある程度既存社員を使った教育コストを下げつつ優秀な社員を雇えるようになる。そもそも選考前の段階でエンジニアリング楽しくないなと思う人は素直に向いていないので、参入するのを辞めたほうがよい。
さっき言ったような教育への投資はまだまだ経済的に豊かでない層に届きづらい現実があるように感じている。
実際に自分が大学院時代に奨学金を探すと、地方メーカーが自社への就職を前提に出している奨学金などが多く、国から借りる以外にはあまり選択肢がなかった。
もっと広く機会を提供できると良いなと思っているし、奨学金とかは(下手な条件を付けなければ)かなりフラットな教育への投資であると思うので、企業が給付型奨学金を実施することに対してもっと何らかのインセンティブを付けられないだろうか。
また、イベントやコミュニティはどうしても都心に偏りがちで、地方では開催されなかったりWeb企業の影が薄かったりする。これも年に1回とか2回とかでいいので地方のコミュニティと何かやって、細々とした縁を持てるようにしていけないだろうか。
競技プログラミング上達法」の解説をさせて頂きました。今回の記事はリンク先が非常に豊富でしたので超長文になってしまいましたが最後まで読んで頂ければ幸いです。皆様の学習の参考になればうれしく思います。さて、このエントリで私が考えたところ、プログラマーはやはり他の職業とどのような差別化を図らないといけないのか?ということです。一見、そういう職業は全て世の中に存在しないように思えるかもしれませんが、実はそうでは