いとこに聞く!優秀なプログラマーの勉強法

超久々にいとこがうちに来た。家に来るのは20年ぶり?くらいかも。会ったのは15年ぶりくらいかも。ちなみに同い年です。

いとこはZopeのコミッターで僕よりもずっと優秀なプログラマーなので、優秀なプログラマーの勉強法についてひたすら聞いてみました。(あ、思い出話は一つもしなかった笑)

抽象化を学ぶ

業務アプリを書く上で最も重要なのは抽象化とのことです。抽象化によって汎用性やメンテナンス性の高いコードをじっくり書くのが自分の仕事だと言っていました。その勉強方法としていとこがやったこと2点。

  1. SICPをじっくりやる
  2. オープンソース(Zope)のコードを読む
SICPをじっくりやる

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

SICPの1章は手続きの抽象化について、2章ではデータの抽象化について書かれています。それが普通に勉強になったそうです。たしかに、Schemeでやっている抽象化って、Javaなんかと比べて「一段自由」な感じがしますから、学習材料として適切なのかもしれません。100Kgのベンチプレスを上げるトレーニングとして、120Kgのベンチプレスを途中まで上げるのが適切であるように、抽象化を学ぶのに一番高い抽象化の出来る言語で学ぶのは適切かと。

オープンソース(Zope)のコードを読む

抽象化を行うためには、その言語での抽象化のベストプラクティスを学ぶのが早い。となったときに、その言語で書かれた大きめのソフトウェアのコードを読むことでそれが分かるのではないか、ということです。彼の場合はそれはZopeでした。興味があったから読んだというよりは、業務上で使っていたのでその中身のコードを読んでいく内に自然と学んでいったそうです。抽象化といっても優れたものと駄目なものとあるので、優れたものに目を通すのが重要。