成功に繋がる失敗とは?

記事
IT・テクノロジー

成功に繋がる失敗とは?

誰もが失敗はしたくないものです。失敗しない方が良いのは当然ですが、そもそも失敗って何なんだか考えた事はありますか?この記事では、成功につながる失敗について紹介します。


そもそも失敗とは何か?

最初に、そもそも失敗とは何でしょう? 一般的に言うならば、「思うように行かなかった」場合を失敗という事が多いと思います。

「本当はこうなるはずだった」でも現実は、「予想とは違う結果になった」というのが失敗という様に考えると思います。当然、当初と予想した結果にならなかったのは「悪い事」という事です。


しかし、ちょっと考えてみてください。 過去を振り返ってみて、思うように行った事がどれくらいあるか考えてみてください。

もし、思い当たらない場合はあなたは相当ラッキーな人だと私は思います。 実際は、思い通りに行かない場合が多いという方が多い方の方が多いのではないでしょうか?

失敗したらどうする?

では、実際に失敗した場合、つまり、予想通りの結果に繋がらなかった場合どうしていますか? 実は、失敗した後の対応というのが、その後の結果に影響してきます。

例えば、失敗したのは「運が悪かった」と考えた場合はどうでしょうか? つまり、失敗の原因は「運」ということにしているので、「運」が良ければ成功した(する)ということになります。言い換えると、「運」が悪ければ将来また同じ失敗をするということになります。


ところで、「運」が良い人の事をあなたはどのように見ていますか? きっと、「上手くやっている」と思う人が多いと思います。しかし、もう一つ踏み込んで「何を上手くやっているのか」を考えた事ってありますか?

実は、そこに運が良い人と悪い人の違いがあります。

運が良い人の多くは、「失敗」を上手く利用しています。 失敗というのは、成功に比べると外からは見えにくいものです。従って、成功しているのを見ると上手くやっているように見える場合が実に多くなっています。実際は、そういう人でも、かなりの数の失敗をしています。しかし、失敗したケースは意外に目立たないので、余り失敗しているというイメージがないので、運が良いように見えます。

実際は、プログラミングでも、ビジネスでも上手くいく場合の方が多いのが普通です。大切なのは同じ失敗を繰り返さない事にあります。同じ失敗をしないために大切なのは、何故失敗したかを考えて、次は同じ失敗をしないように対策をする事にあります。つまり、失敗には「運」以外の理由があるという事です。すぐに答えが見つからない場合も多いですが、その理由を探すのを諦めない事にポイントがあります。

失敗を想定した計画が大切

繰り返しになりますが、特に新しいことに挑戦する場合、失敗する可能性は高いのが現実です。 従って、失敗をする事を想定した計画がとても重要になります。

どういうことかと言うと、「失敗からのリカバリー」が必要になります。つまり、成功した場合に比べると、やる事が増えると言う事です。いわゆる「損失」です。この損失を最小限にして、リカバリーを迅速にできれば、計画全体としては再び軌道に戻す事が可能です。


新い事の場合、「わからないことが多い」のが失敗(=想定外)を産む大きな原因です。なので、失敗を減らすには「わからない事を減らして」「わかる事を増やして」行けば良い事になります。なので、失敗を予測して、実際にやってみて、真偽を確かめるとそれを効率的にできます。

実際に、上手く行かない場合を想定してやるので、失敗した場合のダメージも余り大きくならないように、実際に試す規模もできるだけ小さくして実行するのがコツです。こうすることで、失敗してもダメージは最小限で実際に試したことで、それが想定通りに進むのか、それとも想定通りにいかないのかと言うデータが取れます。

こうして、想定外になる可能性を極力小さくした上で、大きく実行すると上手くいく場合が多くなります。実際に失敗の程度は小さいので余り目立ちません私、上手く行った方が多くの人の目に映るので上手くやっているように見えるというわけです。

プログラミングの例を挙げると。。。

何となく理屈はわかるのだけどと言う方も多いと思いますので、実際のプログラミングでよく起きている例を挙げると、こんな物があります。

ある大きなプログラムを開発する場合を想像してみてください。

例えば、Web ブラウザのフォームに情報を入力して、その情報をデータベースに登録して、登録が上手く行ったら Web ブラウザにその旨を表示して処理結果を利用者に通知すると言う機能を実装するとします。もっと具体的に言えば、メルマガの登録をするサービスで、E -Mail アドレスをフォームに入力して送信すると、E -Mail アドレスをデータベースに登録して、処理が上手く行ったら画面に登録完了と表示して、失敗した場合は、登録処理がエラーになったと表示するようにするとします。

実際の処理自体はそれほど難しい物ではありませんが、初めてこのようなサービスを作る場合には、何らかのミスなり間違いをするケースは結構あると言えます。よく言われる事にプログラムには必ずバグがあると言われています。

例えば、この処理を行うプログラム全体を書いて、試しに実行したとします。フォームに登録情報を入力して送信しても、表示は切り替わらず何も起きていないように見えたとします。

そうすると、まずはプログラムのどの部分に問題があるのかを調べる必要が出てきます。

しかし、機能を分けて実装する場合、例えば

* フォームの表示
* フォームからのデータの送信
* データベースの登録
* 登録結果の返信
* 登録結果の表示
などのように別々のモジュールに分けて開発して開発する場合には、一つのモジュールのコーディングが完了した時点でその機能を試しますよね?その場合、問題がある場所は、最初の全体をいきなり試す場合に比べれば範囲が絞られているので問題の場所を見つけやすくなります。

そうすると、短期間でバグを修正して、結果的には短期間で機能を実現できる場合が多くなります。 また、作業の進み具合も細分化されるのでどこまでできているか外から見てもわかりやすくなります。全体を一気に作る場合、例えばコーディングは 1 ヶ月かかるとします。この 1 ヶ月間の進捗はコーディング中という事になって、開発者の感覚で何パーセントという報告になります。しかし、この時点では不具合があるかどうかはわからないので、実際にどの程度の完成度かは外からは殆どわかりません。 しかし、モジュール毎に分ければ、どの機能がどの程度できているかはもう少し詳しくわかります。モジュールを分けても基本的にコーディング量は大きくは変わらないので、より外部からも進捗が分かりやすくスケージュール管理もよりやりやすくなります。

まとめ

失敗はしない方が良いわけですが、実際は失敗は殆どのケースでおきます。 プログラミングでバグはほぼ必ず存在すると言われています。バグもある意味ミスの一つですが、予めバグが存在するという想定で開発を進めておくと、開発全体への影響を最小限にする事ができます。

成功に繋がる失敗というのは、「失敗はある物」と予め想定する事で、実際の作業の一つのステップとして考えるという全体の管理をする事です。そうすることで、「失敗」を想定内の物にして、成功までの一つのステップにする事が可能になります。予め想定していることは対処もしやすく、本当に成功への一つのステップという役割に変わってきます。


失敗というと、ネガティブなイメージがありますが、その対処方法をちょっと見直すだけで、成功への距離を縮める手段になります!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す