2016年07月06日

開発能力の構造


初めての方はこちらを「はじめに

タイトルは開発能力ですが実際は開発に限らない話しになります。
能力の向上をどのように行うべきなのかを構造を示す事で明らかにしたいと思います。

能力と才能


ここで言う能力という言葉が一般的な使い方と少し違う可能性があります。また、もしかしたら一般的にも誤解があるかもしれないので、まず能力という言葉を明確にしておきたいと思います。
ここで言う能力というのは機械の能力と言う時と同じ意味です。例えば「一時間に100個生産できる能力」というような具合です。単純にどれ位の成果を出力できるかを表すという事です。なので一時間に200個生産できれば能力は倍という事になります。

ここで明確にしておきたいポイントは能力を人に使った場合に、いわゆる才能とは違うという事です。
才能は言うなれば持って生まれた能力と言えます。能力自体は出力される結果で表わされるだけなので、それが才能に依ろうが努力に依ろうが何に依ろうが関係ありません。能力が低いと言うとしばしばもう変えられない烙印を押す事のように誤解する人が居ます。しかし今言ったように能力は出力結果というだけの話なので不変的な物でも何でもありません。幾らでも変わります。むしろ一度獲得した能力を失うという事はあまりないですから基本的には時間と共に向上して行きます。例えば未経験の新人は能力が低くてベテランは能力が高いという事です。なので仮に能力が低いと言ったとしてもそれは「今は」という事に過ぎません。
この辺が人に対して能力という単語を使った場合に才能と混同して誤解されやすいところです。

厳密に言うと出力結果と言っても一回毎の結果を指している訳ではありません。人の場合は一回の結果は諸々の条件によって変動しますから。ですから結果を出す「力」という事になります。期待できる出力結果と言えるかもしれません。例えば走高跳で1m60cmが自身の記録だとしたら、その高さは期待できる訳です。しかしコンディションによっては1m50cmかもしれません。そういう意味です。

構造


ここで扱う能力は個人または集団のどちらでも構いません。基本的には同じです。より高い成果を求めようとしたらより能力を上げる必要があります。従って組織の成果として「常に日程が遅れて残業が多い」「品質が悪くてトラブル続き」などの状態からそれらを解消したより高い状態の成果を得ようとしたら、組織の能力を向上させる必要があるという事になります。

能力の構造というのは以下の様になっていると考えています。
53N014_001.jpg
それぞれを簡単に説明すると、
人:まさしく人です。人の持つ能力です。
機械:一般的な意味での機械です。人に代わって自動的に処理してくれるものという意味です。ソフトウェア開発の場合は各種ツール類など機械自身も主にソフトウェアになります。
ルール:そのままです。マニュアル等で定めたルールです。

この図は能力=出力する成果の量はこれらの積み上げによる全体の高さだという意味になります。全体の高さが高い程超えられるハードル(課題)の高さもより高くなるという事になります。大事なのはトータルでの高さです。
次にトータルでの高さを上げる為に三つの要素にどの様にアプローチしてそれぞれを上げて行くべきなのかを論じたいと思います。


自分が考える人の能力を大きく左右する四つの要素について説明します。

1.機能

一般的に適切な言葉が見つからなくてとりあえず機能としました。
一般的にスキル、技術、知識や場合によっては能力と言われるものです。仕事を通して目に見える形で身に付く具体的な能力です。ソフトウェア開発においては習得した言語だとか特定の技術領域に対する知識等です。しかしそれ以外にもコミュニケーション能力だとかプレゼン力だとかあらゆる種類のものがあります。自分的にはそれら全てを含めて仕事に必要な「機能」というイメージがしっくりきます。

2.思考

人はそれぞれ考え方、発想にパターンや傾向があるのが一般的だと思います。例えばとりあえず進めたい人はいつもとりあえず進めたがります。逆にじっくり考えてから始めたい人はいつもじっくり考えてから始めたがります。ところが実際に発生する事柄には反射的に判断しなければならないような事もありますし、急がなければならない状況でも慌てずにしっかり検討した上でなければ取り返しのつかなくなる事もあります。しかし先程述べた様に発想に傾向を持っていると、それぞれ性質の異なる事柄に器用に切り替えて発想するという事が難しくなります。つまり対処すべき事柄と思考パターンにミスマッチがあるという事になります。それが解消できてベストマッチになれば当然より高い能力が期待できます。ただし残念ながらこの思考の特性というのは変えるのは中々難しいと思われます。

3.心理

人間は感情の動物なので気持ちによって発揮できる能力が大きく変わるのは誰しも経験している事ではないでしょうか。能力に影響する心理的な要素には色々な種類があると思います。例えば「好きこそ物の上手なれ」という諺は好きという気持ちが高い能力に結びつく事を表していますし、たとえ好きでは無くても強い責任感によって初めて成し遂げられる事もあるでしょう。また「みんなの為」という公の心による犠牲的精神等もあるかもしれません。他にも色々あると思いますが、いずれにせよそれら人の気持ち、意識を変えるという事は最も難しい事の一つだと言えます。

4.時間

最後に時間です。時間と言うのは作業時間という意味です。
つまり上の三つの能力が何も変わらなかったとしても、一日の作業時間を増やせば一日あたりの成果物の量は増えるので一日あたりの能力としては向上する事になります。期間は別に一日ではなくとも、例えば休みだった日曜日を作業するようになれば週単位での能力が向上するという事になります。簡単に言えば長時間働けば成果も多くなるという単純な話しです。

