Link: I interviewed at six top companies in Silicon Valley in six days | Hacker News

via I interviewed at six top companies in Silicon Valley in six days | Hacker News

また HN が大企業コーディングクイズ問題で荒れていた。自分の見解は前に書いたが、この話はコーディングクイズを肯定する前提で書いた。HN のトップコメントはしかしアンチコーディングクイズで、しかもなんとなくわかってないなあ・・・と感じてしまった。

なお以下の話は自分の意見であって別に勤務先などの見解を反映していない。

コーディングクイズがアルゴリズムを書かせがちなのは、別に CS の知識的なものを問いたいわけではなく、プログラミングの筋肉みたいなものを知りたいからだ。プログラミングには筋力/体力みたいなものが存在する。それは綺麗な抽象化を考える力とかアルゴリズムの知識とかではなく、目の前の積み上がったミクロな複雑さの山を押しのけてズカズカと前に進んで結果を出す速度みたいなもの。

アルゴリズム類のコーディングには抽象化でごまかせないむき出しの難しさがあるので、体力を試すのには割と向いてる。

体力が導く「成果」はかならずしも最終的な成果ではなく、試行錯誤のマイルストンに近い。目の前に自明でない問題がある。ここでいう問題は原因不明のバグかもしれないし、API デザインみたいなものかもしれない。そこでガガガっと色々試して解空間を探索して良い答えを出す力が筋力。知識があるほどよい初期解を選べる。体力があるほど広い空間を探索できる。

そういう筋力を使わずにできる仕事、良い初期解の近傍で乗り切れる仕事はたくさんある。そういう仕事の多くでは、規模から生まれる複雑さがプログラミングの主要な、しばしば唯一の、敵である。一方で世の中には筋力がないと解決できない仕事もある。そして実際に筋力がある人の働きを目にしないと、世の中にそういうものがあることには気づけない。

筋肉質な仕事ぶりを目にすると、ああアーキテクトとか別にどうでもいいな、という気持ちになる。規模に頼らなくても意味のある成果を出せることがわかるから。

体力だけあって抽象化とかの技能がないとそれはそれでやがて破綻する。けれどテック大企業、というと一般化しすぎだけれど自分の勤務先とかはそういう筋力で解く姿勢を重く見ている気がする。表立ってそれが語られることはなく、表面的には規模の複雑さを扱うほうが偉くなれることになっているが、空気を流れる ethos は筋肉を志向している、気がする。それを端的にあらわしているのがたとえば Jeff Dean Facts のような subculture である。

そういう価値観は必ずしもいいことばかりではなく、わかりやすい欠点としては manliness や heroium に傾倒しがちで teamwork や inclusiveness とは相性が悪いなど副作用もある。良くも悪くもそういうものというだけで。昨今の diversity awareness の高まりから生まれた古い subculuture に対するカウンターにはその綱引きを見ることができる(例 1, 2)。大企業はでかいだけあって価値観も一枚岩でない。ただ採用の仕組みとかは早い段階に固まってしまいがちで、結果として proto culture が染み出すのだろう。

そして自分は後ろめたさを感じつつこうした古い価値観を一定程度 preach しており、だから冒頭のようなコメントを読むとため息ついちゃうんだろうな。Manliness が大事って話じゃなくて、ばばばっとコード書きたいなということね。

筋力がないのに筋力がある人のように働こうとすると、初期解近傍で妥協するかわりに時間をかけて広い解空間を探そうとして仕事が遅い人になってしまうのだった。困る。しかしちょろい仕事をぱぱっとやるとかマジもう興味ない。価値観の呪い。


しかし冒頭のコメントの人は抽象化が大事とかいいつつコーディング練習するヒマがあったら乗っかるフレームワーク考えるのに時間使いたいわとか言っていて、現代における抽象化というものを考えてしまうよなあ。