Treasure Data Summer Intern 2015

8/3〜9/30 の2ヶ月間、トレジャーデータ(以下、TD)ではSummer Internで3名の学生を受け入れ、その受入責任者を担いました。 初めての試みでしたが、いずれの学生も優秀で与えられたタスク*1を成功裏にこなしてくれました。

熱が冷めないうちに、来年度のためにもここに内容をまとめます。

TDインターンの特徴

TDインターンの特徴は、基本的に開発成果をオープンソースソフトウェアとして公開することです。Fluentdnanosecondサポートマルチプロセスでのソケット共有HivemallへのFactorization Machineの実装それぞれgithubでオープンに開発しております。

成果を全てオープンソースとすることはTD的には利点ばかりではありませんが、インターン生にはインターン期間が終わっても自身が携わったプロダクトに興味を持って頂けえば、と思っております。

インターン生にも2ヶ月しっかりと開発に携わって頂きました。社内Slack部屋などで普段のTDエンジニアリングの雰囲気を肌で感じて頂けたのではないかと思います。

インターン生のメンタ

@myui機械学習担当、@tagomorisがTDインテグレーション/Fluentd対応、@repeatedlyがFluentd担当のメンタをしました。

TDインターンの待遇面

月40万を設定しています*2。就業時間は結構自由ですがコアタイムは11am-6pmあたりでしょうか。インターン生にもお昼は無料のケータリングが支給されます。

選考について

応募は国内外から50名程度の応募*3がありまして、8-9名程度を面接させて頂き、最終的に3名を採用しました。学部生でも優秀な人は居たのですが、修士1年がサマーインターンにベストな応募時期なのかもしれません*4

選考では簡単なコーディングテストをするとともに、Treasure Dataへの志望動機、トレジャーデータにおけるタスクと学生のスキルの適合性を見ました。トレジャーデータで開発しているオープンソースプロダクト(例えばFluentd)を過去に利用した経験がある学生、オープンソースプロダクトにcontribute経験がある学生、あるいは機械学習を自身の研究としているような学生は評価が高いです。

また、Githubレポジトリに面白い自作ソフトウェアを公開している学生も評価します。学生だと中々経験が積めないのですが、チームでの開発経験*5や読みやすいコードを書く習慣があると良いと思います。就職してからも必要だと思うので(Githubアカウントを作って)Gitを使いこなせるようになっておくことをお勧めします。

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

最終発表

中間発表は資料は英語、発表は日本語で行ったのですが、最終発表はUSサイドも参加することもあって*6英語での発表となりました。Ustream配信を録画したビデオはこちらで公開しております*7が、インターン生の皆さん普段からオンライン英会話等で英語の学習をされているようで滞りなく発表をこなしているのが印象的でした。

神エンジニアのkamipoさん曰く、

成果発表スライド

コーディングテスト

同僚のやっていた簡易コーディングテストを改造して、次のような親子関係が分かる二分木を描画してもらうテストをしました。

プログラミング言語はうちで使うことを見越してRuby/Python/Java/C++のいずれかでお願いしました。制限時間は10分-15分ぐらい。

深さnはとりあえず4で固定。できる人は、任意のn(n>=1)でやって貰うという感じ。各段の数字は2^(n-1)です。paddingの戦略を考える必要があります。 n>=5まで考えたり、nを任意とするとpaddingがちょっと複雑になります。

家で落ち着いて書くと簡単だと思うのですが、面接中だと皆さん結構テンパります*8ので、完成したかというよりは論理的に考えらているかを見ました。

4段固定でよい場合はヒントを与えてトップダウンの木描画を、あるいはstackを使って下段から積む上げて描画して貰うという感じです。 stack使う場合は段数多くなったらどうしますか的なビッグデータ的な質問をしていく。再帰で書いていた人はいなかったですが、末尾再帰の最適化の話を振ってみたり。

インターン最終日の打ち上げ

メンタとインター生一同で、Barbacoaシュラスコで打ち上げ。イチボと焼きパイナップルが良かったです。

さいごに

インターンの一人は9月でちょうど大学修了のタイミングだったこともあり、来月からTDでエンジニアとして働き始めます。

状況次第ですが、来年度もできたらサマーインターンを募集したいと思っておりますので、何かの参考にどうぞ。

TDインターンに関するツイート

2015年度のサマーインターンの石川さんがインターンレポートを書いてくれています。

qiita.com

*1:それぞれに成果が見込めるだろう小さめのタスクと挑戦的なタスクの二つをそれぞれに設定。

*2:学生によっては研究室合宿等もあるので稼働日で日割です。

*3:2割程度は海外からの応募です。

*4:もちろん、IPA未踏開発者など学部生でも突き抜けている人なら選考突破できるでしょう。

*5:コミットメッセージをちゃんと書く、コミットを機能変更ごとに行う、Git flowを抑えているなど。

*6:CTOの鶴の一声で

*7:音声や画面を一部取りこぼしております。

*8:私も経験ありますが十分にストラテジ練る前にコーディング始めちゃうと...簡単なのにとテンパることになる。