現在のソフトウェア開発に必要だと思われるものを考えてみた。
このソフトウェア開発という前提は、お客さんの望むシステムを作る事を指す。

ソフトウェア開発に必要なものは以下の三点である。

・コミュニケーションを近くする者
・メンバーのスキルを計れる者
・仕事を作れる者

ここには、仕事を取る者や見積もる者等の外部要因を省いている。
これらの要因を解析してみる。


1.コミュニケーションを近くする者
現在のソフトウェア開発は依頼者と開発者の距離があまりに遠い。
簡単でマニュアルに沿っていれば作れる物なら大した問題にならないかもしれないが、複雑なソフトウェアを作るとなるとこれは大きな問題となる。
依頼者と開発者の距離は近づければ基本的に開発効率は上がり、遠ざければ下がる。

依頼者と開発者の間に居る者は風のようなものである。
依頼者と開発者が会話をする際に間に居るものが静かな風ならば声は届きやすい。
しかし、荒れ狂う嵐のような風ならば声は届きにくい。
嵐のような風でも、依頼者と開発者の間が近ければ辛うじて会話は成立するかもしれない。

この時の手段としてドキュメントを残す事は比較的有効な手段だと思う。
しかし、複雑な情報をドキュメントとして残す事は比較的難しい。
これを体系として残そうとする手段は多く開発されているが、この点を理解せずに手段だけを利用してしまう事が現在のソフトウェア開発の欠点である。

よく陥りがちな罠としてISOを導入しているから、意思の伝達は問題ないと考えてしまう事だ。
この点は色々誤解をされそうなので少し強めに書いておこう。

ISOにしても、PMBOKにしても全て体系を整えるための知識の集大成であり全てのソフトウェア開発に使えるものではない。
これらは有効に使ってこそ効果が発揮されるものであり、使用すれば必ず上手くいくものではない。
言ってしまえば唯の手段なのである。
目的は別のところにあり、目的によってはこれらの手段が実はまったく効果を発揮しない場合もある。

この点を理解したうえで、自分たちが行うソフトウェア開発に有効な手段を講じる必要がある。


2.メンバーのスキルを計れる者
ソフトウェア開発を行う際に重要なのはメンバーのスキルであり、その人々が持っている力である。
現在のソフトウェア開発は体系化するには未だに発展途上であり、属人性が高い。
まず、これを認識するべきである。

ベルトコンベアに乗ってくる物を誰でも加工できるようなものにはソフトウェア開発はまだなっていない。
今後もなる保障は無い。
かの有名なstrutsでさえ、誰でも扱えるものではなく個々の能力に大きく左右される。
Seaser2やRails等というテクノロジーも同様である。

重要なのは、今回のソフトウェア開発に必要なメンバーを選別できる能力である。
誰がどのような知識を有しているかを見極める力が必要である。
この点の難しいところは、どの戦略を取るかである。

例えば、先にテクノロジーを決めてそれに適したメンバーを集める場合は使用するテクノロジーを理解したうえでメンバーを見る力が必要になる。
逆になった場合は、メンバーに適したテクノロジーを選択する必要がある。

そして、メンバーの力を判断する資格はかなり少ない。
そうなると重要なのは、メンバーを集める者の眼になる。
この部分はメンバーの技術を計る手法を確立する必要があり、それが出来ない状況ならば人海戦術に頼るか人を見抜く専門化が必要となる。

現状は人海戦術を取る場合が多く、大抵のソフトウェア開発は無駄なコストを払っている。
マネジメントを行う際一番重要である人の選別が出来ていないのである。


3.仕事を作れる者
1と2の条件を満たしてこそ、仕事を作り出す事が出来る。
どのテクノロジーを使い誰にどの仕事をさせるかという事を決める。
簡単に言葉で表すなら「適材適所」に人を当てはめる事である。
しかし、これは言葉にすると短いが実践するには大変なスキルが必要になる。

少人数なら何とかなっても、大人数になると適材適所がかなりアバウトになり生産力が落ち、技術者にも不満が残る結果になる。
誰に何をさせるかという事は、非常に難しくこの部分が上手くいく場合はソフトウェア開発はほぼ成功するだろう。




これらを考えていくと、今後のソフトウェア開発の道筋が少し見えるかもしれない。
現在はこのように書いているが、今後もこのままと言う事は無いかもしれない。
今後は誰が作っても同じように出来るものが出来るかもしれない。
(現にCoCと言う考え方も生まれてきている。)

ソフトウェア開発という産業は急速に成長しているのだ。
ただし、それを扱えるもの/マネジメント出来る者がその速度に追いついていないと言う現実を認めていないだけなのだ。




なお、この記事を最後に毎日の更新を終了致します。
私事であるのですが、2008年2月17日に私の母が亡くなり大きなショックを受けています。
そのため、毎日の記事を書く事が出来ない程色々な私事に時間をとられております。

また、その時に気づいた事が毎日の記事を書くという作業が現在の自分にとって無駄な作業になりつつあると言う事です。
元々ブログを書く事によって頭を纏めていたつもりだったのですが、ブログを書かないと言う事もまた頭の中を纏める事である事に気づいたのです。

ここに色々書く事は出来ないのですが、私自身の行っていた事(毎日ブログを書く事)がここに書いている人海戦術に近い行動であると言う事を母に教わりました。
本当に大切な事は、人への真心であり私はそれを怠っておりました。
私は、母への真心が足りなかった事に気づきました。

ブログを書く事でも人への接し方でも、重要なのは人への真心です。
沢山書けば良いわけではありません。
沢山話せば良いわけではありません。
私はこの真心を少し育てていこうと思います。

同じ失敗をしないために・・・



このブログは当初私の愚痴から始まりました。
書きたいときに書きなぐり、日々思う事を書き連ねていくブログになっていったのです。
しかし、私が思っていたよりも多くの人々に読んでもらえるようになったため日々の愚痴はまたどこか別のブログを用意してそこに書いていき、ここには私の考えるソフトウェア開発や仕事の仕方を伝えてしていく形に変えようと思います。

ブログのタイトルを変えようかとも思ったのですが、私の本質は傲慢でありそれを戒める意味でも変えない事にしました。


今までブログを読んで頂きありがとうございます。
しばらく充電期間に入ります。

(再開は4月7日になります。四十九日を経てから再開いたします。)



最後に、母への感謝をここに示します。

「長い間、女手一つで私たちを育ててくれてありがとう。」






P.S.
土日に掲載している「新天地」と「自己紹介」はしばらく記事を溜めているため掲載は続きます。
なので、土日だけは相変わらず掲載いたしますので宜しくお願い致します。