こうして見渡すと、1の機能を向上させるには教育として時間もパワーも掛けないと出来ないので中々大変です。2の思考を変える事はもっと大変です。人は中々自分の殻を破れないものです。そうなると勢い精神論(3.心理)や長時間労働(4.時間)に頼りたくなります。3や4は必要な事ですがそれがメインの施策になってしまっていたら明らかに間違いです。個人としても組織としても人の能力を向上させる為には明らかに1の機能つまり教育にパワーをかける事がメインです。実生活を例えに考えれば、人を成長させるのにもし学校というものが無く「がんばれ」とか「やればできる」といった掛声だけが国の施策だったとしたらどうでしょうか?
ちょっと考えられないですね。
そういう掛け声は普段は使わずいざという時の為にとっておくべきものでしょう。
それと2の思考についても広い意味では教育ですが、そういう教育を成し得るのはごく一部の限りられた人間だけだと考えておいた方が無難でしょう。

機械


ソフトウェア開発の場合もハード的な機械というものは存在しますがやはりメインはソフトウェアなのでソフトウェアに絞って説明したいと思います。
これはお金が許す限りあればあっただけ基本的には能力が上がります。現実的には予算は限られているのでどの様なツールを導入すると効率が良いのかを検討する必要があります。なるべく汎用的で人の手を煩わさいようなものにしたい訳ですがそうなると高機能で高価なものになる事もあります。すると結局導入しないままだったりします。しかし自分達で工夫するとはるかに安い投資(少しのパワー)で結構役に立つものが作れたりします。また自分達で作ると自分達の事情に合わせてカスタマイズが出来るというメリットもあります。

実は本物の機械がある工場の生産現場でも同じ様な事情があるそうです。セル生産方式という従来の流れ作業に比べて格段に生産性を上げる方式を発案した山田日登志さんという生産管理のスペシャリストの方が述べられていた事なのですが。自動化する機械というのはちょっとしたものでも一千万円単位になったりします。大企業ならばそういった設備投資は積極的に出来るかもしれませんが中小企業となると中々手が出ない場合もあります。そういった場合でも自分達の現場に合った自分達なりの工夫をしてちょっとした機械を作る事で同等の効果を発揮出来る事が良くあるそうです。一千万円以上する機械相当の事が数十万円で出来たりするそうです。
ソフトウェアの場合は尚更に思えます。何故なら膨大な機能の組み合わせであるソフトウェアは自分達の要求に本当に合う物かどうかを見極めるのは難しいからです。導入したものの結局使い物にならなかった等という話しは良く聞きます。また自分達の要求自身も自分達の成長と共に変化して行きます。
そういった意味では思った以上に自分達でツールを作るという事には意味があると思います。

ルール


ここではより広い意味で「何か定義した事」全てをシンボリックに表す単語だと捉えてください。例えば手順書だとか手引書みたいなものはルールと言うよりは説明の場合も多いですが、そういったものも含んだ、人が定めたもの全てという意味です。能力の「人」は人の中に内在しているものですがある意味この「ルール」は人の能力を主に文書という形で外に出したものとも言えます。従って組織にとっては人の枠を越えた重要な資産に成り得ます。

自分達の行動を変えるという事は結局は何かを規定する事に帰着すると言えます。規定したものに従う事で行動が変わるという原理です。一般的にも開発能力の向上には物事を規定するという事は欠かせません。例えばISO9001では品質マニュアルという自分達が従うべきルールを作る事が求められます。CMMにしてもプロセス定義という形で自分たちの行動を規定する事が重要なポイントになります。

ルールは文書にするのが基本ですがツールの仕様として実現する事もできます。文書の場合は守られない場合の事を考える必要がありますが、ツールの仕様として盛り込んでしまうと自動的に守られるのでより効果的です。例えば何かに対してコード体系を定めたとして、文書で「コードはこの様に振ってください」としても運用している間にどうしても間違いが発生します。しかしそのルールで発番してくれるツールがあれば間違いは無くなります。

取り組む方向性


人以外の部分、つまり機械とルールを併せた部分をここではシステムと呼びたいと思います。
そうすると人が生み出す成果というのは人自身とシステムの共同作業によって生み出されると言えます。能力を向上させるためには人とシステムの両方の能力を向上させるべきですが、もしどちらかを選ばざるを得ないという状況ならば、先ずはシステムに注力すべきだと思います。なぜなら人間の性質というのはばらつくのが基本的な特性です。教育によって向上する能力にも個人差がありばらつきます。また教育には長い時間がかかります。効率という意味では投資効果が見通しづらいという事になります。それに比べてシステムは投資したらしただけバージョンアップして効果が望めます。また個人に依らず誰でもが恩恵を受けられるという点も大きなポイントです。つまり極端に言えば以下の図の様に人側の能力が変わらないとしてもシステムの能力が向上して行けば全員の能力が向上して行く事になります。
53N014_002.jpg
ただしシステムを築いて行くという事は簡単な事ではありません。
故にこのブログで説明して行く事も如何にしてシステムという土台を築いて成長させていくかという話しが主なものになります。

一覧


メニュー


記事を広める



posted by 善 at 19:43 | Comment(0) | TrackBack(0) | 全般 | このブログの読者になる | 更新情報をチェックする
スポンサーリンク
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック