川村渇真の「知性の泉」

浮遊思考記録−2001年05月


●2001年05月28日

出題する価値のなさそうな試験問題

 世の中には様々な資格試験があって、数多くの試験問題が作られている。ソフトウェア関連なら、情報処理試験のように該当分野を広く取り上げるものだけでなく、SunのJava、ORACLEのRDBMSのような特定の技術に関わるものまである。
 これらの試験問題を見るたびに思うのは、出す価値があまりない問題が意外に多く目に付くことだ。その技術を実務で使っているとき、知らなくても困らない知識まで取り上げて、試験に出している。
 たとえば、プログラミング言語に関する試験なら、普段使わないような変数名がいくつも出てきて、変数名としてどれが正しいか判断させる問題が挙げられる。当然ながら、変数として許される文字やルールを細かく知らなければ正解できない。しかし、実務でプログラミングするときは、英数字やアンダースコアのような一般的な文字しか使わず、他にどんな文字が使えるかなんて気にしない。知らなくても困らないのだ。それでも試験に出るとなると、合格するためには覚えなければならず、無駄な勉強を求められる。
 同様に、演算子の優先順位なども、細かくは覚えていない。すべて括弧で囲んで、演算する順番を強制的に指定すれば、知らなくても済むからだ。このような形で作ると、演算子の優先順位を間違って覚えていたとしても、正しく動作するプログラムに仕上がる。自分の記憶が常に正しいとは限らないので、それに依存して作るのを避けるのが、より確実な作り方だからだ。
 意地の悪い出題者になると、わざと引っかかりそうな落とし穴を用意して、試験問題に盛り込みたがる。実務での問題解決とかけ離れた、意地悪な落とし穴を使うことが多い。このタイプの試験問題では、知識や能力ではなく、引っかかるかどうかを調べているのに等しい。こうした試験問題は、大学受験などの試験に多く、本来の目的から逸脱している。ただ差を付けるだけが目的の試験問題で、実務から見たら価値はない。
 実務で使う開発ツールに目を向けると、最近では、プログラミング作業をかなり親切に支援してくれる。クラスやメソッドの名前は最初の数文字だけ入力すれば良いし、メソッドのパラメータも入力位置に表示してくれる。暗記する必要がないので楽だし、間違った暗記内容で困ることは少ない。さらには、コンパイラのメッセージは親切になり、エラーの原因が調べやすくなった。
 また、実務で必要なのは、プログラミング言語に関する知識だけでない。将来を見越した構造に設計したり、適切にテストしたりなど、プログラミング言語以外の能力が求められる。習得すべき能力が増えているため、手を抜ける点はいくらでも手を抜く。細かな点を暗記しなくても、適切にプログラミングできる方法を習得するわけだ。プログラミングに関してなら、知らなくても困らない細かな知識よりも、役割が分かりやすい変数名の付け方とか、エラー処理を上手に組み込むといった点に、力を入れたほうがよい。その方が、仕事の質を向上できるからだ。
 こうした実情を理解できれば、試験問題の作り方も変わってくる。実務で知らなくてもあまり困らない知識は、試験問題に取り上げない。それよりも、より良く設計できるような能力が身に付いているかを、試験問題で調べるべきである。使わない知識ではなく、設計能力を持っているかを重視したい。
 悪い試験問題を出さないためには、試験問題で取り上げた知識や能力が、実務で本当に必要かどうかを考えてみるとよい。こうした視点ですべての試験問題を見直すと、悪い問題を排除でき、受験者に無駄な暗記を求めなくて済む。
 別な改良案として、プログラミング言語仕様などの資料を一緒に用意し、調べながら回答させる方法もある。こうすれば、暗記してない箇所を調べられるため、実務に近い状態で受験できる。他の面でも、いろいろな工夫が可能だろう。
 以上のような試験問題の特徴は、ソフトウェアに限ったことではない。他の分野の試験問題でも、似たようなものである。試験問題の内容が実務とかけ離れているため、受験のためだけに勉強することが多いのは、どの分野でもよく耳にする。そんな指摘を受けないように、試験問題を作成する側の人は、作り方をぜひとも改良してもらいたい。


下の飾り