地方エンジニアが感じる地方・中小企業での悩み

評価の基準

»

 昔と比較すると、いろいろなものが大きく変化してきていますが、開発の中で大きく変わったことの1つに、「1行で表す処理内容」があるのではないか、と最近感じます。

 非オープン系であればステップ数というかコードの行数が1つの目安であったこともありますが、ここ数年でこのコードの行数というものに対しての考え方が大きく変わってきたようにも思えます。

 以前は、1行で行う処理内容はできるだけ簡潔に、という風潮が強かったことと思います。個人でのプログラミングであれば、1行に複数の処理内容を記述するマルチステートメントも使われましたが、これはコードを見る相手に一定以上のレベルを求めるため、業務で開発を行う世界ではできるだけ利用しないようにルール化されていたところが多いのではないでしょうか。

 その後オブジェクト指向言語が増え、それにともない1つのメソッドに対しての行数に対して目安が設けられました。一画面に収まる程度でのコーディングを規約としているところも多いと思います。

 このオブジェクト指向言語が台頭したあたりから、1行で行うことができる処理量がそれまでとは比べものにならない程増えました。メソッドの戻り値やプロパティーの値から、さらにメソッドやプロパティを呼び出すロジックは、今では極々当たり前の記述となっています。

 さらに昨今では、匿名関数やLINQ、新しいものでは Reactive Extensions などが登場し、1行で行える処理量は増え、さらに複雑なことを行えるようになっています。

 もっと言えば、ここでいう1行というのは画面上での1行と関係は無くなっています。エディタ上では複数行に見えても、ブレークポイントを定義してみると1行だった、ということも多々あります。

 また反対に、まったくコーディングを行わずに処理を行う事も可能になっています。個人的に興味を持っている Workflow Foundation もそうですし、パラメータだけの設定でメンテナンスプログラムを作成するようなユーティリティも古くから存在しています。

 このように変化してきたことを踏まえると、プログラムやシステムを「コーディングの量」で判断することには、大して意味が存在していないでしょう。ライン数やステップ数では、コーディングの結果作り出したものの価値は計れないのです。

 そのような状態でステップ数等を何かしらの判定基準に利用することは、せいぜい労働時間、作業時間を計る1つの目安にしかなりえません。クラス数やアセンブリ数であっても同じで、判断材料として利用するにはとても相応しくないものなのです。

 他にも判断材料として用いられるものとして、「人月」についてはかなりの方が問題を含めていることを認識されていると思います。そしてそれを解決するベターな方法もまだ存在していないこともご理解されていると思います。

 しかし、実際には人月は物凄く基準として利用しやすく、ある種共通的な認識が出来上がっている土壌だと感じます。私は、開発側が利用者側に人月を用いて価格を示すことにはそれほど反対ではありません。これに変わる何かが見つかるまでは、人月を利用して構わないと思います。

 私が問題と感じているのは、企業内部での判断に人月的な思想だけを持ち込むことで、「何人月の作業を行ったのか」それだけで判断されることです。判断を行う際には、かけた時間量だけでは不足で、実際にはなんらかのレベルを示すようなものが、業界基準として必要なのではないでしょうか。ITSS や国家資格、民間資格等はそのために利用されるのが望ましいのではないか、と考えます。それに加えて実際の作業結果が重要になるのだと思います。

 ある人が 1カ月かけて作成できる量は、別の人にとっては 3 日で終わる量かもしれません。このような状態を正しく利用者に伝え、その上で判断されることは開発側にとっても利用者側にとっても、お互いに幸せな方向へ向かうことができるのではないでしょうか。もう少し業界内部での、開発者それぞれでの切磋琢磨は必要なのではないでしょうか。

 特定企業だけで通用する判定基準はあまり価値のあるものではないと思います。業界を統一する、何かしらの公的な判断基準が制定されることは、今後の私達の業界に必要不可欠なのではないか、そう私は考えます。やはり努力した分は評価されたいですし、明確に判断されるのであればそれに対しての努力も行いやすいのではないでしょうか。

Comment(3)

コメント

インドリ

お久しぶりです。
人月単価に替わるものとして、時間に関しては「イテレーション単位」と「ユーザーストーリー単位」があり、
価格に関して「ユーザーにとっての価値を算出する」(交渉と会計的に算出)のが最近の潮流だと思います。
私は2000年初頭にこれを考えていたのですが、漸く採用する会社が増えてきたようです。
これは商売としては当たり前の事なので、これからどんどん採用する会社が増えるでしょう。
この流れは止まらないと思います。

内製であれば「原価」の算出に[人月]使うのは妥当ですわね、プログラマ一人ひと月雇うのに必要な金(平均)に[人月]掛ければほとんどそのまま原価ですから。

- これを「売値」に用いるのはどぉよ? [人月]以外にモノサシないんか?
- ヘボと切れ者では[人月]に掛かる重みがちゃうよね。そこそこ納得できる重み基準欲しいね。

いうことですかねー。

行数(コーディング量)で価値が決まるてのも納得できんですわね。
同じ機能/性能であるなら小さくできたものが良いハズなのに。

いちばんの問題はエンジニアの「技量」を数値化できんてことですが。

Ahf

コメント有り難うございます。
返事が大変遅くなりまして申し訳ありません。

>価格に関して「ユーザーにとっての価値を算出する」(交渉と会計的に算出)
>のが最近の潮流だと思います。
(インドリさん)

なるほど、地方ではまだまだその流れは見えていないのですが、都心部もしくは本州ではそのように変化してきたのですね。できれば地方であっても同様に変化していってほしいと願います。

>いちばんの問題はエンジニアの「技量」を数値化できんてことですが。
(επιστημηさん)

はい、私もここが非常に難しい点だと感じます。
現存の方法論に色々思うところはありますが、まだその不満を満たす方法というのは考えられていないと思います。
言われるように、同じ機能や性能であればコンパクトに実装・設計できているもののほうが価値は高くあるべきだと思うのですが、そこまで踏みいった評価を行うことはほとんどの企業でも難しいことでしょうし。

非常に難しいですよね・・・。

コメントを投稿する