ソフトウェア開発プロジェクトをとりまく6つの誤解〜プログラミングを経験しないとわからないこと

こちらの記事が、ただのエンジニア側のあるあるネタで終わってしまうのは本意ではないので、この記事で少し補足しようと思います。

まず結論から。ソフトウェア開発の関係者がプログラミング経験がないからといって、無駄な作業や無茶な計画が立てられるのは双方にとって不幸なので、プログラミング経験のある本当のプロならば、その特性について、きちんと説明をして、そもそもから理解をしてもらい、お互いにとってハッピーなソフトウェア開発をしましょう。ということです。

Bullhorn for Mideast PeaceBullhorn for Mideast Peace / ItzaFineDay

ソフトウェア開発の世界において、関係者のソフトウェアの特性に対する理解が足りなかったり、間違った認識があったりすることで、そのプロジェクトの誰もが不幸になったり、無駄なことをしてしまったり、ということが起きているように感じています。

その例えば、を書いたのが、先日の記事です。お互いの認識が間違っていることで、エンジニアが大変になるだけでなく、お客様にとっても、メンテナンスの出来ない不幸なソフトウェアが手に入るというのは、とても残念なことです。理解がないというだけでお互いに不幸になっています。

そうした認識違いや理解不足は、ソフトウェア開発においてプログラミング経験の有無が大きく影響しているのではないかと思っています。つまり、ソフトウェア開発というものは、本質的にわかりにくいものであるということです。

だからといって、すべての関係者にプログラミング経験をしろという訳ではありませんし、プログラミング経験がなく、わからない人がソフトウェア開発を依頼してはいけないと言ってる訳でもありません。

プログラミング経験がなければ本質的にわかりにくいものであるからこそ、それを伝える努力もしないで「あいつらは、わかってない」と聞こえないところで言うのでなく、きちんと日本語で伝える努力をすべきだろうと思うのです。

もし認識の違いがあって、それによってお客様がマズいソフトウェアを手に入れることになって、結果的に被害を被るならば、それを黙っていて伝えずにいることの方がフェアではありません。

ソフトウェア開発に関して、認識の相違から産まれる違いについて、きちんとトレードオフまで伝えた上で、それでもこれまでのやり方をお客様が選択するのなら仕方ないでしょう。そうしたら、その中で最善を尽くすべきだと思います。しかし、まずは伝えるべきです。

もしわたしが、家を建てるといったときに、建築に関して門外漢なので「基礎工事は要らない」「柱は1本で良い」などと、無茶を言うかもしれない。そうしたとき、私なら、プロの立場から、本当はどうすべきかを聞きたいと思います。間違った認識や理解があるなら正して欲しいと思う。誰もがそうではないでしょうか。

わからない人にもきちんと伝えるのが、本当のプロフェッショナルでしょう。お客様がわかってないことを黙ってなんとかする、なんとかなれば良いけど、その場しのぎになったら、それこそ、お客様のことを考えてないと言われても仕方ないのではないでしょうか。

そう考えているので、私は、お客様にも、そうでなく、ただご相談に来られる方にも、すべて正直に、私がプログラミングをした経験からわかったソフトウェア開発の特性について、きちんと日本語で説明することを努力しています。伝わらないから伝えないなんて態度をとることはありません。

こちらの記事は、そうしてこれまで実際に話をしてきた内容を記事にしたものです。確かに、この内容を、お客様や相談者には言わずに、居酒屋であるあるネタで話してたら違和感を感じます。しかし、現実に説明してきたことでもあるし、私がこのブログに書いてる時点で、陰口で書いたつもりもありません。

ソフトウェア開発に関する認識の違いがあって、お互いにとって不幸があるならば、それをつまびらかにし、私なりに日本語で説明することで、少しでも誤解が減り、お互いに無駄がなく良いソフトウェア開発が出来るのなら、という思いで、書きました。

認識の違いなんかで、無駄な頑張りが産まれることを、本当になくしたい。

そのためには、一人ひとりが身近なところから、プロの意識をもって伝えていくしかありません。もちろん、伝えたところで、伝わりきらずに、これまでのやり方を踏襲することになるかもしれない。伝えてわかったところで、制約がありすぎて、仕方ないかもしれない。

でも、最初から諦めずに、まずは伝えてみることから始めて欲しいと思います。当たり前のことなんですが、伝えなければ、絶対に伝わらない。

いかに難しい局面を作らないか、を考えることが戦略であり経営で、いかに難しい局面を乗り越えるか、を考えることが戦術であり技術で、どちらも大事です。

しかし、もしちゃんと伝えて誤解を解くことで戦略的に解決できるなら、それにこしたことはないし、お互いにハッピーですよね。

プロジェクトの成功は、そんなところから実現できると思いませんか。