【新人エンジニア向け】「わからないことがわからない」原因と対処法
エンジニアになって2ヶ月が経ちました。
エンジニアとして仕事を進める上で、とても悩んだことがあります。
それは「わからないことがわからない問題」です。
今回は、自分の経験を元に「わからないことがわからない原因」と「その対処法」についてお話します。
※株式会社イーツー・インフォは受託開発をやっているため、その経験を元に書いていきます。
※お客様とのMTGを仮定して書いていきます。
新人エンジニアに起こる問題
僕は、次の問題にとても悩まされました。
MTGで何を喋っているのか全然わからない
最近、お客様とのMTGに参加する機会が増えてきました。
そこで、とても困ったことがあります。
MTGに参加しても何について話しているのかが全然わかりません。
はーどこーでぃんぐ?
ますたー?
えいりあす?
ぶいぴーしー?
これが僕のスタートでした。
「わからないことがわからない」
次に、わからないことがわからない問題が起きました。
「何がわからないのか言語化ができず、質問もできない状態」です。
「わからないことがあるなら人に聞いたり、インターネットで調べれば良いじゃないか」と思うかもしれませんが、それでもわかりません。
何がわからないのかがわからないから、社内のメンバーも困ってしまいます。
僕はこの問題にとても悩まされました。
「わからないことがわからない」4つの原因
わからないことがわからない原因を自分なりに考えてみました。
僕の経験からわからない原因は4つあると思っています。
原因1:専門用語に必要な前提の知識が足りていないから
「専門用語に必要な前提の知識が足りていない」状態です。
システム開発の現場では専門用語がたくさん出てきます。
専門用語を理解するには、必ず前提となる知識が必要になります。
自分の経験を元に話します。
僕は「エイリアス」という意味がわかりませんでした。
MTG中に、「取得するエイリアスを〇〇から〇〇に変更して〜」という話が良く出ていました。
エイリアスの意味はその場でインターネットで調べたり、人に聞けばわかります。
(エイリアス = 別名 みたいに出てきます)
でも、言葉の意味がわかっても、わかりません。
なぜなら、エイリアスについて理解するには、そもそも「データベースの知識やデータベースを操作した経験」が必要になるからです。
データベースの知識がないのに、エイリアスの意味を人に聞いたり、インターネットで調べてもわかりません。
エイリアスは、データベースの中の一部分でしかないので、データベースという前提の知識がないと何の話をしているのかわからないので、わからないことがわかりません。
原因2:お客様のことを理解できていないから
「取引しているお客様のことを理解できていない」状態です。
具体的に言うと、以下のことを理解していないことが原因です。
1.どんな商品やサービスを提供している会社なのか
2.誰のための商品やサービスなのか
3.どんな問題を解決する商品やサービスなのか
取引をしているお客様のことについて理解していないと、わからないことがわかりません。
原因3:システムの仕様を理解できていないから
「システムの仕様について理解できていない」状態です。
仕様とは、何を作るかをまとめたものです。
(仕様を記載した書類を仕様書と言います)
具体的には、以下の2つことを理解していないことが原因です。
1.業務フローについて理解していないから
業務フローとは「仕事の手順」のことです。
ここでは、「お客様がシステムを使う時に手作業でやる手順」のことになります。
具体的には、以下のことが理解できていない状態です。
1.システムを利用する人は誰なのか
2.利用者がいつシステムを利用するのか
3.利用者がどういう場合に使うのか
2.機能について理解していないから
システムの機能について理解ができていない状態です。
具体的には、以下のことが原因です。
1.機能の種類について
2.機能の役割について
開発をするシステムの仕様を理解していないと、わからないことがわかりません。
原因4:要求の仕様を理解できていないから
「要求の仕様について理解できていない」状態です。
要求仕様とは、お客様から「〇〇をしたい」という要求の内容をまとめたものです。
具体的に言うと「〇〇の不具合を修正したい」という修正の要求や「〇〇という機能を追加したい」という機能追加の要求などになります。
こちらも理解していないと、わからないことがわかりません。
また、要求仕様については、「原因3:システムの仕様」を理解している前提で話が進むので、システムの仕様を理解していないとわかりません。
「わからないことがわからない」場合の4つの対処方
ここからは、それぞれ4つ原因に関する対処法について書きます。
対処法1:専門用語に必要な前提知識を理解する
システム開発の現場では専門用語がたくさん出てくるので、まずは、専門用語について理解することが重要です。
僕は理解する上で2つのことを意識しています。
1.大枠(全体感)から理解する
専門用語は一つ一つ繋がっているので、先にわからない専門用語に必要な前提知識の大枠(全体感)をとらえておくことが重要です。
例えば、「エイリアス」の意味がわからなかったらまずは「データベースとは何か?」という大枠(全体感)を理解します。
大枠(全体感)を理解してから、「エイリアスとは何か?」といった詳細を理解していきます。
2.実際に手を動かして経験する
専門用語について理解することも大事ですが、実際に手を動かして経験することが重要です。
自分で書いたり、試したり、動かしたりして練習をすることで、知識が身に付いていきます。
1.の例でいうと、データベース設計やデータベースを操作する経験をすると理解が深まります。
対処法2:お客様のことを理解する
取引しているお客様のことを理解する上で、僕は以下のことを意識しています。
1.どんな商品やサービスを提供している会社なのか理解する
2.誰のための商品やサービスなのか理解する
3.どんな問題を解決する商品やサービスなのか理解する
対処法3:システムの仕様を理解する
システムの仕様を理解する上で、以下の3つのことを意識しています。
1.業務フローを理解する
お客様が行う業務全体の流れを理解します。
主に3つのことを意識しています。
1.システムを利用する人について理解する
2.利用者がいつシステムを利用するのか理解する
3.利用者がどういう場合に使うのか理解する
2.機能を理解をする
システムの機能全体について理解します。
主に2つのことを意識しています。
1.機能の種類を理解する
2.機能の役割について理解する
3.システムを実際に操作してどう動くのか経験をする
1.と2.が理解できたら、最後に実際に手を動かしてどう動くのかを経験します。
仕様書やドキュメントなどを読むことも大事ですが、実際にどう動くのか操作して経験することが一番重要です。
とにかく、たくさん触ってみて、どんなシステムなのか全体感を理解します。
対処法4:要求の仕様を理解する
お客様の要求について理解します。
主に3つのことを意識しています。
1.要求の内容を整理する
2.何をしたいのか目的を理解する
3.何が問題なのか理解する
もし、要求の仕様についてわからない状態であれば、おそらく対処法1,2,3が理解できていないと思うので、まずはそちらを優先して取り組んでみてください。
点と点が線で繋がる日が必ずくる
新人エンジニアが現場に入ると、最初はわからないことだらけで苦労することがとても多いです。
わからないことがわからない状態というのは、点と点が線で繋がっていない状態だと思っています。
次のように点をたくさん作っているようなイメージです。
でも、いろいろとプロジェクトを経験していくうちに、「あ、あのときにこれと同じこと言ってたな、聞いたことあるな、やったことあるな」という形で点と点が線で繋がる日がきます。
中々、繋がらないこともあり時間がかかる場合もありますが、繋がる日は必ずくるので、ここで紹介した対処法を是非、実践してみてください。