当たり前のことだけれども、ある『製品の品質』を上げるためには、作る為の『道具に対しての習熟』は必要。
大工が家を作るのに、大工道具に習熟するのは当然。
舞台の演出家が、演出に使う、照明や音響に習熟するのは当然。
ソフトウェアエンジニアにとっては、道具とは『プログラミング言語』であったり、『ライブラリ』であったりする。
この部分に習熟していないソフトウェアエンジニアは、ケースバイケースで自分の知り得る最適な解を出しはするが、最良でないケースが多いと思う。開発後期になって、あの時これを知っていれば…と思う事は良くない?
もちろん、ケースバイケースにそれなりの時間をかける事が出来れば最良の解を求めれるけど。スケジュールもあるし、結果も出さなければいけないし。それを万人に求めるのは無理ってもの。
ソフトウェア産業では無理だけど、何故他の業界でなら問題が無いのか?
それは、道具である『ライブラリ』の移り変わりが激しいからに他ならない。ほぼ全てのプロジェクトにおいて、『ライブラリ』は独自に用意される。つまり、リアルタイムに『道具』を作り、習熟するのがソフトウェア産業の特徴と言えるかもしれない。
例えば、今C#を利用しAutoCAD上で動くプログラムを作成している。
ここで使われているライブラリは、
- Microsoftが提供するC#のライブラリ
- AutoCADのライブラリ
- 独自に作成したプロジェクトのライブラリ
これ以外にも、C#でよく利用されるライブラリやOfficeのライブラリ等もある。道具は多く、習熟しても数年で捨てられる。継続的に習熟しなければならない。
逆に言えば、ライブラリの習熟を上手くできれば、これは企業の強みになるのは間違いない。
例えば、今のAutoCADプロジェクトにおいて、私はAutoCADのライブラリに習熟していない。プロジェクト参加時により習熟できる環境があれば、よりよい製品を効率よく創り出せると思う。
そこで提案。新たなプロジェクトで使ったことのないライブラリを使う場合は、一通りの機能を網羅し、まとめ上げていくのが良いのではないか?
- 一通りのクラスをチェックし、どのようなクラスがあるのか?
- それぞれのメンバをチェックし、どのような事が出来るのか?
- 実際にサンプルソースを作成し、利用して見る。
などなど、これだけでプロジェクト参加者は、ライブラリ習熟に対する敷居を下げることができるし、開発により専念する事ができる。また、Web上で公開することにより特定のクラスやメンバに対する議論の場を与えることもでき、知識の蓄積に役立つ。
さらに、企業の資産として蓄積していけば、他企業との競争力に繋がる。
その分、投資が必要なのは確かだけどね。生産性を高める為の一助にはなる。
2件のコメント
sato · 2007-05-17 17:44
その通りなんだけど、どういうまとめ方をするのがいいのかがやっかい。
少なくともSubversion+全文検索は必要そう。ソースを引用しつつコメントできるような機能があるとさらに嬉しいかなぁ。
koreyasu · 2007-05-17 21:22
具体的な話になると、社員育成した後に商用のソースを書かせるのはまだ怖いなという時に…
社内で使うツールを作ると言う選択肢の他に、ライブラリを調べてもらうというのも良いかなと。
書籍のスキャンがNGという事もわかったし、それの対応にもなる。とは思うわけですよ。
現在コメントは受け付けていません。