エンジニアとしての価値を最大限に高めるために


# はじめに

オークファン Advent Calendar 2020　5日目担当@kei75です。

昨年の「オークファン Advent Calendar 2020」では運用でやらかしたことを記事にしました

本番環境でやらかしたことを供養する2019冬～事件は会議室で起こってるんじゃない。現場でおこっt(ry～
https://qiita.com/kei75/items/5de2d9cf70794236be65


# 自己紹介

2007年にネットプライスに入社して以来、情報システム部門、インフラ、開発と色々と渡り歩いてきました。
2018年10月よりオークファンに転籍になりましたが、やってることは相変わらずです(笑)

比較的レイヤーの低いところを得意としているエンジニアと自負しておりますが、「浅く広く」なエンジニアなので専門の方にはかないません。

というのは2018年までの自己紹介。

2019年4月にインフラチームのマネージャーを仰せつかり、素晴らしいメンバーに囲まれながら日々運用に励んでいます。

2020年4月にインフラチームは、インフラグループに格上げ(?)となり、配下に情シスチームが加わりました。

2020年11月中旬に情シスメンバーが退職してしまい、今はマネージャー兼情シス担当として日々運用と雑用に励んでおります。


# エンジニアとしての価値を最大限に高めるための思考方法

今年はマネージャーらしく、管下メンバーや新卒メンバー・若手メンバーに向けた非技術的な内容を投下してみようと思います。

エンジニアの価値はどこにあるのでしょう。

- システムを作り上げる(設計構築)こと
- システムを安定運用すること
- 美しいコードを書くこと

上記3点は全て正しい価値ですが、私からすると答えとしては不足です。

エンジニアの本来の価値は、「**技術を用いて課題を解決すること**」この一点に集約されると思っています。

### なぜエンジニアが必要とされるのか

エンジニア以外の部門のメンバーがエンジニアを頼るときはどんなときでしょうか。

それは単純に**自分たちでは課題が解決が出来ない場合**です。

営業部門のメンバーがシステム構築ができればエンジニアを頼る必要なんてありません。
経理部門のメンバーがシステムを安定運用していればエンジニアを頼る必要なんてありません。

ですが、そんな「何でも出来る能力多彩なメンバー」なんてたくさんいるでしょうか。
皆さんそれぞれに専門分野があり、それぞれがプロフェッショナルとして働いているはずです。

だからこそ、高度にIT化された社会には私達エンジニアが必要とされるのです。


### 価値を高めるためには

必要とされる理由はわかった、ではどうすれば？

簡単な話です。
基本に立ち返りましょう。

私達エンジニアは「**技術を用いて課題を解決すること**」が求められています。

「課題を解決すること」が求められています。

「 _課題を解決すること_ 」です。

「***課題を解決すること***」

大事なことなので3回書きましたw
要するに、課題が解決出来るエンジニアになればよいのです。

### 課題解決に必要なスキル

では、エンジニアとして課題を解決するためにはどんなスキルを身につければよいのでしょうか。

 - システム設計の基礎的なスキル
 - プログラミング言語
 - ソフトウェア工学
 - テスト手法やデバッグ手法
 - クラウドサービスに関する知識
 - ハードウェアに関する知識
 - データベース
 - 運用

順不同関連性無しですがwこれらは全て正解で、エンジニアとして必要なスキルです。
これらの知識や経験値は、このQiitaにも山ほど蓄積されており、またインターネットの広大な世界を検索すれば
先人達の苦労の結晶や知恵袋を見つけることが出来るでしょう。

また、市販の雑誌や書籍には体系的にまとめられており、図書館等を利用すればより手軽に書籍から知識を得ることが出来ます。
(技術書は得てして値段が高い…)

しかしながら、これらは課題解決のための技術力を高めているだけで、本質的な部分をカバーできていないことに
気がつけるかどうかがエンジニアとしての価値の分かれ道になります。

### 課題を正しく認識する

前項でも触れていますが、エンジニアに求められるのは「課題を解決すること」です。

プログラミングができるだけで課題を解決出来るでしょうか。
システム設計ができるだけで課題を解決出来るでしょうか。

そもそも、**解決すべき課題を間違って認識していたら**、解決できるモノも解決できないばかりか
時間やお金ばかり掛かってしまい、**何も解決できなかった…**となってしまいます。

これではいくら技術力が高いエンジニアでも、**その価値はゼロに等しい**と言わざるを得ません。

例えば、経理部門にて入出金を管理する作業をシステム化したい、といった場合に
「入金額や日付、摘要を入力させてデータベースに保存して一覧表示できるできるシステム」を作ったら
課題は解決するでしょうか。

実は経理部門で課題になっていたのは、各銀行の口座情報を手作業で集めてExcelに転記する際に
**転記ミスが多く、無駄に時間を取られて効率が悪い**、という点だったとしたら…。

結果的に**入金額を手入力させている**時点で課題は全く解決できていないことになってしまいます。

さすがにこれは極端な例ですが、実際の現場では、エンジニアや現場が課題を正しく認識していないあまり
間違った方向で進んでしまい、結果的になんの課題も解決されなかったということは往々にして起こります。

**課題を正しく認識し、その課題に対して技術を駆使して解決に導く**ことが大切なのです。


少し本題と離れますが、有名な画像をご紹介します。

「顧客が本当に必要だったもの」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36967/c1908248-f90b-1e4c-1dcb-a285db3b33f2.png)

