こんにちは。マーケティングプラットフォーム本部 開発部の木村です。
私は新卒一年目のエンジニアで、現在はブレインパッドのプライベートDMP「Rtoaster(アールトースター)」の開発チームに所属しています。今回は、ブレインパッドの新卒エンジニアの入社からの一年間をご紹介したいと思います。
この写真は2017年4月の入社式での一枚です。ここからブレインパッドエンジニアとしての一年が始まりました。
1. 配属前研修
部署に配属前の数ヵ月間は、新卒の新入社員全員が一緒に研修を受けます。同じ新卒社員と言えど、採用職種(※)はもちろん、学歴、専攻、出身、好きなエディタも様々です。そのメンバーが一緒に研修を受け、ブレインパッドの掲げる「Business x Analytics x Engineering」の習得を目指しました。
(※2017年新卒入社の職種はエンジニア、データサイエンティスト、ビジネス職でした。現在の職種はhttp://www.brainpad.co.jp/recruit/をご確認ください。)
カリキュラム
私たち2017年度新卒社員は、下表のようなカリキュラムで配属前の研修を受けました。
改めて見ると、プログラムの種類が豊富でかなり充実しています。
演習
座学だけでなく、手を動かす演習もカリキュラムに含まれています。
例えばある演習では、実データ(メディアの閲覧情報)を模したダミーデータを用い、
・データマート(Amazon Redshift)の作成
・前処理
・予測方法を考える&実装
・説明資料の作成
・フィードバック
と、分析の一連の流れを体験しました。
社内改善プロジェクト
配属前研修の仕上げとなる最後のテーマには、「社内改善プロジェクト」という小さなプロジェクトに取り組みました。このプロジェクトでは、社内の先輩社員をクライアント役として、クライアントからの要望を聞き、企画・計画・開発・プレゼンを2~3人のチームで行いました。
問題設定
私のチーム(エンジニアチーム)に与えられたお題を、簡単にご紹介します。当社には、「肉会」と呼ばれる福利厚生制度があります(社内制度についてはこちら)。「肉会」は、「シャッフルランチ」や「ランダムランチ」とも呼ばれるもので、システムがランダムに選んだメンバーとの食事代を会社が補助してくれる制度です。
「社内で好評の肉会を、もっとみんなにエンジョイしてほしい」ということで、肉会に関連した新しいサービスを作って欲しいというのが、クライアント役の先輩社員からのお題でした。
作ったもの
実装したのは、社内限定の口コミサイトです。
・肉会の口コミ(日付、場所、写真などを含む…)をアップロードする画面(下図左)
・アップロードされた情報を閲覧する画面(下図中央)
・肉会があった飲食店を閲覧する画面(下図右)
の大きく3つの画面から構成されています。
シンプルなアプリケーションですが、使いやすくなるように、以下のような補助機能を提案・実装しました。
1. 店の情報(営業時間、定休日…)を表示
2. 「次の肉会ここどうですかー」のような共有のメールを送る機能
3. 投稿された店を地図上にプロットする機能
4. 店名や人名のオートコンプリート機能
5. etc……
PythonとFlaskによりWebアプリケーションとして作成し、グルメサイトのAPIやOpenStreetMapをマッシュアップ、Google App Engine(GAE)上にデプロイしました。
配属前研修の感想
当社の配属前研修は、ビジネス、エンジニアリング、データサイエンスのすべてのカリキュラムが混ざっているのが特色だと思います。
私はエンジニア採用だったのですが、ビジネスの研修で学んだことはBtoB製品を考える手助けになっています。また、データサイエンスの研修では、私はルールベースでの予測をSQLで作るところを、データサイエンティスト採用の同期はランダムフォレストなどの難しい手法で取り組んだりして、考え方の違いを実感しました。
多くの研修がありましたが、一番大変で、かつ印象に残っているのは、最後の社内改善プロジェクトです。
私のチームのクライアント役の社員は、わざと(※)ふわっとした要求(例:「インスタグラムみたいなの作ってよ。オシャレなアプリも必須」)を提示してきました。
クライアント役の先輩社員やチームメンバー、サポート役の先輩社員と議論を行い、実現できそうな、具体的な機能・優先度(例:「インスタグラムを作りたいというより、画像アップロードしたいんですよね?」「アプリ必須というより、スマホで使えればいいのですよね?」)に落とし込んでいきました。その作業が大変でもあり、また、面白くもありました。
※ 後日聞いたところ、実際の仕様決定のプロセスを訓練するためとのこと
2. 配属後
新卒全体での配属前研修の後は、各配属先に分かれての配属先での研修と業務を行います。ここでは、私の所属するマーケティングプラットフォーム本部開発部の研修と業務についてご紹介します。
私が所属する「マーケティングプラットフォーム本部 開発部」は、プライベートDMP「Rtoaster」や運用型広告最適化ツール「L2Mixer(エルツーミキサー)」などの、デジタルマーケティング製品の自社開発・運用を行っています。
コードレビュー
配属前の研修では、全部門・全職種が一緒に行われるということもあり、プログラムの「中身」を指導してもらう時間はありませんでした。配属後は、その「中身」の部分を改善するための研修があり、開発部の諸先輩からコードレビューを受けました。なお、当社の開発(データサイエンティスト含む)の多くは、コードレビューを開発プロセスに取り入れています。
具体的には、Python + Django(サーバーサイド)+ D3.js + Vue.js(フロントエンド)で、ログを可視化するWebアプリケーションを作り、そのソースコードをレビューしていただきました。
上の画像がレビューの模様です。100近いコメント(図中、右の吹き出し)の数々が諸先輩の指導の手厚さを物語っています。下の方では、コメント件数が「99+」と上限に到達してしまいました。それらを受けて、
・実装の前の段階で確認を取る、より小さな単位でのプルリクエストなどで、手戻りを小さくする
・ライブラリやツールを使用する時は、ドキュメントをキチンと読み込む
などの対策を先輩方と議論し、改善しました。
プルリクエストでさまざまな指摘をいただいた中で、特に苦労したのは変数やメソッドなどの名前の付け方(例:メソッド名に行っている作業を過不足なく書く)です。先輩からは「名前をうまく付けられないのは、その前の設計ができてないからだ」などのアドバイスをいただいたのですが、そう言われても難しい…と苦労しています。
業務
エンジニアが、製品の開発に携わるには、その機能・内部実装を理解する必要があります。というわけで、私も自分が携わる「Rtoaster」の機能・内部実装の理解に業務として取り組みました。
機能・内部実装の理解と言われて、正直私は「簡単そうだなー」と若干なめていたのですが、内部の実装を掴むのはそれは大変(※)でした。(※もちろん、ユーザーとして製品を使用するのは難しくないです!)
苦労した理由は、
・「Rtoaster」の機能がかなり充実している
・そのため、コードの行数が多い
・パフォーマンスを追求するため、内部で「頑張っている」部分もある
ため、やむを得ない部分もあるのですが、別の原因として、ソースコードをいきなり眺めるだけで理解しようとしたのがまずかったと思っています。
マニュアルや社内文章で「その機能で、何をしたいのか」を把握してから読む、シーケンス図などのUML図で全体像を可視化して把握するなどを行うようにして、理解の速さが少し向上しました。
もちろん、読むだけではなくちゃんと開発も行っています。例えば、特定のお客様用のデータを取り込みプログラム(いわゆるETL)を書いたり、既存機能をクラウドストレージを使用するように変更するなどです。
ETLの業務の一環では、先輩社員とお客様を訪問し、コミュニケーションスキルを勉強させていただいています。特に、コンサルタントの社員の持つ、お客様のやりたいことと、弊社のプロダクトができることを、柔軟に読み替えできるスキルは見習いたいところです。
ところで、当社では、前述のAmazon S3などのAmazon Web Serviceの他にも、Google Cloud Platform(紹介ブログ)、Microsoft Azure、ベアメタルサーバー、オンプレミス(実機)といった様々なインフラ環境を利用しています。私も、社内で運用するサーバーの構築を行っています。
何気なく設置していますが、これは数年前まで実際にサービスで利用していた何百万円もするサーバー(メモリ512GB、Fusion-io ioDrive Duo×2)です。開発環境として第二の人生を送るため、そのセットアップを私に任せてもらいました。年収数年分の重みを感じつつ、OSのインストールやRAIDの構築、また、Jenkinsなどの開発ツールのインストールを行っています。
社内の開発環境には、いろいろな機能が詰め込まれている&普段触らないサービスも多いので、移行作業はやりがいに満ちあふれていますし、クラウド全盛のご時世に、このような実機に触る機会があるのは貴重な経験だと思っています。
上図は、大先輩とオフィスの片隅でセットアップしている模様
3. 制度
社会人一年目は、初めてのことばかりで不安になる時もあります。
当社にはそんな不安を助けてくれるメンター制度があり、近い部署や年齢が近い先輩社員がメンター(指導役)となり、メンターとメンティ(指導される方)の食事代を会社が補助してくれます。最近の技術トレンド、社内制度、美味しいお昼ごはん・晩ごはんなど、業務に関係すること・しないこと、多くのアドバイスをいただいています。
(写真は、優しいメンターから、役に立つアドバイスを頂いている様子です。)
メンター制度の他にも、先ほどご紹介した「肉会」や、部署の先輩とのランチ(ウェルカムランチ)、クラブ活動といった制度があり、会社に早く馴染めるような仕組みとなっています。(社内制度についてはこちら)
また、マーケティングプラットフォーム本部 開発部の新卒にはジョブローテーションがあり、部内のグループ(主にプロダクト単位)を移り渡ります。私はまだ二つ目のグループですが、製品の性質による開発活動の違いや、構成メンバーによるチームの雰囲気の違いを知ることができるほか、いろいろな人と関わることができて、大変勉強になります。
4. まとめ
今回は、ブレインパッドの新卒エンジニアの入社一年目について、ご紹介しました。いかがでしたでしょうか?
・弊社が分析「だけ」の会社ではなく、エンジニア(や、もちろん営業やコンサルタントやバックオフィス)もいること
・新卒エンジニアが入社後、どんな一年を送るか
を、少しでも感じていただければ幸いです。
ちなみに、私の入社前のイメージと、入社後の実際は下のような感じです。
■入社前
*即戦力の人ばかりで、新卒もいきなり現場
*なんかキラキラしたAIっぽい仕事
*フレックス制とは書いているけど…
*土日も仕事
■入社後
*(配属後含め)意外と研修の時間がある
*泥臭い仕事(サーバーのセットアップなど)も結構ある
*ちゃんとフレックスしてる
*土日はちゃんと休める
最後となりましたが、弊社では、開発エンジニアを積極的に募集しています。
新卒採用・キャリア採用ともに、ご応募をお待ちしています!
www.brainpad.co.jp