エンジニアがテクニカルサポートを絶対にやったほうがいい5つの理由

※この記事は[モチベーションクラウドシリーズのアドベントカレンダー](https://qiita.com/advent-calendar/2020/mcs)8日目分になります！

#自己紹介
こんにちは！[モチベーションクラウド](https://www.motivation-cloud.com/)開発チームでサポートエンジニアをしている谷(@taniiiiim)です！

私は昨年4月に[リンクアンドモチベーション](https://www.lmi.ne.jp/)に新卒入社し、未経験の状態からエンジニアになりました。
その後モチベーションクラウドの開発チームにジョイン、エンジニアのテクニカルサポートチームの立ち上げに携わりました。
現在は、お客様にファンになっていただけるようなサービス品質の向上を目指し、様々な取り組みを行っています。

本記事では、あまり知られていない**サポートエンジニアの業務内容及びその魅力**について、私自身がモチベーションクラウドのテクニカルサポートチームで経験したことをもとにご紹介したいと思います！

※「もっとこうするといいよ」「うちではこうしているよ」というアドバイスやご意見などございましたら、是非コメントにご記載いただけますと嬉しいです！

#そもそも、サポートエンジニアとは
サポートエンジニアとは、**「顧客がプロダクトを利用する際に発生した問題を、技術的なサポートを通して解決する」**職業です。
技術的サポートによって顧客の課題を解決することを通じ、より素敵なプロダクト利用体験を提供することが主な目的となります。

#テクニカルサポートの業務内容（モチベーションクラウドの場合）
ここではモチベーションクラウドのテクニカルサポートチームの業務内容を紹介します！

###1. 仕様確認
顧客が不明点に感じたプロダクトの仕様や、その背景についてお答えします。
具体的には、画面上やバックエンドのプロダクト機能の期待値や、セキュリティ設定の確認など、その範囲は多岐に及びます。
仕様についてお客様に回答するときは、「その回答内容が本当に正しい仕様か？」を保証するために、該当機能の要件定義書やコードそのものを参照、場合によってはテスト環境で動作確認を行うこともあります。

###2. 不具合調査
現場・顧客からご報告いただいた不具合と思われるプロダクトの挙動について調査を行います。
具体的には、

- データベースやサーバーへのアクセスログを調査し、原因となった操作・挙動を特定する
- 原因となっているコードやサーバーの設定をデバッグして特定する
- 同じ不具合が起きている顧客がいないかデータベースやサーバーのログから水平調査する
- 上記不具合を解消するための解決策を立てる
- 上記調査内容と解決策を顧客に連携する

ことで、顧客の不具合を一刻でも早く解消できるようにご案内します。

###3. 暫定対応
不具合を解消するためにデータ修正が必要な場合、修正対応を行い、顧客に起こっている不具合を一時的に解消します。
このデータ修正にミスがあると、顧客データを破損させ、信頼を大幅に失うことになってしまうことにつながってしまいます。
そのため、本番作業実行前には実行スクリプトを複数人でレビュー、実行時にも必ずダブルチェックを行うことで、絶対にミスを起こさない体制を作って慎重に作業します。

###4. 恒久対応
不具合の原因になったプロダクトのコードやサーバー設定を修正します。
同じ不具合が起こるたびに暫定対応していると、自分たちの工数がかさむだけでなく、不具合を被るお客様もその分増えてしまいます。
**2度と同じ不具合が発生しないように機能を修正するところまでがテクニカルサポートです。**

###5. イレギュラー対応
顧客がどうしても実現したいと考えている、プロダクトの機能としては提供していないイレギュラーな操作をパッチ作成・実行などによって実現します。
いわゆる「裏メニュー」のような措置ですが、複数社からご要望をいただいた場合は必要に応じて機能化する判断をするなど、顧客からのニーズをいただける場にもなっております。

###6. インシデント対応
サービスが利用できなくなるような重大な障害が発生した際に、最優先で調査・暫定対応・恒久対応までを即座に行い、一刻でも早くサービスを復旧させます。
開発チームの他のメンバーも巻き込みながら、**「即座に」「誠実に」「最大限の犠牲を払ってでも」**という精神で、顧客ファーストでの対応を行います。

#エンジニアがテクニカルサポートを絶対にやったほうがいい5つの理由
### 1. 広範なエンジニアスキルが身につく
調査や恒久対応に携わる中で、データベースやバックエンド・フロントエンドなどWebアプリケーションのアーキテクチャ全てに触れる機会があるので、**特定分野に縛られず広範なテクニカルスキル**を身に付けることができます！

自分自身の体験としても、調査を通してSQLやサーバーログ調査およびデバッグスキルが、恒久対応を通してフロント・バックエンド問わずに開発に携わることができました。
そのおかげで、短期間でたくさんの武器を持つことができたなという感覚があります！

###2. ロジカルシンキングが鍛えられ、課題解決力が上がる
不具合が生じた際に原因調査を進めて行くためには、起きている事象を正しく構造化して捉え、どこに原因があるか仮説を立て、調査やデバッグによって一つ一つ検証する、ということを繰り返して行く必要があります。

こういったロジカルシンキングはテクニカルサポートやエンジニア業務だけに限らず、**全てのビジネスシーンの課題解決の場で必須となってくるスキル**です。

テクニカルサポート業務はまさに小さな課題解決の繰り返しで、高速でPDCAを回しながらロジカルシンキングを鍛えることができるので、課題解決の質とスピードを上げるにはうってつけと言えます！

###3. プロダクトの仕様をすぐに覚えられる
テクニカルサポートでは、顧客に対して正確な回答を提供するために、コードを読んだり、先輩に学んだり、テスト環境で動作確認をするなどして、**特定機能の開発に関わるよりも広範囲にわたって仕様をインプットできる機会が多い**です。

そのため、**開発チームにジョインしたばかりのエンジニアでも比較的速くプロダクトの仕様を覚えることができます！**

テクニカルサポートではなく開発業務においても、仕様を知っているだけで開発生産性が大きく上がります。
広範囲にわたって仕様をインプットすることができる機会があるのは、特にジョインしたばかりのエンジニアにとっては今後活躍するための大きなアドバンテージになると言えます！

###4. 顧客が本当にプロダクトに求めていることが分かる
テクニカルサポートに携わっていると、プロダクトの仕様に関するGood/Moreや、場合によっては改善要望を直接あげていただくこともあるので、「顧客が本当はプロダクトにどんな機能を求めていて、何を解決したいのか」を直接知ることができます。

エンジニア、特に年次の若い方に有りがちな悩みとして、「要件が顧客とすり合わない」「リリースした機能に顧客が満足してくれない」（場合によってはクレームになる）ということがあります。
**「顧客が深層でプロダクトに何を解決してくれることを期待しているのか」**の認識が少しでも擦りあっていればそのような齟齬をなくすことができるので手戻りによるストレスを削減、より効率よく開発することができます。

###5. 現場・顧客からのGoodな声をたくさん聞けて、仕事のモチベーションが上がる
現場や顧客からの問い合わせに対応した結果、仕様の不明点や不具合が解消すると、**お客様から「ありがとう」のお声をいただくことができます！**

個人的には、この「ありがとう」のお声をいただくことによって得られる喜びは、顧客と関わる機会なく開発しているだけでは絶対に得られないものであり、**最高の「感情報酬」**であると考えています！

（リンクアンドモチベーションでは、金銭だけでなく、仕事を通して得られるポジティブな感情も「感情報酬」として捉える文化があります。）

#最後に
本記事では、サポートエンジニアの業務内容、及びその魅力について、私自身の経験も例に挙げさせていただきながら解説いたしました！

まだまだメジャーではないお仕事ですが、1エンジニアとしても1ビジネスパーソンとしても大きく成長でき、何より**困っている顧客の課題を解決し、笑顔にしていくことができる素敵なお仕事**です！

これを機会にサポートエンジニア・テクニカルサポートというお仕事の魅力が少しでも多くの皆様に伝わると嬉しいな、と思っております！

モチベーションクラウド開発チームでは、これからもテクニカルサポートに力を入れ、**より多くのお客様にファンになっていただけるよう精進してまいります！**

ぜひとも今後の動きにご期待ください！