みなさんこんにちは、FOLIO採用担当です!
今回のテーマは(タイトルでネタバレしてますが)「FOLIOで働くことにちょっと興味があるんだけど、Scala未経験だしな……」「FOLIOは優秀なエンジニアが多い環境らしいけど、Scalaわからないしな……」と悩んでいらっしゃる方々に「Scala未経験でも大丈夫ですよ!」と200%の気持ちでお伝えするインタビューをお送りします。
※本インタビューは2021年冬頃に行ったものとなります。
今回はScala未経験からFOLIOに入社して、現在は顧客基盤部でバックエンドエンジニアとして活躍されている澤田さんと、証券基盤部所属でメンターのご経験もある松林さんにお話をうかがいました。
澤田 正瑛/Masaaki Sawada
略歴:2015年にシンプレクスに入社。金融機関向けのシステム開発・運用にフロントエンド~インフラまで幅広く携わるほか、ジュニアメンバーのメンターやチームリードなども担当し、2018年度には社長賞を獲得。
2019年より、FOLIOでバックエンドエンジニアとして、テーマ投資サービスの開発・運用や、toBプラットフォームの設計・開発を担当。
松林 祐/Yu Matsubayashi
略歴:ドワンゴにてメッセージングシステムの共通基盤(akka + Kafka)開発に従事。ScalaText執筆メンバー + 新卒教育に携わる。2017年より、FOLIOでバックエンドエンジニアとして証券システムの開発に携わる。
※画像内の左が澤田、右が松林
Scala未経験者へのフォローアップ体制が充実
司会:
今日はよろしくお願いします。まずは簡単にFOLIOに入る前の経歴を教えてください。
澤田:
2015年にシンプレクスという金融系のSIerに入社し、エンジニアをしていました。シンプレクスには5年間在籍して、その後2019年7月にFOLIOに入社しました。
司会:
前職ではどんな言語を使っていたんですか?
澤田:
前の会社ではバックエンドだったんですが、Javaを使うことが多かったです。ただ、プロジェクトによってはフロントエンドでReactを使ったり、AWS関連の仕事をする時はPythonでスクリプトを書いたりしていました。
司会:
FOLIOに転職したきっかけや動機などあれば教えてください。
澤田:
一エンジニアとして自分のスキルを上げるために、より高い技術力を持った人たちに囲まれて働きたかったというのが大きな理由です。それに加えて金融ドメインという前職の経験の活かせる職場だったのでFOLIOを選びました。
司会:
転職活動をしてる頃から、FOLIOがScalaを使っていることは知っていたんですか?
澤田:
はい知っていました。Javaのイベントで以前FOLIOで働いていた方が登壇していて、その時にScalaという言語があるのを知りました。
司会:
面談時にはそのあたりの経験の話になると思うのですが。
澤田:
実は私はリファラル採用だったのですが、声をかけてくださった方が私の技術力や仕事ぶりを知っていたので「まあJavaをあのぐらい書けるなら何とかなるでしょう」と思って頂いたのかもしれません。
司会:
Scala未経験でも、ある種のお墨付きのようなものがあったから、あまり抵抗がなかったんですね。
澤田:
抵抗が無いと言ってしまうと嘘になってしまいます。別の言語の環境となると、実際にプログラムを書く以外にも開発のフローやエコシステムがガラリと変わるので、本当に自分はバリューを発揮できるのか?という点は不安でした。
司会:
そんな不安の中で入社されて、どうやって解消されるに至ったのでしょうか?
澤田:
面接の時からFOLIOのメンバーはフレンドリーで優秀な人が集まっているような雰囲気で、入社後顔合わせの時もあまり変わらなかったので、安心して入れました。あと、入社前からSlackでやり取りをしてたり、メンバーとランチに行ったりしていたので、全く知らない会社に入る感じはしませんでした。
司会:
そんなにカジュアルな感じで対応してくれるなら、入社のハードルもちょっと下がりますね。入社前って独学で勉強したりしたんですか?
澤田:
一応技術書は買ったんですが、あまり読まず、基本的にチュートリアルを読んですこし触ってみたり、簡単なプログラムを書いたりはしました。
あとは、Scalaでよく使われているWebアプリケーションフレームワークのPlay Frameworkがあるので、それを使ってHello worldをしたりしてました。
「業務での困りごと」は放置せずにすぐフォロー
司会:
入社をされてからはどういう流れで仕事に就いたのでしょうか?インターンのような期間があったりするのですか?
澤田:
入社するとメンターがつきます。また、チュートリアル用のリポジトリがあって、業務で利用されているフレームワークやライブラリに従って典型的なAPIを実装するチュートリアルを通してScalaを学びます。
これをやると本番のコードを見ても流れは基本同じなので、これにプラスして要件がどのようなものを考えればいい仕組みになっているんです。
その経緯を経てから初タスクがアサインされる、という流れです。なので基本的には入社して何もフォローがなくて困った、みたいな状態はありませんでした。
司会:
技術的に大変だった、みたいな経験はありましたか? もしあったとしたら、どのように克服していきましたか?
澤田:
当時のメンターの方が丁寧に教えてくださって克服しました。メンターがいなかったら結構厳しかったと思います。かなり具体的にハンズオンのような形で進め方を教えてくださったり、出来た後のQAの進め方を伴走してくださったりしたのですごく楽でした。
司会:
色々紆余曲折を経て、「これならやっていけるかも」と思ったのはいつ頃ですかね?
澤田:
そうですね、入社してから1〜2ヶ月後ぐらいですかね。ある程度一人でそこそこのボリュームのコードを書いて本番のリリースまでやって、問い合わせにも応えられるようになったあたりで、これは大丈夫かなと思えるようになりました。
司会:
結構短期間なんですね。そんな短期間で業務を遂行できるというのは、オンボーディングの質が高いというのが考えられるのですが、具体的にオンボーディングの内容について教えてください。
澤田:
時間は1日30分ぐらいで、最初の10〜15分ぐらいはデイリーのように日々の困りごとや進捗の話をして、残りの10分〜20分はオンボーディングに飛び入りで参加してくれた人の紹介や雑談をしていました。
司会:
FOLIOのオンボーディングは、違う部署もそうですが、色々な人が飛び入り参加するの歓迎なんですよね。だから部署外の人とも繋がれて、これが結構業務上の効率UPにつながったりすると聞いてます。
さてここで、「オンボーディングする側」の話も聞いてみたいと思うので松林さんにも聞いてみましょう。Scala未経験で入ってくる方に技術的な面も含めてレクチャーする上で気をつけていることなどあったら教えてください。
松林:
なるべく質問しやすい、困っていることを聞きやすい環境を作るようには意識しています。「わからないから後で聞こう」というよりもリアルタイムでその人が困っていることに対してフォローできるような環境を作っています。
あとはチーム全体として、色々な論文を読んでやっと意味がわかるようなコードを皆が書かなくてはいけない、という状態は避けるようにしています。
技術的に難しい手法を使う場合でも、うまくラップして普段書くコードは簡単に書けるようなアーキテクチャを心がけています。あと、コードやアーキテクチャの意図を説明したりハマりどころが分かるように、チームでコーディングガイドラインを作っています。
オンボーディング中の一部風景。(Zoomで画面共有をしながらペアプログラミング中)FOLIOの開発組織では、分からない事があれば一緒に課題を解決していくスタイルでのオンボーディングが日々行われている。
求めているスキルと知識
司会:
お二人に聞きたいのですが「Scalaの知識がなくても、これだけ知っておけば大丈夫!」という知識や技術があったら教えてください。
澤田:
いくつかあると思うのですが、一つはアプリケーションアーキテクチャーの知識です。一般的にコードを書く時にはこういう設計で書くと良いとか、こういう点に注意するとパフォーマンスや運用がやりやすくなる、といったような言語に依存しないアプリケーションのプログラミングスキルは絶対あったほうがいいですね。
あとはScala以外にも目の前の言語をきちんと理解しようとする姿勢とか、色々な書き方を試そうとする前向きさがあれば、Scalaもすぐにキャッチアップできると思います。
松林:
私も言語に依存しない部分の方が大切だと思っています。どちらかというと全体の設計技術や運用技術の部分は経験を積む必要があるので、そこのスキルがそこそこあれば、あとはなんとかなると思います。
オブジェクト指向やクリーンアーキテクチャーがどうとか、実際に運用する上でMySQLのこういうクエリはindex貼らないとまずいとか、このデータはこのぐらいのボリュームがあるので、処理にはこのぐらい時間がかかりそうだようね、みたいな全体を俯瞰した視点は大切ですね。
言語依存の面では、Scalaらしさ、みたいなところは幾つかあるので、たとえばimmutableに書き換えたりしないで書くことだったり、OptionやEitherを使ってコードを書くとこういうメリットがある、みたいな部分を何となく理解して、ちょっとおもしろいなと思ってもらえれば全然いいのかなと思います。
澤田:
先程松林さんが言っていた、「調べる勘の良さ」を持っているといいかもしれないですね。上手くいかないなと思った時にSQLを叩いて調べることができたり、逆にChromeデベロッパーツールでフロントエンド側から調査したり、ログを整形して分析したりという調査は半分技術で半分が経験と勘みたいなところがあります。
SQLは技術ですが、どういうSQLを叩けばいいかは経験と勘ですし、デベロッパーツールにしてもどういうことができるかはJavaScriptとHTMLの知識ですが、それをどうやって調べるかは勘ですよね。ログを読むにしても、テキストのフィルタリングなどは技術といえば技術ですが、どうフィルターをするかは勘ですよね。そういう部分に勘を働かせられる人は、問題なくキャッチアップしていけると思います。
松林:
慣れている言語で知らないライブラリとかを渡されて、その公式ドキュメントやGitHubのコードを見て何となく動くものが作れたり、よくわからないエラーが出た時に調べて解決まで導ける人であれば、どんな言語でもやっていけるんじゃないかと思います。あとはStack Overflowからコピペしてトライアンドエラーしてみたりする試行錯誤する姿勢は大切ですね。
司会:
ちなみに、今現在FOLIOでScala未経験から入ってきた方って何名ぐらいいらっしゃるんですか?
澤田:
全体では30%程度。ここ1年で入社した人に限ると60%くらいがFOLIOに入ってからScalaを使い始めているようです。
司会:
なるほど、ここ最近はより比率が高いんですね。Scala未経験の方でもしっかりフォローする体制があるから成立してるんでしょうね。ちなみにどういう方がFOLIOのカルチャーにフィットすると思いますか?
求めているのは「変化を楽しめて、信頼できる人」
澤田:
そうですね、弊社のバリューに「変化を楽しむ」というのがあるのですが、変化を楽しめる人はカルチャーフィットすると思います。
僕が入社したときはB2B事業なんて1つもやってなかったのですが、今では大きな事業になりつつあります。刻々と変化する環境の中で柔軟に自分が活躍できそうな業務に手を挙げられる人ならば、色々な面で活躍できる環境ではあります。
松林:
私はFOLIOに比較的長いこと在籍しているのですが、本当によく変化する組織なのでその変化を楽しめて、例えば言語が変わるっていう状況になったら本屋に参考資料を買いに行く(笑)みたいな勢いで変化に柔軟に対応できる人には面白い職場だと思います。
澤田:
あと大切なのは、これも弊社のバリューなのですが「背中を合わせられる人」つまり信頼できる人ですね。
「この人に任せれば大丈夫」と思えたり、「もしダメだとしても、本当に取り返しのつかないぐらいヤバくはならないから大丈夫」って思えて信頼できる関係性を持てる人。これは弊社のメンバーはとても大切にしていると思います。
松林:
色々なことが全部わかる、という完璧な人間なんて世の中にいませんから、わからない部分はわかる人に任せる。そして誰かに自分も任せてもらえる、この「背中を合わせられる」というのがすごく大事です。
澤田:
僕は仕事をする上で「その人がOKと言ってるのだからOKなんだろう」と思っていますし、「その人がダメって言うなら、それはサボったり努力を怠ったりしたからではなくて、本当にその人が無理なら無理なんだろう」と思っています。そのぐらいの信頼でFOLIOのメンバーとは付き合うようにしています。それは過去に一緒に仕事をしてきて、期限に合わせて進捗を出すとか、遅れそうなら報告をするとか、当たり前のことですが細かいこともきちんと言語化して報告する、そういう細かいことをコツコツ積み上げて信頼できる・される人になっていける人。これは弊社で働く上で大切なポイントです。
司会:
そろそろ時間になりました。FOLIOには興味を持っているけれど、Scala未経験で応募に躊躇している人にメッセージをお願いします。
澤田:
オンボーディングも手厚いですし、FOLIOには綺麗なコードや綺麗な設計があります。また逆に失敗した設計やコードもあります。そういう環境も含めて、自分の技術力を高める場として弊社はいい環境だと思います。なおかつそんな環境で変化を楽しめて、今の自分では予測できないような成長をしてみたい、と思っている人と頑張っていきたいです。
司会:
松林さんも、社歴の長い立場から、FOLIOに興味を持ってくださっている方にメッセージをお願いします。
松林:
自分なりに別の言語でちゃんとやってきた、という気持ちがある人なら、Scala自体のキャッチアップは全面的にフォローするのでそんな難しくないので、あまり気にせずにドシドシ応募して頂けると嬉しいです。
澤田:
選考もScalaでなくてもJavaでもPythonでもRubyでも受けられるので、是非ご応募お待ちしております。
司会:
本日はありがとうございました!