みなさん、普段エンジニアとしてどんな仕事をしていますか?
新規開発?保守運用?色々あると思います。
さて、どんな仕事をしていても開発要望や、開発依頼などがお客様、または企画・開発からやってくると思います。
例えば、「管理画面にxxでも検索出来る機能を作って欲しい」とか。
このような依頼にどう対処しているでしょうか。
- A. すぐに要望に答えて作る
- B. 今の仕事を終わらせてから作る
- C. 開発リーダーと調整して、都合の良い時に作る
- D. なぜそれが欲しくなったのかを聞く
依頼側からすると、A~Dの順で「仕事が早くて良い人だ」という評価をするでしょう。
果たしてその問題とは何か?
我々エンジニアの存在意義は、欲しいものを作る事が仕事ではありません。
(と、私は考えてます)
あらゆる問題を「技術」という道具を使って解決する人間です。
まずは、依頼や要望が来たときに、それが「なぜ問題か」を考える必要があります。
問題が分かると、その中から順に課題が出てきて、そこで初めてその課題をどう対処するか決まります。
場合によっては「対応しない」という選択肢が出てきてもOKです。
問題とは何か
勘違いしがちなのは、今回のように「管理画面でxxで検索出来る機能がない」事が問題で、
その反対の「管理画面でxxで検索出来る機能を作る」が解決策だ。
というパターンです。
表面化・顕在化した事象を問題と勘違いし、その裏返しを解決策として対応していれば永遠とツギハギのシステムを作っていくことになったり、本質からずれたシステムになりがちです。
つまり、「今xxが出来ない」事は問題ではありません。
本当の問題は
では本当の問題は何か。
端的に、目指したい姿と、現実とのギャップです。
仮にですが、今回出てきた依頼が「管理画面で1000円以上の商品を検索出来る機能を作りたい」だったとします。
じゃあ、依頼主の理想とする姿を聞いてみましょう。
すると、実は「特定のジャンルでは、【価格=信頼】になっているという仮説があり、高い商品だけを検索出来るようにして、売上が上がればその仮説の検証の1つになるのではないかと考えていた」という話が出て来るかもしれません。
そうなってくると、話は変わってきます。
この場合の理想の状況
特定のジャンルで【価格】=【信頼】考えがあり、高価格商品が売上に繋がっているという仮説を検証し易い状況を作りたい。
現状
- 商品はカテゴリ・検索ワードでしか検索出来ない
- 並び順は関連度順に並んでいる
見えてきた本当の問題
この場合の問題は、「特定ジャンルでは価格が高い商品が売れるという仮説を検証したいが、現状だとユーザが検索し辛い状況にあり、検証もし辛い状況にある」という理想と現実とのギャップに問題があります。
対応すべきこと
そうすると、最初の「1000円以上で検索出来るようにする」というのは手段の1つでしかありません。
他にもこの問題に対応する術はいくらでもあります
- 並び順に価格でソートする機能を付ける
- 特定のジャンルだけは予め最初から高単価順に並べて表示する
- 高単価の商品に何かしらのマークを付けて目立たせる
- etc...
また、そもそも現時点では出てませんが、本当の問題を考えると、「この仮説を検証するための、ジャンル毎の価格別の販売数が見れない。」
という課題も出てくる可能性もあります。
エンジニアが取り組むべきこと
このように、お客様や企画・営業から日々依頼や要望がある中で、本当に必要な事に時間を使う為には、「目指したい姿は何か」という部分を聞き出して、そこから本当の問題を洗い出し、対応していく事で、無駄なく本当に解決すべき問題を解決していけるエンジニアになっていけると思います。
最初に上げたように、依頼が上がった段階で「簡単そうだから」という理由等からすぐに対応している場合、依頼主からの評価は上がるかもしれません。
でも、それでは本来の問題解決にはなっていない可能性が大いにあります。
より、依頼主と一緒に、本当の問題に取り組んで行けるエンジニアこそ本来評価されていくべきだと自分は考えています。