プログラマが知るべき97のこと/プログラマが持つべき3つのスキル
プログラマが持っておくべき基本的なスキルというのは何なのでしょうか。ここで言うスキルというのは、知識を知っている知っていないということではなく、ある作業を出来る出来ないという意味です。
プログラマが持っておくべきスキルというのはいろいろありますが、あえて3つあげるとすれば、(1)コードを読むスキル、(2)テストをするスキル、(3)デバッグをするスキル、だと考えます。
そして、このスキルは知識の獲得と違ってインターネットの情報を読むだけでは身につきません。実際に体を動かして試行錯誤をして、時には失敗をして獲得していかないといけないのです。残念ながら、それぞれについて体系的に記述した参考書もほとんどありません。大学でも教えてくれません。ソフトウェア開発の現場で経験を積むしかないのが現状です[1]。
野球のルールを知っていたとしても、誰もが上手にヒットを打つことが出来ないのです。いいバッターになるには、正しいトレーニングをして、試合で経験を積むしかないのです。
それでは、どのようにして、それぞれのスキルを身につけていけばいいのでしょうか。理想的には、職場に師匠となる人をみつけてその人の弟子になることです。しかし、現実には、そのようなことはなかなか難しいかと思います。そこでオープンソースソフトウェア(OSS)です。定番のOSSには師匠となるべきカリスマプログラマがいます。開発メーリングリストを購読すれば、ソフトウェアのバグや新機能の仕様について議論していることを見聞きできます。
開発メーリングリストで議論されていることはリアルな問題です。難しい問題もあれば簡単な問題もあるでしょう。その中から興味深いと思う問題に取り組んでみたらいかがでしょう。簡単そうなバグを1つ選んで試しにそれをデバッグしてみます。ひょっとしたら誰かが既にそのバグに対するパッチを書いているかもしれませんが、練習ですので気にしません。
開発環境を用意して、subversionやgitなどのレポジトリから最新版のソースコードをダウンロードします。コンパイル、ビルドします。そしてテスト環境を整えます。選んだ問題がバグの修正ならば、まず当該バグを再現するテストスクリプトなどを準備します。
デバッガなどを使って、期待する結果と実際の値の差分などを調査していきます。もし実際の値と期待する結果が異なるのであれば、なぜそのようになったかを実行を遡っていきます。当該コードの近辺をよく読んで理解していきます。
実際のバグを直すという練習は、コードを読むスキル、テストをするスキル、デバッグをするスキルをバランスよく訓練できます。オープンソースの製品であっても、仕事のソフトウェアであっても、プログラマとして必要なスキルを鍛えてくれます。
オープンソースの場合、見ず知らずの人とメールなどでやりとりする中で、徐々にコミュニティ独自の文化や慣習を理解します。そして、バグフィックスなどを通じてスキルを向上させコミュニケーションのいろはを習っていきます。いくつかのバグフィックスをしていけば、自分のスキルが向上するだけではなく、コミュニティにも受け入れられることでしょう[2]。
プログラマが持つべき3つのスキル、(1)コードを読むスキル、(2)テストをするスキル、(3)デバッグをするスキル、とその訓練の方法を紹介しました。