本連載では、「世の中で活躍するエンジニアの過去の失敗」にフォーカス。どのような失敗をし、どう対処し、そこから何を学んだのか。仕事で失敗してしまった時の対処法や心構えを先輩エンジニアから学ぼう!
BASEえふしんが『モバツイ』時代にやらかした“恥ずかし過ぎる失敗”とは?
挑戦に失敗はつきもの。どれだけ優秀なエンジニアであっても、想定外の失敗に直面することは必ずある。大切なのは、その失敗から“何を学ぶか”だ。
今回本連載に登場するのは、かつて一世を風靡したモバイル端末向けのTwitterクライアント『モバツイ』の開発者であり、現在はネットショップ作成サービスなどを手掛けるBASEの取締役を務める「えふしん」こと、藤川真一さん。モバツイ時代の印象的な失敗談を教えてもらった。
「自分のコードを過信していた」モバツイ時代の浅はかさ
藤川:「予想していなかった出来事に直面した結果、人間関係やお金、時間を失うこと」でしょうか。事前にリスクの存在を認識して、対策を考えていたら違う結果を生んだかもしれないのに、想像力が足りずに周囲に多大な迷惑を掛けてしまうこと。そんなイメージですね。
藤川:そうです。思い通りにならなかった結果そのものよりも、その結果を招いた「思考力不足」や「想像力不足」を失敗と捉えています。特に人様のお金や信用を預かるようなサービスに携わるエンジニアにとって“想定外の出来事”というのは大問題。ですから、想定できなかったことの方を重く見ています。
藤川:10年ほど前、『モバツイ』というサービスを運営していた頃の経験が当てはまるかもしれません。あれは確か、2009年~10年頃だったと思います。ユーザーの利用が増える中で、一つの問題に直面していました。アクセスが伸びると急激にサービスが重くなってしまっていたのです。
当時の見立てでは、Twitter APIの不安定さやPHPの処理に原因があるだろうと思っていました。「まあ、そんなもんなのかな」と思いつつ、サービスが重くなってきたらAWSにログインし、サーバーインスタンスを立て、サービスを落とさないよう対策していたわけです。
藤川:ある時、大した疑問も持たないまま「サーバーが増え過ぎてコストがかさんで困っている」とブログに書いたんです。すると内容を読んだ方から「それはおかしい。他に原因があるはず」とコメントが付いて。その時に初めて「もしかしたら自分の認識が間違っていたのかもしれない」と気付き、ハッとしました。
それですぐに、自分が書いたソースコードを入念にチェックして。すると、JSONデータをパースする部分にすごく非効率な関数を使っている箇所が見つかりました。
その部分をPHPの組み込み関数に置き換えたところ、サーバーへの負荷が一気に1/3になったんですよ。サーバーにアクセスが集中した時点で現象は現れていたのに、人に指摘されるまで気付かなかったわけですから、いかに自分が書いたコードに向き合っていなかったか、自分の浅はかさを恥じました。
本来であればあらゆる可能性を考えて原因を究明すべきだったのに、「自分のコードには問題がない」と思い込んでしまっていた結果、サーバーインスタンスを増やす以外の対応を取ろうとしなかった。
エンジニアなのに“技術力”で課題を解決するのではなく、お金を使って問題を先送りにしていただけだったわけです。エンジニア人生の中でいくつも失敗をしてきましたが、これを上回るほどの恥ずかしい失敗は他にありませんでしたね。
思い込みフィルターは取り外し、フラットな目線で本質を見極めよ
藤川:「問題の原因を外部に求めていると、問題の本質から遠のく」ということですね。それ以来、なるべく物事をフラットに捉えるようになりました。
物事をフラットに捉えるというのは、「当事者意識を持って問題に向き合う」ということでもあります。これはメンバーマネジメントにも通用する考え方ですから、エンジニアリングに限らず、メンバーとの関わりの中でも常に念頭に置いています。何か問題が生じたときでも頭ごなしに叱るようなことはせず、まずは相手の言葉や気持ちを受け止めてから導くように気を付けていますね。
仮に、チームの中にすごくキツい言い方をする人がいたとして、「この人の性格のせいでチームの雰囲気が悪いんだ」とレッテルを貼って対処をするのは簡単です。でもちゃんと聞いてみたら、たまたまその人は私生活が大変な時期で余裕がなかっただけとか、違うところでとんでもない原因があったとか、思いもよらない事情があるかもしれない。そうやって自分の判断が間違っている可能性も考え、よく話を聞くところから始めるようにしています。
藤川:はい。マネジャーがメンバーを“悪い”と判断して見切ってしまうのは、問題の原因を外部に求めて思考停止に陥るのと同義です。マネジャーには問題の原因を取り除く権限が与えられているはず。それなのに状況をより良い方向に導けなかったとしたら、それは相手への無理解や偏見、自分の能力への過信やプライドが邪魔しているせいかもしれません。
藤川:自分の弱点がどこにあるのかを自分自身で見極めないといけないので、簡単なことではありません。「悪者になりたくない」「プライドを守りたい」ということに固執していると、いつまでも本質的な解に辿り着けません。マネジャーとしては、そこをいかに壊していけるかが成長の鍵になるでしょうね。
藤川:その通りです。フラットに物事を捉えることは、メンバーマネジメントに潜んでいる本質的な問題をあぶり出したり、メンバーへの期待値のコントロールや評価を下したりする際にも応用できる考え方なんだと思います。
最も恐ろしい失敗は、「ただ時間が過ぎること」
藤川:先ほどは「想定できなかったこと自体を失敗と捉える」と話しましたが、事業や経営を預かる立場としては、後々過去を振り返ったときに「あのときに何かできたはずなのに、何もしなかった」「変化の節目に気が付かず、ことを起こせなかった」と思い浮かぶような後悔も、大きな失敗なのだと思います。
藤川:そうです。何か行動をした結果失敗するよりも、“何もしないことによる失敗”の方が、後々への影響は大きいですから。
「何もしない」ということは、ただ時間だけが過ぎていくだけで、表面的には何も起きません。それがなぜ悪いのかと言うと、機会損失につながるからです。しかも、浪費した時間は取り戻せません。
失敗というとどうしても、誰の目にも明らかな“しくじり”に目が行きがちですが、平穏無事な日常の裏に隠れている「見えざる失敗」にも注意すべきです。
藤川:安心しないことですね。平穏無事ということは、見方を変えると「進歩が停滞している」ということでもあります。ですから技術戦略を決めるにしても、メンバーマネジメントに取り組むにしても、「自分はこの瞬間、本当にやるべきことを全うできているのだろうか」と、客観的に自分を観察するような視点を持つことが重要です。
時代や周辺環境、他人のせいにしても状況は変わりません。メリット、デメリットを見極め、あくまで自分の責任として選ぶ。覚悟を決めてやりきるしかないのではないかと思います。
藤川:日ごろから小まめにトライして、小さな失敗をたくさん経験することでしょうね。エンジニアリングに携わる以上、思い通りにならないことは日常茶飯事です。それを避けようと思ったら何もできなくなってしまう。それよりも、どんどん挑戦して小さな失敗を繰り返した方が、精度の高い意思決定ができるようになりますし、覚悟も決めやすくなると思います。
また、「何事にも時間切れがある」ということを意識してみてください。私たちは限られた時間、限られた予算の中で仕事をしています。つまり、バッターボックスに立てる時間は限られているということ。そのわずかな機会を逃さずに結果を残すには、「バットを振ること」が大前提。バッターボックスに立った以上、見逃し三振は決して許されないのです。
藤川:今、世の中はどんどん便利になっています。私の失敗経験から言えることは、その便利さに甘え過ぎたり、自分を過信したりすると足元をすくわれることもあるということです。この先のエンジニア人生を後悔なく過ごしたいと思うのであれば、日常的に「自分の書いたコードやメンバーと向き合っているか」「あらゆる可能性を検討した上で決断しようとしているか」「失敗を恐れず挑戦できているか」、この3つをチェックしてみてほしいですね。
取材・文/武田敏則(グレタケ) 撮影/赤松洋太
RELATED関連記事
RANKING人気記事ランキング
米国優位が揺らぐ?ひろゆき「CPUの進化でGPU神話って崩壊しません?」【AI研究者・今井翔太が回答】
NEW!
表面的なテクニックより「基礎基本の重要性」に気付かされた一冊【Node.js 日本ユーザーグループ代表・古川陽介】
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
NEW!
正論モンスター化に要注意!ぎくしゃくしない「ミスの指摘」のコツ【澤円「コミュ力おばけ」への道】
社会で成功するゲーマーに、ひろゆきが聞く「現実世界を攻略できないゲーマーに足りないものって何すか?」
JOB BOARD編集部オススメ求人特集
タグ