競技プログラミングとGoogle入社の話の要約
ちょっと長すぎるのでまとめたい。
競技プログラミング史上過去最大級にインパクトのあった転職記事
約1万1千文字
Lillianさん
東大の医学部から医師
AtCoderに4ヶ月間取り組む
この記事を読んだ者に対して競技プログラミングが過大評価されているのではないかという趣旨の記事
約2万文字
nucさん
筑駒出身
Lillianさんのアドバイザー
chokudaiさんの先輩
この記事に対するAtCoder社の反論記事
約6千文字
chokudaiさん
nucさんの後輩(筑駒出身)
AtCoder社の社長
それに対するnucさんのアンサー記事
この記事では主に2番目の記事の要旨をまとめる
章立て
教えるに至った背景
Google の技術面接
模擬面接当日
競技プログラミング
模擬面接
動機
最後に
Googleの技術面接の特徴
技術的な能力をシステマチックに見るため、とても対策しやすい
Googleに必要な英語能力
面接では意思疎通が取れる程度
仕事では帰国子女でも足りないくらい、働き始めると伸びる
ポリティカルコレクトネス
長幼の序や男尊女卑などの態度は禁忌
目の前の人物を決めつけないようにするのが安全
2週間前のLillianさん
知識がほとんどない
→自習で補ってもらう
「コーディング中の応答で知識を使う方法」を教える
これを知っていたらどう答えるかを聞き直す
コードを上から書いていた。
まともなエディタがないときのやりかた
競技プログラミング慣れの影響
コードの読み書きはできる
パースなどに弱い
競技プログラミングで問われにくいが実務で必要な理論
黎明期の競技プログラミング
2007頃。Googleに入る層とかなり近かった。
非理工系の先輩の言
研究者ならば、どのような分野であれ、プログラミングコンテストの初級中級くらいの問題は20分位で解けるべきだが、それ以上やりすぎてはいけない。情報系を大学で専攻しないと決めた以上、圧倒的な知識の差ができるが、それでも彼らが常識としていることを常識としなくてはならない。
現代の競技プログラミング
Googleに入るには造作もない、という状況ではない。
競技プログラミングを始めた人ができていたことが下の世代ではできなくなっていった。
競技プログラミングの質の向上(=ゲームとしての面白さ)による、技術的側面の排除が原因
求められるもの
オーダーの正しいアルゴリズムの選択
出題者の気持ちを読む能力
求められないもの
実装の重いアルゴリズム
定数倍の計算量
プログラミング言語の選択
競技プログラミングでは、差異が出にくいように作られている。
ライブラリーが提供するアルゴリズムへの理解
エスケープシーケンスへの理解
過去のコンテストには、アルゴリズムの本質でない部分で勝敗が決まるものあった。
入出力のオーバーヘッドなど
エンジニアリングとしては勉強になる。
例えるならば
新聞記事編集とクロスワードパズル
将棋と詰将棋よりは遠い、フェアリー詰将棋か
Lillianさんは、ゲームをゲームと認識しないままやりすぎていた。
模擬面接
何をどれくらい知っていないといけないのか
医師で例えると、「手を握ろうと思ってから握るまでの間に起きることの説明」
同僚の8,9割が知っていることを8,9割知っていること
同僚の間で、「出題ミスではない問題」だと言える問題でもある
実践的なコミュニケーション
ヤマをはるために6冊の本を選んだ
「応用情報技術者試験」が確認にちょうどいい
応用情報技術者試験の勉強をするとクイズになるのでよくない
本気の教育
数学科のゼミなどで大学四年生を教授が一対一で詰め続けると数学がわかるとは何かがようやくわかるようになる。
それまでは東大理学部数学科だと、学年の半分ほどしかわかっていない、他の旧帝だと1割ほど
一廉の人物が自分の仲間になるかもしれないと思って教育をする、莫大な常識が流れる。
その常識を横から掠め取るだけでも相当なもの
自分を育ててくれた人たちと、その人たちをどれくらい裏切ってきたか
模擬面接の動機
遊び
人生を変えるのは楽しい
信念
エンジニアは養殖できることの立証
対比される、天然のエンジニアとは
若い頃からエンジニアリングに触れている
そういった者が集まる場所に行ったり、勝手に育つ
中国やインドとの国力差
教育を受けたエンジニアがあまりにも少ない
Googleをみてもいない。米国の成長を牽引する企業の企業文化FAANG+Mの企業文化を知る人を増やすためにも育成が必要
海外で働ける・生活できる人材を増やす
エンジニア・研究者であれば英語が第一言語でなくてもなんとかなる
教育の格差を埋める
大学における教育と人間関係
筑駒の同期を見ると、学者になりたい者が(医師や法曹よりは難しく、運の要素もあるが)アラサーで准教授、助教授になっており、中学受験に比べ簡単に見える。
日本のアカデミアは多くの場所で競争がない
医学部は活気があるほう
人文社会系の教員は3割くらいは会話が成立しない(=わかっていて当然とされることがわかっていない)
人文社会系では数学科の4年生のような本気の教育は大学院からになってしまうが、指導教員に依存するため、教育されないこともある。
人間関係の薄さ
田舎初段になりがち
おかしなことをどんどん言い始める
狂ったことを止められる人間関係が必要
仲間とお茶をすることで止められる
家庭の教育
情報系の女性率の低さについて、実際に話を聞いた
大学院に行く選択肢がなかった
大学院に行くことが人生の選択肢にないことがある。
この世界について知りたいからという教育ではなく、日銭を得るために学ぶ
家庭の期待によって、家庭の考えるエリートに必要な修行をさせることがある。
教育の力について
京都帝国大学の学生周辺エピソード
田舎初段
元は将棋や囲碁の用語
正規の訓練を受けた人からは相手にされるほど強くないが、素人になら無双できるレベル
レベル5くらい、と筆者は表現する
学問に限らず、事務など色々なところで起こる
Googleはレベル10あれば通る可能性が出てきて、レベル30ぐらいなら余裕
ネットでは有名になれるレベル
最後に
間に合った理由
競技プログラミングをやり込んでいたのを止めた
本人の努力と真摯さ
筆者の狂気
別分野で一度教育を受けたことがある
Googleの面接
情報技術全体の一部なので容易に対策できる、
最低限がわかっているため、技術的に不可解な結論、決定になることがほとんどない。
基礎的な土台としては十分
社内のフレームワークや同僚たちとの雑談を経て社会に大きなインパクトを与える
情報科学の推薦書
常識の範囲はある程度体系化された学問になている
ACMやIEEE-CSのComputing Curricula 、学科のカリキュラムを参考
「作ってみた」「現実はこう」「理論的制限」の本を読むといい
交通ルールを例に取ると、
標識は歴史的経緯の集積の例でできているが、「理論的な制限」がある。
無人島で交通システムを「作ってみた」といった本を読み、現実で起きることを確認する。
-----
Chokudaiによる反論
事実関係の訂正はなさそう。
あと終わらせるは言い過ぎだよねって話。それはそう。
競技プログラミングは勉強に入ってもおかしくない
「Googleに入るための勉強」に、競技プログラミングがそれなりの割合(2~3割程度?)で入ってもおかしくない
AtCoderを4ヶ月やって青色になった人が、残り2週間で取り組む課題としての話なので、今回の話題
AtCoderで青(水色で十分?)程度のコーディングスキルは必要そう
コードが書けることは元記事でも評価されている
競技プログラミングは娯楽としての楽しみもある
ゲーム化したのではなく、ゲーム化させたのだという話。
事実関係として矛盾がなく、互いの捉え方次第だし、読者の捉え方も自由。
ただ、ゲームという視点がない読者に対して説明するのは大事
(chokudaiはずっとゲームだと言っているので、彼のツイート等を追う必要はある)
AtCoderが就職に役立つ理由の話
無理矢理元記事に当てはめるとするならば
社会で求められている知識は専門知識のみにあらず。
レベル5の教育を求めている企業はある。
といったところか
AtCoderの価値と優良誤認の回避の必要性
業務に寄ったコンテストの紹介
ちょくだいさん、ごめんなさい
解説
学生時代のバンドを終わらせる
競技プログラミングを終わらせるがパワーワードとして一人歩きしてしまった。
もちろんAtCoderを終わらせるという意味ではなかった。
学生時代に取り組んでいた、競技プログラミングというものに終止符を打つ、
すなわち、当時との変容を受け入れる、的な意味合い。
論点について
ちょくだいさんの文章、何を言っているかまったく読めないというか、全体として言いたいことはあるみたいなのだけれども、部分部分の整合性がないのではないでしょうか。局所的にころころ意見変わっているように思います。
記事に対する反論って感じになってないせいで論点がふわっふわの記事になってるけど
元記事が話題を散逸させたことにも原因が......。