行動すれば次の現実

テック中心の個人ブログ

ハマったときに深掘りすることの重要性

開発をしていると「ハマる」ということはつきものです。

エンジニアがよく使う「ハマる」とはぴったりの穴に嵌ってしまって長時間抜け出せない状態から由来していると言われています。

ハマりは予期せず起きてしまうのです。なるべくならハマりたくないと考えるのが自然だと思います。 しかし私はハマったときこそエンジニアの成長のチャンスだと考えています。

ハマったときの正しいアプローチ方法

ハマったときに、まず第一に考えることは「ハマった状態をどうやって抜け出すか」ということだと思います。

この状態をどうすれば抜け出せるのか?つまりHowに着目してその方法を探すことが第一歩です。

ググったり、あれこれ試行錯誤しながら、何とか方法(How)を見つけ出し、ハマりを抜け出したとします。 ハマったことを振り返りもせず、何事もなかったかのようにそのまま突き進んでしまうと、ハマったことはただ単に時間を浪費したことに過ぎません。

これではせっかくの成長のチャンスを台無しにしています。

ハマったときにHowに対するWhyをきちんと問うことで成長できると私は考えます。

「なぜこの方法を取ることで解決できたのか?」その根本的な理由を明確にすることで、問題の本質が見えてきます。 本質が見えると似たようなハマり事象が発生したときに、その知見を応用して別の解決策を自分から提示することができるようになります。

この作業を「深堀り」と呼びます。

もし深堀りしていなかったら、類似の事象が発生したときに過去に解決した事象との結びつきが見つけられず、再びHowを一から探すという浪費を繰り返してしまいます。

深堀りすることの重要性を示す例として、Rails+Postgresql+Dockerで発生する「There is an issue connecting to your database with your username/password, username xxx」でハマった件という私の過去の記事があります。

この記事で上げられたの解決方法としては「dokerのvolumeを削除する」ことです。 これは試行錯誤する中で適当に実施したことで生まれた解決方法です。

「volumeを削除したらよくわからないけど動いた!先に進もう」となってしまうと、再度類似のことが発生した時も同じく試行錯誤しながら時間をかけて再び「volumeを削除してみよう」となるのかと思います。これでは過去の経験は何も活かされずにただ時間を浪費していることになります。

「なぜvolumeを削除することでエラーが解決されたのか?」のWhyを深掘りすることで問題の本質である「database.ymlのusernameをdocker-composeの初期起動時から変更してしまった」ことに気付くことができ、類似のことが発生したときに応用できるようになるのです。

アウトプットすることでより自分を成長させる

HowやWhyについて深堀りをする作業は、メモ帳などにアウトプットとすることでより再現性が高まり、クオリティが向上します。

人間のメモリはとても少ないため、時間が立つとすぐに物事を忘れてしまいます。そのため、メモ帳というストレージに保存して、知識のデータベースからすぐに引っ張り出せるようにしておくことがとても重要なのです。

特におすすめなのが、メモ帳をブログに公開するということです。

ブログに公開するということは第三者の目がありますので、プライベートなメモ帳よりもクオリティを上げなければならないというプレッシャーが発生します。このプレッシャーによりWhyの深堀りをより質の高いものにするという意識が自然に付くようになります。

ブログと言っても、あくまでも自分へのメモです。振り返ったときにすぐ知識にアクセスできるというデータベースを構築するのは後々とても大きな財産となります。 またブログとして公開することで副次的にセルフブランディングとなる将来的な資産にもなりえますので、一石二鳥なとても有効なアウトプット方法と言えるでしょう。

もしも同じようなブログがインターネット上にすでに存在したとしても問題有りません。

今日時点で執筆したのであれば最新状態の記事ということになりますでの、既存記事よりも価値が高いと捉えることも出来ますので、何も躊躇することはないのです。どんどん深堀り結果をアウトプットしましょう。