サイバーエージェント新卒エンジニア技術研修2016 | サイバーエージェント 公式エンジニアブログ

 

みなさんこんにちは。

 

技術組織戦略G & 技術内閣の板敷です。

普段はAmebaのシステム障害の火消し → 障害対策ならびにエンジニアの育成評価等をしています。

 

今回は、先日終了したサイバーエージェント新卒エンジニア技術研修について紹介したいと思います。

 

研修概要

従来の研修内容を一新、内製での技術研修に挑戦

 

これまでの新卒技術研修は委託先講師の話を新卒全員が聞くという、いわゆる「座学中心」の研修でしたが、ここ数年の技術的進歩、組織内でのエンジニアに対する期待の変化を反映するため、内製での研修へとゼロから再設計しました。

 

 

研修のコンセプトと概要

ベースとなる研修のコンセプトは以下2点からなります。

  1. 全体のアーキテクチャを俯瞰して設計、技術選定をする
  2. 自分の頭で考え、動く

これらのコンセプトを実現するために今回の研修では、2つの某有名サービスを

自分たちで設計、実装するという形をとりました。

 

研修詳細

次に研修全体の流れに沿って、詳細内容を紹介します。

 

以下1~6の流れをお題を変えて2回繰り返すことで、1回目の反省を2回目に活かせる設計としました。(新卒だけではなく、運営側もw)

 

1.お題、レギュレーション、チーム分け発表

 

■お題

1回目は某有名SNSサービス、2回目は某有名検索エンジンの開発としました。

 

■開発レギュレーション

レギュレーションは機能面、性能面、コスト面の3軸からなります。

 

機能面

 ・投稿ができる、フィードが表示される、お気に入りができるなど(SNSサービス)

 ・and, or , not検索ができる、検索結果の関連度/適合率/網羅性など(検索エンジン)  

 

性能面

 ・40万フォロワーのいるユーザが投稿してからN秒以内にフォロワーのフィードに反映される(SNSサービス)

 ・継続的に検索結果がN秒以内に返ってくる(検索エンジン)

 

コスト面

 ・開発中のインスタンスコストを$300程度に抑える(今回はAWSを利用)

 

■チーム分け

・各チーム4名(一部3名)で構成。

・基本的に得意技術がバランスよくなるようなチーム分けを目指しました。

 

 

2.設計コンセプト、技術選定

次にお題、レギュレーションを踏まえ設計コンセプト、技術選定を行います。

 

 

※以下実際の例

 

設計コンセプト

・「疎結合で可搬性の高い、スケーラブルなアーキテクチャ」

技術選定

・Go, Python, AngularJS2, Elasticsearch, Docker, Kubernetes, GRPC, Terraformなど

 

設計コンセプト

・「完全に真似るのではなく遊び心を取り入れ楽しいアプリケーションを作る」

技術選定

・Unity, Scala, PlayFrameworkなど

 

設計コンセプト

・「自分達が慣れていなくても良いものを選ぶ」

技術選定

・Go, React.js, Webpack, ECS, Elastisearchなど

 

設計コンセプト

・「堅実な言語で実際の開発を意識し、コードやデザインパターンはモダンな仕様で設計」

技術選定

・Java, SpringBoot, Apache, Tomcat, MySQL, Swift, Realmなど

 

 

などなど。

チャレンジのいい機会としてモダンな技術を選択したチーム、完成度重視で扱い慣れた技術を選択するチームなど個性がはっきりと現れました。

 

 

3.役割決め、スケジュール作成

 

実際の開発に入る前に、役割を決めスケジュールを引きます。

 

1回目のお題時は見積もり精度が低かったり、得意なものからとりあえず実装、 というチームも見られましたが、2回目は開発する機能、メンバーのスキルセット踏まえた進め方へと大きく改善していました。

 

また2回目の開発では、従来クライアントしかやったことのないメンバーもサーバサイド担当になるなど、今回の研修ならではのチャレンジも見られました。

 

 

4.開発スタート

 

スムーズに開発がスタートできたチームもあれば、サンプルデータの投入でハマったチーム、技術選定の失敗に気づき1からやり直すチームなど、機能開発以前でのつまづきも見られましたが、毎日1時間メンタータイムとして先輩エンジニアがフォローすることでこれらを乗り越えました。(メンターのみなさんありがとう!)

 

 

 

5.中間発表     

 

各チームの進捗や設計/実装内容を発表、メンターからのフィードバックを受け軌道修正を行います。

 

1回目のお題では2度の中間発表を設けましたが、2回目は難易度を上げるため、中間発表を1度のみにするなど難易度調整にも役立ちました。

 

 

6.最終プレゼン

 

各チーム最終成果物を発表。 設計コンセプトやアピールポイントなど発表しつつデモンストレーションをし、審査員からの質問に答えます。

 

実装した機能の完成度はもちろん、スライドのクオリティも予想よりはるかに高く、

「最近の若手はなんでこんなに優秀なんだ」と一回り以上離れた新卒を見ながら改めて感じさせられるイベントでした・・・。

 

また最終プレゼンを受け、いくつかの賞の発表も行いました。

ベストクライアント賞、ベストアーキテクチャ賞、ベストサーチエンジン賞など。

 

研修振り返り&まとめ

今回は内容面でも運営面でも従来の方針を一新し、ゼロからの再設計となりましたが、全体としてはおおむね上手く行き、またいいチャレンジができたと感じています。

 

新卒の技術研修というのはエンジニアとしてのスタートでもあるので、最初だからこそ意識してほしいことや、チャレンジしてほしいことを実現するための研修を心がけました。

 

一方、研修後の振り返りでは課題も多く見つかったので、来年に向けてはこれらを解決する方法を取り込みながら、事業・技術・組織の変化に合わせて研修もアップデートしていければと思っています。

 

 

以上が今回の新卒エンジニア技術研修の紹介となります。

サイバーエージェントの技術研修に興味を持ってくれた学生のみなさん、ぜひコチラからエントリーしてみてくださいね!

 

お会いできるのを楽しみにしています。

以上です。