Nothing ventured, nothing gained. – 一生役立つコンピュータスキル
ユーザビリティで有名なニールセン博士は、あるアプリケーション特有のスキルを学ぶよりも、一生使い続けられるスキルを身につけることが肝要だと説く。たとえば、Excelの使い方を完璧に覚えたとしても、Office 2007のリボンUIによって、せっかく覚えた操作法も覚えなおさなければいけない。
学校で覚えるべきなのは、「自分からは決して覚えようとしない物事の本質部分」である。
技術には概念的な部分と実装部分に分かれるが、どちらが本質かというと概念的な部分である。ただ、実装部分は学習しやすく、効果もすぐに解るため、覚えやすく、教えやすいので、実装部分が偏重され概念的な部分はおなざりにされる傾向がある。これは有償の技術トレーニングでも、社内のトレーニングや、コミュニティの勉強会、学習塾の授業、果ては進学校とされる高校の授業でも見られる傾向だ。
ただし、実装の技術というのは引用の部分に書かれているように、特定の環境、たとえばソフトウェアのバージョンや、特定のプログラミング言語に依存してしまうので、いわば揮発していく技術で、いつまでも手元に持っておくことができない技術だ。特にITの技術の場合にはイノベーションの加速度が非常に早いので、その揮発の度合いがとんでもなく早く進行する。また、この実装技術はしばしば全く新しく学習を始めなければならないことがある。
一方概念的な技術というのは不揮発な技術で蓄積していくことができる技術だ。新しい概念的な技術はそれまでの技術に対する批判や改善を目的に生まれてくるので、それまでに学習し、身につけた概念的な技術が無駄になることはない。たとえば、古典的なプログラミング技術・構造化プログラミング技法・モジュール指向・オブジェクト指向・アスペクト指向・DIというソフトウェア開発に関する概念的な技術というのはこの流れで一定の連続性を持った技術で、後方の技術は前方の技術を内包するか、もしくはそれを補うために存在している。つまり、概念的な技術は連続性と相互関連性を持つので、学習したことが決して無駄にならないのだ。また都合が悪いことに、どれだけ実装を学んでも概念的な技術が身につくとは言い切れない。概念的な技術は技術で、体系的に一度学習する必要がある。(身につかないとも言えないが、その場合でも何かが足りないと思う)
実装技術を学ばなければ当然動く物は作れないのだが、それが揮発する技術であることは覚えておいた方がいい。従って技術者が意識して投資すべきは概念的な技術な方である。実装をおざなりにしてもいけないが、実装偏重は痛いしっぺ返しを食うことになる。ようはバランスなのだが、そのバランスの重心は概念側に置いておいた方がいいと思うよ。
コメント
難しいことは難しくしておくべきかもしれない
Matzにっき(2007-06-04) :RubyよりPHPを好む初心者 本当…