玄録

玄録は、秀玄舎の事例を通した、
実践研究の成果をご報告する不定更新の
ビジネスレポートです。

プログラミング生産性の個人差

プログラム構成力の高め方、見極め方

2004.12.10

  • Facebook
  • mixi
  • hatena

 前回は、プログラム構成力がどのように開発効率に影響するのかについて説明しましたが、今回は本シリーズの最後としてはこの能力を伸ばしたり判定したりするにはどうすれば良いかご報告します。

【システムベンダー向け】 いかに生産性を高めるか
~ソフトウェア会社にとって社員の生産性は組織の生産性=収益力につながります。~

 プログラム言語やプラットフォームは、参考書や資格を通して勉強し、実際に経験を積む事でスキルを延ばすことが出来ます。言語仕様や製品仕様を覚えたり理解すること、さらに理解した知識を活用することで開発効率を良くします。ただし、新しい技術や製品が次々と出てくるため、それに伴い必要に応じて別途勉強(経験)をする必要があります。非常に技術的な動向の変遷が早い業界であることから、継続的な投資対象であるといえます。

 一方、プログラム構成力の場合は、前回説明したように特定の仕様を覚えたり理解したりするものではありません。では、このプログラミング能力を伸ばす方法はどのようなものがあるでしょうか。

 まず、一般的な方法として、より高い能力の人によるソースレビューが有効です。品質の観点からだけでなく、教育的な観点からもプログラムソースに対して「分かりやすさ」「拡張性」「性能」の観点で他のメンバーにプログラムコードのレビューをしてもらい、指摘された問題を理解し、自分で修正することでプログラム構成力を伸ばすことができます。また、他人が記述したプログラム(参考書に出て繰るサンプルではなく、出来れば実際に開発で作成されたプログラム)を読んで、自分では普段考えつかない方法を見つけて参考にしたり、もっと良い方法を考えたりするのも構成力を養う良い方法です。ただし、文章力と同じように構成力には個人なセンスの差が付き物で、社員全員を同様に高いレベルに育成することは出来ないと考えたほうがよいでしょう。とはいえ、文章を推敲するのと同じで、プログラムをする時に自分が書いたプログラムが分かりやすいのか、もっと簡単にプログラムを組めないのか、拡張性を考えて作り直す等見直しをしていくことが大事です。最初はプログラミング速度が落ちるかもしれませんが、作業の手戻りが減るのは間違い無いですし、慣れてくれば前もってプログラム構成を考える力が身につきき、コーディングの速度も速くなります。

 会社としては、いろいろなプロジェクトに参加させ、経験を積ませるのはもちろん、その中で、自分で考える力(習慣)を付けさせるよう、意識的に指導すべきです。

【ユーザー会社向け】 いかに生産性を評価するか
~どんなに小額でも、ユーザー企業にとってシステム開発の発注は投資です。生産性を評価することで投資対効果を高めることができます。~

 一般に、システム投資のためにシステムベンダーに発注する場合に、個々のプログラマーの生産性を評価する機会はほとんどありません。ここでは、ベンダーを比較する際に、サンプリングでベンダーの生産性を判断するヒントをご報告しています。

 大規模なプロジェクトであればあるほど、プロジェクト全体の生産性はプログラマー個人から、プロジェクト管理(PM)のノウハウに依存するようになります。しかし、システムベンダーにおけるプログラミング生産性は、依然としてプロジェクトの生産性を左右する大きな要素であることに変わりはありません。多くのシステムベンダーが、ゼネコンのごとくプログラマーを外注しているのが現状ですが、ベンダー本体がこうした生産性に関する正しい認識をもっているかどうかを確認することは、パートナー選定の際に、非常に重要な基準であることは間違いないでしょう。

 プログラム構成力を見極めることは、言語やプラットフォームに関する知識や実績を判定するよりさらに難しい作業です。言語やプラットフォーム技術に関しては、資格や職務経歴を見れば最低限はわかります。しかし、プログラム構成力の場合はこれらを見ても必ずしも参考になりません。また、ユーザー側からプログラマーのスキルを計るために、面談時の質問の受け答えを参考にする事が多いようですが、面談では本や一般論的な知識で話をすることが多く決定的な判断材料にはなりません。実際に構成力を測るには、議事録作成などの課題を与えてみて、簡潔に必要なことがまとめられるかで判断することができます。その意味で、ビジネス上の文書における文章力は、プログラム構成力と近い能力だと判断できます。例えば「議事録:は、プログラムとは違いますが、段階的に構成を組み上げることが出来るか判断するために、物事を順序だてて考えて整理できる力、つまり会議の場での雑多な情報を分かりやすくまとめる事が出来れば、構成力があると推定することができます。