SSブログ

技術者のレベルとソフトウェア開発の難易度(8) [プログラマー現役続行]

技術者のレベルとソフトウェア開発の難易度(6)」で技術者のスキルレベルと開発ソフトウェアの難易度の表を掲載しています。

ソフトウェア開発における外部公開用APIの設計の難易度は、非常に高いです。機能を提供するだけでなく、不正な操作に対しても堅牢であり、使いやすく、誤った利用ができないように設計するのは容易ではありません。一方、機能は提供しているが、不正な操作に対して脆く、使いにくく、誤った利用が簡単にできてしまうようなAPIを初心者は作ってしまいます。

両者の成果には大きな差があり、その意味で外部公開用APIの設計の難易度は高いのです。仮に難易度を5(「技術者のレベルとソフトウェア開発の難易度(6)」を参照)とすると、スキルレベルが5以上の人でないと正しくできないはずです。

ところが現実の開発では、スキルレベルが2の人が担当してしまって、酷いAPIを設計してリリースしてしまうことがあります。そして、それが技術的負債となり、(そのソフトウェアが使用され続ける限り)企業はその負債を背負うことになります。

スキルレベルが5の人は、難易度5までであれば、何でもこなせてしまいます。たとえば、難易度としては2か3であるようなビルド環境の構築や継続的インテグレーションのためのツールの導入などもできるのです。

したがって、難易度3と5の仕事があり、スキルレベル2と5の人がそれぞれ居れば、仕事の割り当ては必然的に決まってしまいます。スキルレベル2の人が難易度3の仕事をして、スキルレベル5の人が難易度5の仕事をする割り当てです。

しかし、現実の開発では、スキルレベル5の人は年齢も高いので、若い人の育成を理由にして、逆の割り当てをしてしまったりします。あるいは、仕事の難易度が分かっていないために逆の割り当てをするのです。運が良ければ、スキルレベル5の人が最後には難易度5の仕事も片付けてしまうかもしれません。しかし、API設計などでは、残念ながらそのようなことは起きる確率は低いでしょう。

仕事の割り当てを間違えると、上手く短期間で終わるはずの開発が、遅れたり、技術的負債を残すことになったりします。