Treasure Data Summer Intern 2015
8/3〜9/30 の2ヶ月間、トレジャーデータ(以下、TD)ではSummer Internで3名の学生を受け入れ、その受入責任者を担いました。 初めての試みでしたが、いずれの学生も優秀で与えられたタスク*1を成功裏にこなしてくれました。
熱が冷めないうちに、来年度のためにもここに内容をまとめます。
TDインターンの特徴
TDインターンの特徴は、基本的に開発成果をオープンソースソフトウェアとして公開することです。Fluentdのnanosecondサポート、マルチプロセスでのソケット共有、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)
- 作者: 池田尚史,藤倉和明,井上史彰
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (133件) を見る
最終発表
中間発表は資料は英語、発表は日本語で行ったのですが、最終発表はUSサイドも参加することもあって*6英語での発表となりました。Ustream配信を録画したビデオはこちらで公開しております*7が、インターン生の皆さん普段からオンライン英会話等で英語の学習をされているようで滞りなく発表をこなしているのが印象的でした。
神エンジニアのkamipoさん曰く、
インターン生全員僕より英語できるやばい
— Ryuta Kamizono (@kamipo) 2015, 9月 30
成果発表スライド
コーディングテスト
同僚のやっていた簡易コーディングテストを改造して、次のような親子関係が分かる二分木を描画してもらうテストをしました。
プログラミング言語はうちで使うことを見越してRuby/Python/Java/C++のいずれかでお願いしました。制限時間は10分-15分ぐらい。
深さnはとりあえず4で固定。できる人は、任意のn(n>=1)
でやって貰うという感じ。各段の数字は2^(n-1)
です。paddingの戦略を考える必要があります。
n>=5
まで考えたり、nを任意とするとpaddingがちょっと複雑になります。
家で落ち着いて書くと簡単だと思うのですが、面接中だと皆さん結構テンパります*8ので、完成したかというよりは論理的に考えらているかを見ました。
4段固定でよい場合はヒントを与えてトップダウンの木描画を、あるいはstackを使って下段から積む上げて描画して貰うという感じです。 stack使う場合は段数多くなったらどうしますか的なビッグデータ的な質問をしていく。再帰で書いていた人はいなかったですが、末尾再帰の最適化の話を振ってみたり。
インターン最終日の打ち上げ
メンタとインター生一同で、Barbacoaのシュラスコで打ち上げ。イチボと焼きパイナップルが良かったです。
#td_intern 打ち上げでシュラスコ! pic.twitter.com/JYEv114TN8
— tagomoris (@tagomoris) 2015, 9月 30
さいごに
インターンの一人は9月でちょうど大学修了のタイミングだったこともあり、来月からTDでエンジニアとして働き始めます。
状況次第ですが、来年度もできたらサマーインターンを募集したいと思っておりますので、何かの参考にどうぞ。