神様なんて信じない僕らのために

神様なんて信じないブログです

2012-02-07

アジャイルが失敗する本当の理由

最初に結論を書いてしまえば「プロセスは銀の弾丸じゃないよ」ってこと。

そして、エンジニアだけがやるものじゃないんだろうね、ってこと。

 

最近というよりも、アジャイルという言葉はずっと以前から言われていて、

アジャイルソフトウェア開発宣言は2001年だし、

Scrumが生まれたのも1986年だ。

 

20年以上も多くのソフトウェア開発プロジェクトはプロセス改善を叫んだし、

実際にやってもきたけれども、

何故未だに建物を建てるようにソフトウェアを創れないんだろう?

 

これは自分がよく知る話。

 

「ソフトウェアの開発に変更はつきもので、かつエンジニアの力量によっても工数は大きく変化する」

というエンジニアの認識があったとき、こんな話がでることがある。

 

「なら最初からそれを織り込んだスケジュールを立てれば良いだけの話です」

原発東京スカイツリーのような巨大建造物でさえ、当初に立てたスケジュールに沿って建設されています」

「数十万キロ彼方の小惑星まで飛んで帰ってくる人工衛星でさえ、秒単位、分単位のスケジュールを立てて運航されています」

「どんなプロジェクトだって、事前には想定しきれない不具合や支障があるでしょうが、それを織り込んだスケジュールを立てて、皆がそれを運用しています」

 

確かにそうかもしれない。

でも、

なぜソフトウェアは建築物を建てるように構築できないんだろう?

なぜソフトウェアは秒単位、分単位で運行される衛星や列車のように運用できないんだろう?

 

答えはエンジニアの中にあって、エンジニアの外にはない。

だとしたら、どうやって伝えれば良いんだろう?

 

顧客を巻き込むプロセスは多くの場合、

これらの問題に答えをもたらしているし、

現実は多くの場合、顧客を巻き込めない。

だから、アジャイルは失敗する。

 

なので、

恐らく、ソフトウェア開発が劇的に改善することはきっとないだろう。

 

でも、それは技術によってではなく、人間の心によってだと思う。

だからこそ、今やれることがあるんじゃないかな、とは思っているところ。

2012-02-06

開発に必要な力は二つしかない

最近開発をしてきて開発者に重要だと思うのは、

・問題を発見する力

・問題を解決する力

の二つだと思っている。

実際にコードが綺麗とか、技術が卓越している、というのは個人の手腕であり、

持ちうるスキルではあるのだけれど、

それは「問題を解決する際に使われる力」だ。

そして、これには「コミュニケーション力」や「交渉力」、

「論理的思考」や、「選択肢の中から成否を見据える力」も含まれている。

 

そして、これを行うためには「問題を発見する力」が欠かせない。

「何が問題なのか?」を考えずにこれらの力をふるうことはできない。

いかな高い技術力があっても、それを使う場所や使うべき場面が解らなければ何の意味もない。

 

要するに重要なのは「問題を発見し、解決する力」だ。

これが出来れば職場も個人の問題も、何でも解決できる。

そして、組織が強いのは沢山の眼があること、沢山の思考があること。

要するに重要な力は2つに分割することができる。 

 

勿論、「解決できない問題」も存在するし、「そもそも問題とは何か?」ということもある。

でも、解決できる問題を見つけて解決していけば前に進むことはできる。

そうすれば、視界は広がって、もっと大きな問題に出会える。

基本的に問題を解決することは楽しいことばかりだ。

学校のテストのように答えが用意されている訳ではないし、

その答えが正しかったかが分かるのが10年後だったりもするけれども。

 

そして、文句ばかり言う人たちは本当には問題を発見できていない。

問題を発見するには、不平不満を述べるのではなく、

手を動かし口を動かし、様々な事に耳を傾ける必要があるからだ。

だから、問題を見つけたら愚痴る前に何とかしてみようと自戒する。

さぁて、もうちょい頑張らないとねえ。