上の記事とは直接関係ないんだけど、ブコメを見てて思ったこと。
僕も以前は優秀なプログラマはみんな休日とかに趣味でプログラムを書いてると思ってたんだけど、最近仕事でいつも他の人のコード読んでレビューしたりデザインとかチームのスタイルとかにも意見を出しながら自分の仕事終わらせてる人に出会って考え方が変わった。その人に「やっぱ趣味でプログラム書いてたりするんですか?」て聞いたら「仕事だからやってるだけでこういうことをするのが好きなわけじゃない」って返された。
そのときに優秀な人みんなが趣味でそういうことをしてるわけじゃないんだって思った。
たぶんもともと優秀な人はどこにいっても通用する。その人はたまたまこの業界に入ったけど、おそらく広告業界に行っても商社に行っても不動産業界に行っても通用してたと思う。
なんで優秀な人はみんな趣味でプログラム書いてたりするって話が出てきたのか考えてみた。
一番最初に実際としてそういう人が多いのは事実だと思う。著名なエンジニアの人たちは趣味でOSS作ったりコミュニティで活躍してたりする。順番が逆か。趣味でOSS作ったりコミュニティで活躍してるから著名なエンジニアになった。
でもそれは僕たちが観測できてるのがそういう人たちだけだからであって別にそんなことしてなくても優秀な人はたくさんいると思う。
次に思い浮かんだのは、ただ単に僕たちの幻想なんだと思う。活躍してるエンジニアの人たちをみて「なんであの人はあんなに優秀なんだろう」、「どうやったら自分もあんなふうに活躍できるだろうか」って考えた時にきっと仕事以外にも趣味でプログラムを書いてるからだって思ってる。つまり、あの人たちみたいに自分も趣味でプログラム書いたりすればあんなふうに活躍できるっていう幻想。別に間違ってはいないと思うけど、それで活躍できるのは活動している特定のコミュニティやOSSプロジェクトの中だけだよきっと。もちろん、そもそもそういった活動に身を投じなければ有名になったりすることはできないんだけど。
優秀な人、いわゆるできる人とできない人の差ってなんだろうね。僕はHOWで終わるかWHYまで突き詰めるかだと思う。コード書くときもなんでそういう書き方するの?可読性が高いから?じゃ具体的にどこが可読性が高いのか説明できる?ってとこまで突き詰められるかどうか。そこで本に書いてあったとかあの人が言ってたとか返されると、本に書いてあったから?その本はなんでこの書き方だと可読性が高いって書いてあったの?可読性が高いってしか書かれてなかった?その本大丈夫?ってなる。
HOW、どうやるかで終わる人はこのパターンはこういうやり方、あのパターンはああいうやり方ってパターンごとで覚えるから新しいことに挑戦したときにどうやったらいいのか分からなくなってしまう。
WHY、なぜそうやるかまで突き詰める人はこのパターンだとこうって言われた時に「なぜこのパターンだとこういうやり方なのか」と考えることができる。そういう人は「別のパターンだとこうかな」と考えられる。HOWで終わってしまう人も「別のパターンだとどうするんだろう」と考えることはできるが原因や理由が分からないから新しいことに挑戦したときに問題の解決方法が分からない。パターンでしか解決できないから。
HOWで終わってしまう人が趣味でプログラム書いたりコミュニティに参加してもHOWで終わってしまうからそのプログラムのコード、そのコミュニティでのやり方しか覚えない。会社から外に出ると通用しないのと同じで特定のコミュニティから外に出ると通用しなくなる。
WHYまで突き詰める人はコード書くときもこう書いたら動くじゃなくて、なぜこう書くと動くのかや、コミュニティに参加するときもなぜこのコミュニティができたのか、このコミュニティの目的はなんなのかを考えられる。だからコミュニティで新しいことに挑戦するとき、問題が起こった時にそもそもの目的のためにはどうしたらいいかを考えられる。その能力はどこのコミュニティに入っても通用する。
優秀な人、できる人とできない人の差ってこのへんなんだと思う。
結局なところWHYまで突き詰める人は趣味でプログラムを書いていても書いていなくても優秀だしプログラマとしてもパターンごとの実装しかできない人よりは能力が高い。と僕は思ってる。
長くなったので要点をまとめると僕が言いたいことはこんな感じ。
・できるプログラマはみんな趣味でプログラム書いてるってのは僕たち凡人の幻想で趣味でプログラム書いてなくても優秀な人はいるよ。