こんにちは。Autifyの末村です。

現在、自分はTest Automation Specialistとして社内外問わず自動テストの重要性を広める役割を務めていますが、兼任してテクニカルサポート、つまりユーザーの環境で起きた技術的なトラブルへの対応も行っています。

先日、Autifyでは、このテクニカルサポート領域を専門に行うための新しいエンジニアロール Technical Support Engineer(以下TSE)職の募集を開始しました。

テクニカルサポートという分野は個人的には非常に魅力的なもので、いくつかの企業ブログでもその魅力が発信されていますが(※1)、自分の周囲を見渡す限りですとまだ十分に浸透しているとは言えないようです。海外においてはTSEの重要性は充分浸透していて、特にTier2以降、つまりいわゆる初期対応ではなく二次・三次対応といったより高度な技術を求められる場合には高給のポジションが用意されていることが多いです。しかし、日本国内ではジュニアレベルの待遇しか用意されていないことが多いと感じています。

そこで、本稿ではAutifyにおけるTSEの役割と魅力、求められるスキルセットについてご説明したいと思います。

AutifyにおけるTSEの役割

Autifyは様々なWebサイトで利用されており、それらで使われている技術(JavaScriptライブラリ・フレームワークなど)も多岐に渡ります。クロスブラウザでのテスト実行をサポートしているため、モバイル実機やOSバージョンなども含めると、その組み合わせは膨大になり、「特定のブラウザ、OSでのみ、特定のWebサイトでのテスト実行が上手くいかない」といったトラブルが起きることも少なくありません。

これらの問い合わせは、最初にカスタマーサクセスチームが受け付けます。一般的な(既知の)問題であればFAQをご案内したり、JavaScriptなどを用いた一時的な解決策をご案内することもあります。カスタマーサクセスチームが直接解決できなかった問題については調査依頼タスクが作られ、エンジニアチームにバトンタッチします。クリックされたはずのUI要素が想定した動きと異なる動きをしていたり、複雑な作りのUIで文字入力などのアクションが上手く動かない、といった相談が多いです。

TSEの主な役割は、これらの問い合わせを出来るだけ速やかに確認して、可能であれば顧客が取りうる一時的な回避策を準備することです。大抵の場合、JavaScriptステップでのワークアラウンドを提供することになりますが、場合によってはhotfix(緊急性の高い修正を、通常のリリースとは別に出すこと)を行うこともあります。

TSEと他のエンジニアの違い

TSEを、その他の専門職(例えばバックエンドエンジニアなど)と分けているのにはいくつか理由があります。

一つは、開発サイクルとは別のより高速なサイクルで問題を解決するためです。

Autifyではスクラム開発を採用しており、1スプリント2週間のリズムで運用しています。そのため、厳密に(差し込みを行わずに)運用すると、タイミングによっては問い合わせへの初動対応が2週間後まで待たされてしまい、ユーザーにとっての体験が良くありません。以前はこの問題に対応するため、各エンジニアごとに “CS DAY” を設け、カスタマーサクセスチームからの依頼に優先的に対応するようにしていたのですが、現在はTSEがスプリントとは異なるサイクルで活動することで対応しています。

もちろん、TSEが完全に開発チームと別の動きをしているわけではなく、開発チームの一員としてスクラムのリズムで開発も行います。より機動的な対応を行うため、いわば「片足だけ」外に出ているような形で、開発とサポートそれぞれに貢献していきます。

もう一つは、トラブルシューティングのプロフェッショナルに対して敬意を表明するためです。

個人的な意見ですが、トラブルシューティングにはセンスが必要です。様々な情報を整理し、原因を切り分け、推論し、根本原因を出来るだけ早く導き出すのはある種の職人技です。このような働きが得意で、なおかつそこに情熱を持てる人間は非常に貴重ですし、更に技術力も兼ね添えた方であればなおさらです。

TSEを他のエンジニアロールと分けているのは、こうした技術と才能を欲していることを明確にするためです。「トラブルシューティングの専門家」としてのスキルを、Autifyで存分に発揮してもらいたいと思っています。

TSEの魅力