これは、「システム開発において顧客の要望を捉えることが如何に困難であるか」ということを表している図です。

顧客自身も自分たちの課題や求めているものを、正しく営業やプロマネ、エンジニアに伝えられない。
顧客から正しい情報が入ってこないので、営業もプロマネも間違った解釈をしてしまう。
間違った解釈でエンジニアがシステムを開発するので、さらに曲がったシステムができてしまう。
曲がったシステムができてしまったので、とんでもない金額が請求されてしまう。
結果、顧客が本当に必要だった物と大きく乖離した運用やサポートになってしまう。

顧客が本当に必要としていた右下の物を、関係者が正しく認識していればこんな悲惨な結果を生むことはなかったでしょう。

さすがにこれは大げさな話に聞こえるかもしれませんが、

**顧客が本当に必要だった物＝解決したい課題**

と考えていただけば、どんな案件や課題に対しても同じであることが言えるのではないでしょうか。

**解決したい課題を正しく認識し、豊富な知識と経験で解決に導く力**こそが、エンジニアとしての価値を高める重要な要素なのです。


### まとめ

取り留めのない記事になってしまいましたが、実際に私がエンジニアとして心がけているのはまさにココです。

お願いされたこと(課題解決の依頼)に対して、「ノー(できない)」と言わざるを得ない場合は多々あります。
ですが、ノーというのは簡単です。

「ノーではあるが、こっちのやり方なら、その課題を解決できるかもしれない」
「その依頼で解決したいことは何ですか？」
「そもそも何が課題(問題)なんでしたっけ？」

こういったやり取りを意識することで、**課題を正しく認識、共有、合意し**解決へ動き出すことができます。

エンジニアとして駆け出しのころは、技術力に傾倒してしまいがちかもしれません。
それも結構でしょう。技術力のないエンジニアは課題を見つけられても、それを解決に導く力がありません。

本当に価値あるエンジニアになりたいと思ったら、技術力も磨きつつ、問題や課題を解決する力も一緒に養っていくが大切ではないでしょうか。



## 最後に

私達オークファンは、課題解決企業として様々なサービス・ソリューションを提供しております。

https://aucfan.co.jp/

そんな私達と一緒に課題解決したいエンジニアを24時間365日募集中です！
一緒にエンジニアとして活躍しましょう！

よろしくおねがいします！