技術的ということ。

現役プログラマーを辞めて、10年以上になるがまだ技術屋の感覚は残っている。技術屋というのはなかなか扱いにくい人種かもしれない。自分がそうだったから、良く分かるが。技術が分かった人間にはちゃんと対応するが、分からない人間には非常に冷たい。そこで少し技術屋がどのようにして相手が技術を理解しているのかを判断するのか考察してみた。つまり、その方法が分かれば、技術が分かっていなくても、技術屋さんがこちらが技術を理解していると思って貰えるのだ。これには、その技術の中で一番典型的な部分に関して、詳細に述べられる必要がある。つまり、全体の1%程度の重要な部分を知っていれば、その技術に関して知っていると思われるようである。但し、これが通用するのはせいぜい30分程度の会話。これ以上やると絶対ばれる。

例を引こう。例えば、Cを知っているかどうかを見極める方法。これはエンジニアリング・マネージャーとしてもエンジニアを雇用する際必要だったが、定石はポインターを知っているかどうかの質問。ポインターの問題点やポインターを使った簡単な例で大体、Cが分かっているかどうか分かる。その例だが、最新のEmbedded Magazine (http://www.embedded.com//showArticle.jhtml?articleID=192503623)に面白い記事が載っていて、ポインターを使わないCの使用方法という記事だが。その中に、Cのポインターによる演算が分かっているかというテストに使われるというCのコードの一部があった。出題者はこの問題は基本の基本でこれが出来ない奴は素人と変わらないと書いていた。もっとも、それでも大部分の人が正しく解答できないとも。知り合いのエンジニアと(彼は20年以上のキャリアの持ち主)と別個にやってみたら、元Cのプログラマーの私は全問正解だが、彼は2つ間違えて、落ち込んでいた。少し気分が良くなったのは言うまでもない。

static int table[10] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90};
........

void print
{
int *p, n;

p = table;
n = *p; printf("n = %d\n", n); //
n = *p++; printf("n = %d\n", n); //
n = *++p; printf("n = %d\n", n); //
n = *(p++); printf("n = %d\n", n);
n = (*p)++; printf("n = %d\n", n);
}

解答は実際にプログラムを書いて見てください。

Zeekay