タイトルにもありますが、「全てを知ることができる」のがTSEの強みではないかと思います。

Autifyは自動テストのためのプラットフォームですが、その構成要素は多岐に渡ります。代表的なのはテストの記録を行う “Autify Recorder” というChrome Extensionと、AIによる要素特定、そして実際にブラウザが動作している環境である “Autify Cloud” でしょう。もちろん、テスト対象のアプリケーションも構成要素の一つですし、SeleniumなどのOSSもそうです。

顧客が利用する過程で何か問題が起きたとき、まずはどの箇所でどのような問題が起きたのかを迅速に特定する必要があります。そのためには、あらかじめそれぞれの構成要素がどのような役割を担っているのかを知っておく必要があります。もちろん、それぞれのログがどこに保存されるか、直近で入った変更はどのようなものかなども知っていると助けになるでしょう。

特定の専門領域や担当分野にこだわらず、全てを「つまみぐい」しながら横断的に見る力が必要ですし、そのようにプロダクトに関わりたい人にはうってつけの仕事だと思います。好奇心旺盛な人にこそおすすめしたいと思っています。

加えて、もう一つの魅力として、「謎解き」があります。

テクニカルサポートの仕事は、時折さながら探偵のようになることがあります。問題を解決するために、ログやスタックトレースなどの断片的な情報をつなぎ合わせて、何が起きたのかを推測し、検証するのがテクニカルサポートの仕事です。時には泥臭く、まるで白紙のジグソーパズルのように思えるときもありますが、最後の1ピースがはまったときの快感は得難いものです。膨大なログの中から目当ての情報を見つけ出したときの高揚も同じです。こういう仕事が嫌いな人には絶対に理解されないでしょうが、好きな人間にはたまりません!

TSEに求められるスキルセット・マインド

ハードスキルとしては、Seleniumなどの自動化ツールや、JavaScript、それにWebブラウザについての知識が必要になります。特に、様々なWebサイトに対するトラブルシュートを行う以上、Webアプリケーションがどのように動作するのかについては深く知っておく必要があるでしょう。特にフロントエンドの知識は役に立ちます(自分はAutifyに入社するまで、こんなにフロントエンドの知識が必要になるとは思っていませんでした!)。ReactやVueなど流行のフレームワークについてはもちろん、jQueryなどの古めのライブラリの知識も役に立つことがあります。テスト対象のWebサイトが常にモダンな技術で作られているとは限らないからです。また、バックエンドについては、HTTPなどのプロトコルの知識や認証技術、暗号化、プロキシなどの知識が役に立つことが多いです。

ハードスキルと同様、あるいはそれ以上に重要なのが実はソフトスキルで、これまでの章で挙げて来たような「トラブルシューティングへの情熱」「全てを知り尽くしたいという強い好奇心」がこのロールには欠かせません。とにかく雑食で、色々なところから情報を集め、「Autifyについて知らないことは無い」と言い切れるぐらい様々な部分に精通したTSEこそ、本当に頼りになるのではないでしょうか。

不具合やトラブルには誰しも出会いたくないものですが、TSEは、様々なエッジケースや謎現象に日々遭遇し、それらを楽しめるような人に向いている職種だと思います(もちろん、一番困るのはユーザーなので、なるべく未然に防いでいけるのが理想です!)。僕自身もそういうタイプですので、そういう人と一緒に仕事が出来たら心強いし、なにより気が合いそうです。

おわりに

一見地味に見えがちなTSEの魅力がこの記事で少しでも伝わりましたら幸いです。もしご興味がありましたら、ぜひ一度あなたのお話も聞かせてください。カジュアル面談は応募の意思の有無に関わらずお受けしています。

カジュアル面談(全ロール共通)

TSEのJob Descriptionと応募フォーム

また、TSEというロールそのものを盛り上げる活動も引き続き行っていきたいと思います。もし同じ志の方がおられましたら、twitter: @tsueeemura または @AutifyJapan までご連絡ください。


※1) 本稿は なぜ今サポートエンジニアが熱いかテクニカルサポートエンジニアという働き方 などの素晴らしい記事/講演に触発されて書いたものです。