継続的学習(1) [プログラマー現役続行]
原典を読む習慣
私自身は、継続的に学習する習慣を身に付けることが、ソフトウェアエンジニアとして重要であることを、繰り返し述べています。では、振り返ってみて、自分はどうだったのでしょうか。
1984年4月に就職して、7月初旬まで塚原研修所で泊まり込みの研修でした。配属後は、当時の厚木寮から海老名事業所まで会社のバスで通勤していてので、特に朝早く会社に行くということはありませんでした。今から考えると、やはり、この頃は、仕事をすることが精一杯の頃だと思います。
ただ、当時、担当する仕事は、新たに開発するワークステーションにXNS(Xerox Network Systems)を実装することでした。それで、英語で書かれたXNSプロトコル仕様書を仕事では読んでいました。この頃、基本的に「原典を読む」という習慣を身に付け始めたのかもしれません。Ethernetレベルから順次仕様書を読んでいきました。何らかの仕様に基づいて実装する場合には、原典となる仕様書は理解しておく必要があります。
翌年の1985年には、3270端末エミュレータの開発を指示されたので、3270データストリームの仕様書を購入して読み、エミュレータ開発を始めています。また、1987年頃ですが、BSD UnixのTCP/IPをATTのUnixへ移植する作業では、TCP/IP関連の仕様書(RFC)を、ほとんど読みました。
昔は、書籍も少なく、どうしても仕様を読むしかなかったのだと思います。しかし、そのおかげで原典となる仕様書を読む習慣を身に付け始めたのだと思います。
社会人30年を振り返ると、常に仕様書を読んできた訳ではありません。ある程度きちんと解説されている書籍があれば、書籍を先に読むことも多かったです。たとえば、Java言語に関しては、『Java言語仕様』は読んでいませんが、言語仕様もかなり詳しく解説されている『プログラミング言語Java』は、読んできました。もちろん、どうしても不明瞭な場合には、『Java言語仕様』を参照します。
一方で、原典を読んで理解できなくて挫折した本もあります。その代表例は、『The C++ Programming Language』です。まだ、C++を全く知らない1991年頃に読んだのですが、理解できなくて1度は挫折しています。しかし、1993年にはもう一度読み直したり、他の書籍を読んだりして、その後10年以上C++言語でマルチスレッドプログラミングを行っています。
初期のSolaris2.3上でのマルチスレッドプログラミングに関しては、POSIX Threadが登場する前で、資料としては、Solarisに付随してくるマニュアルだけが頼りでした。マルチスレッドに関する本もほとんどなかった時代です。
どちらにしても、きちんと解説されている原典とも言える書籍もしくは仕様書を常に読むように心がけてきたと思います。その意味で、いわゆる初心者本はほとんど読んだことはありません。逆に言えば、新たな技術を学ぶ場合には、きちんと書かれた原典とも言える書籍はどれかという視点で本を探します。本がなければ、仕様などをネットで探すことになります。たとえば、Go言語は、公式サイトにある英語のドキュメント類がやはり原典となります。
調べたい技術に関して解説されているサイトを見つけることが非常に簡単な時代です。しかし、仕事で使用している技術に関して、原典となる本や資料は、仕事をしながら少しずつでも読み進めるように継続的に学習することが重要だと思います。
(関連するプロジェクトの詳細は、こちら)
2015-02-16 08:38