見出し画像

クラビスで活躍する、フルスタックエンジニアの条件とは

こんにちは!クラビスの佐藤です。

クラビスではプロダクトやチームごとに開発体制が異なっており、エンジニアの役割もチームごとにさまざまです。
今回は、そんなクラビスのエンジニアの役割の中でも”フルスタックエンジニア”に焦点を当てて、スキルの捉え方やキャリアの歩み方について小林 祐太さんにお話を伺わせていただきます!

小林 祐太
2021年11月クラビスに入社。
前職では独立系Sierに3年半ほど在籍。コールセンターのオペレーターを支援する業務システムや、畜産農家向けのIoTシステムの保守開発に携わる。現在、クラビスでは『マネーフォワード クラウドインボイス』のバックエンド開発を中心に開発を担当。一部フロントエンドの開発にも携わり、フルスタックエンジニアとして活躍している。


佐藤:早速ですが、そもそもフルスタックエンジニアとはどういった役割なんですか?

小林:定義が会社によって異なるケースもありますが、”企業のシステム開発や運用における、複数のスキルを持つエンジニア”であったり、もっと平たく言えば”フロントからバックエンド、ひいてはインフラまで開発に関わる実務を一定以上の水準で遂行できるエンジニア”としても使われているのかなと思います。

クラビスでは、後者のイメージで使うことが多いように思います。

佐藤:では、クラビスがフルスタックエンジニアを求めている背景はなんでしょうか?

小林:もともとは、プロダクトを開発する上で役割を分業するほどの業務量や人手がなく、まずは必要なことをやるという体制がスタートでした。各々がフロントエンドもバックエンドも触るしインフラも見に行かなければならないという状態でした。

佐藤:必要にかられて生まれた役割だったんですか?

小林:そうですね。プラスしてお伝えしていくと、開発の観点では分業すると学習効率や開発効率が悪かったことも要因だと思っています。当時は画面とAPIを同時に作ったりすることもあり、役割を分けてパスし合うと片方が手を持て余してしまうこともありました。横断的にやった方がプロダクトに対する理解も深まりますし効率的だったんです。

大きなチームで分業し役割とフローの仕組みを作るよりも小さなチームで一人ひとりの役割を広くしたほうが良いというのが、リソースに制約がある中での当時の判断でした。


佐藤:チームが大きくなってきた今でもフルスタックの役割がある理由はなぜでしょうか?

小林:理由をあげるといくつかあるのですが、一番わかりやすいこととしては「プロダクトを横断的に開発することで理解が深まる」かなと考えています。今のチーム体制は、大まかな仕様を検討してタスクの割り振りをしていくのですが、細かな仕様や設計は開発するメンバーに任せています。

メンバーは「ここはフロント、ここはバック、ここはインフラ」と分解して設計し、誰かに依頼をするのではなく自ら実装をしています。それによりプロダクトの実装やプロダクトそのものを理解する必要があり、結果として理解が深まることにつながっています。理解が深まることは特に将来においての開発速度につながってくると考えています。

また、クラビスではエンジニアのプロダクトに対する発想も大切にしていますので、一部分だけ見ていては新しいチャレンジも、既存の負債回収もうまくいかないケースがあります。

そういった、これまでの経験と作り上げてきた開発のフローを鑑みた時、エンジニアがプロダクトの本質を理解し、開発を進めるためには横断的に活動できる状況がマッチしているわけです。

佐藤:フルスタックに活躍してもらうためには高い技術力が求められると思います。そこはどのように考えていますか?

小林:入社時点で技術力が高いに越したことはないですが、あとから技術力はついてくると考えています。実際STREAMEDチームの前任のリーダーは入社するまでPythonを触ったことがありませんでした。もちろん独学もされていましたが実務を通してスキルアップをし、今では更に幅を広げAIにも関わっています。実は、実務でちゃんとPythonを使うことは初めてというメンバーがクラビスでは半数以上になります。これまでのキャリアは、バックエンドエンジニアが8割くらい、2割がフロントエンドで、「昔からバリバリのフルスタックエンジニアです!」みたいな人はいないですね(笑)

佐藤:そうすると、クラビスが求めるフルスタックエンジニアはどういった人なんでしょうか?

小林:なんでもできる技術力よりも”やりたい領域が広かったり、必要に応じて必要なことを学びアウトプットができる”マインドをもった人だと思っています。ただ技術的になんでもできる人と働きたいわけではないです。
もちろん高い技術があることに越したことはないですが、プロダクトの成長や変化とともに新しいことを学べる人と一緒に働きたいと考えています。今いるメンバーもそういった思考を強くもっています。実際に、多くのメンバーが入社時にPythonに詳しくなければReactも触ったことがある程度でした。それでも、自ら好奇心をもって学ぶことで、今ではスピーディに開発ができるチームへと成長しています。

そういった経験もあることから、クラビスではフルスタックエンジニアに対して、今もっている技術力以上にどういうマインドをもっているのかを重要視しています。

佐藤:フルスタックエンジニアであることのメリットはあるのでしょうか?また、どうすればそういったキャリアを歩めますか?

小林:メリットとしては、横断的に開発を行うことでシステム全体の理解を深め、新しい開発をするときに豊富な選択肢を持つことができたり、最適解を広い視野の中から選ぶことができることだと思います。また、いわゆるスタートアップで小規模開発を行っている企業では重宝されるのではないでしょうか。

キャリアの歩み方というと難しいですが、まずは自分が関わっている開発の全体像を把握することが大事です。とはいえ、いきなり全ては把握できないと思いますので、得意ではない部分に触れていくと良いのではと考えています。例えば、フロントエンドが得意なら、バックエンド側の理解を深めていく、その上で自分で何か作ってみる、みたいなことが重要だと思います。
特段フルスタックエンジニアに限らず、エンジニア全般に言えることにもなってしまいますが、とにかく好奇心をもって学び続けることが一番重要だと思います。

佐藤:クラビスではそういった、スキルアップのためにどんな支援があるのでしょうか?

小林:正直にお伝えしますとオンボーディングなどの教育が体型立ってあるわけではなく、いわゆるOJTがメインになります。今回フルスタックエンジニアについて話してきましたが、もちろんクラビスでは得意分野に特化することも許容する体制があります。そのため、「自分の得意+開発上で触れる範囲」という開発を行う人もいれば「得意不得意に関わらず全ての範囲」という人もいます。特にフルスタックエンジニアを目指す人には得意ではないところに触れてもらう機会を意図的に作っていますし、各々の得意分野でフォローしあっていますので、無理のないインプットとアウトプットができるようになっています。

いずれにしても、興味があれば触れることができ、学んでいけばチャレンジできる環境があります。機会の提供を惜しまないことやチャレンジできる環境があることが一番の支援かもしれません。

今回の記事では、クラビスで活躍する、フルスタックエンジニアの条件についてお話を伺いました。

クラビスはこれからも大きく価値を拡大していくフェーズです。ユーザーに向き合い、本当に価値のあるプロダクトを生み出す技術を追求できる仲間を募集しています。
ここまで読んでいただいて、少しでも話を聞いてみたい、もっと働く人の顔をみてみたいという方はぜひ一度カジュアル面談をしませんか?


この記事が気に入ったらサポートをしてみませんか?