■職場の問題点とその解決策 9 生産性の向上策 1  (No.478)

生産性を向上させることは,企業人にとっては大きな使命である。つまり生産性が上がらない状態が続いているようでは企業の成長はなく,衰退するばかりである。ところが,技術者の多くは,技術的な興味には関心が深いが,こと生産性となると無頓着な人が多い。若い担当者で仕事をしているときはそれでも十分だが,部下を持った中堅クラス以上ともなれば,生産性が向上しているかどうかにも大いに関心を持って欲しい。

  ソフトウェア開発での実態

ソフトウェア開発では,殆どのコストは人件費であり,如何に少ない工数で,目標とする機能を達成させるかに掛かっている。その指標とされているのが,時間当たりどれだけのプログラムが書けているか,即ちkloc/人・月(キロ・ライン)で示されている。これは,一人の人が1カ月働いて,どれだけのコード(ライン)が書けているかと云う指標である。これが高ければ,多くのコードが書けたことになり,生産性としては上がっていると見なされる。

初心者とベテラン,或いはリーダのように管理監督をしながら実務をする人と専任者では当然,値が違ってくる。生産性を云々する場合,全体の平均値で求められるので,そのプロジェクト自体が,以前,或いは標準値とどのように変化しているかで,生産性が上がっているか,下がっているのかを判断されるケースが多い。プロジェクトに携わっている管理者が多かったりすると,実務者に対する比率から当然この値は下がって生産性は上がっていないとみなされる。外部委託などする場合など,この管理指標で能率が上がっているか否かを見ることも多い。

確かに,実務者のレベルを判断したり,管理監督者の比率を観察したりするには,好都合な値であり,この値が異常に低いと何かが起きていると判断できる。ソフトウェアの人員確保にも,予測されるコード数から人員を割り出す目安とされることも多い。したがって,ソフトウェアの生産性を云々する場合,よく用いられている指標でもある。

そうした指標で管理されている実態を見ながら,果たしてこれが生産性の善し悪しを判断する指標で良いのだろうかと云う疑問が沸いてきた。つまり,目標の機能を達成するために,必要なコード数がある程度一定であれば,時間当たり多くコードを書けた方が生産性が上がっていると云えるのだが,ソフトウェアはコード数が少なくても,目標の機能を達成させることが可能で,むしろコード数が少なくて実現させた方が生産性は高い筈である。このことが考慮されていないのではないか,と云う疑問である。

ソフトウェア開発では如何に少ないコードで,目標の機能を達成した方がバグも少なく,工数を少なくでき,生産性は高い。これは明らかなことであるが,これを計る指標は,工数である。しかし,工数の目安は,目標の機能を分解し,それを実現するサブ機能に分解し,それらがどの位のコード数で実現できるかを推測し,それで目標工数を出し,必要人員を割り出す方法が採られている。如何に少ないコードで機能を実現するかは,技量に関わるものでなかなか推測ができない。

つまり,ソフトウェアの達人が創作するコード数と並の技術者が創作するコード数では,倍以上の開きがあることは珍しくない。この場合,前述したkloc/人・月の指標ではそれほど変わらないかも知れない。しかし,工数で見れば,明らかに達人の方が少ない工数で,目標の機能を実現することになる筈である。並の技術者は達人の2倍以上の工数が掛かることもある。これからは,明らかに,達人の方の生産性が高く優れている。

したがって,本来生産性の向上を云々する場合には,掛かる工数で比較するのが正解である。しかし,実際にはなかなか工数で比較することはなされていない。それは,達人が行って工数が少なかったのか,或いは手抜きして工数が少なかった(後のバグ対策で時間を要することになる)のかを判断するのが難しいからである。特に,外部委託など工数で契約している場合など,敢えて短い工数を選択しようとしないから生産性を工数で判断するのは難しい。

  工数目標の設定

ソフトウェア開発では,工数目標の設定は重要なことで,人件費として掛かるコストの原点であり,且つソフトウェア技術者を確保する上でも工数目標が基準となる。

各社,工数設定についてはいろいろな実績把握を基に,その算定方法を編み出している。一般的には,概算見積として,プロジェクトに対してシステム仕様書や機能仕様書を作成し,開発規模の見積をするが,前機種の実績データがある場合などは,それを基に,或いは全く初めてのものでは,予め定められている標準パラメータを用い,不確定なリスクに対する係数を加味するなどして算定される。

ただ,時間が経てばそれだけ不確定要素が少なくなり,見積精度は上がるが,如何に早く精度良い見積ができるか否かが,ソフトウェア技術としての組織の成熟度であり,過去のデータ蓄積や判断基準のパラメータなどを揃えることが重要である。この段階では,机上計算での概算であり,客先の変更のリスクなど諸々の変化への対応も考慮しておく必要があり,なかなか難しいものである。

基本的には,WBSなど詳細な作業分解をすることで工数見積はなされるが,経験則がかなりものを云う作業であり,ここでも実績データの蓄積の量と質が大きく影響する。また,不確定要素などに対するリスクをどの程度見積もるかも,工数設定の大きな要因で,要員計画でバッファーとして20%で見るか,30%で見るかで,これだけでも大きな工数差となってしまう。また,人員確保は重要な問題で,問題が起きてから増員を図ろうとしても困難なケースが多く,リーダとしては無難な方,つまりバッファーを多く見がちとなるため,トップの方からバッファーの制限を掛けないとなかなか工数削減には繋がらないのが実態である。

生産性を向上させることは永遠の課題である

地道な努力の積み重ねが生産性をアップさせる

 

[Reported by H.Nishimura 2016.05.23]


Copyright (C)2016  Hitoshi Nishimura