Slide 1

Slide 1 text

冴えてるRailsエンジニアの 育て方 2018/03/25 株式会社Aiming webエンジニア 黒木慎介 (なかま)

Slide 2

Slide 2 text

もくじ • 第0部:前置き – 自己紹介など • 第1部:採用編 • 第2部:育成編

Slide 3

Slide 3 text

もくじ • 第0部:前置き – 自己紹介など • 第1部:採用編 • 第2部:育成編

Slide 4

Slide 4 text

自己紹介 • Aimingのwebエンジニア(2011-) – 東京本社(2011-2015) – 大阪スタジオ(2015−) • Rails歴は8年くらい • 現在は新規開発中のプロジェクトでwebエン ジニア班のリーダーをしています

Slide 5

Slide 5 text

提供 (大阪からの交通費出してもらってます)

Slide 6

Slide 6 text

注意書き 発表内容は個人の見解です、と言いたいところで すが 採用や育成は会社組織で行っていることなので、 会社の方針と完全に切り離して語ることはできま せん また、同僚から影響を受けた内容も少なくありま せん なので「個人の見解でない部分はそうとわかるよ うにお話する」とさせてください

Slide 7

Slide 7 text

本日の発表の意図 • 何か普遍的に使えるような知識を提供すると かではなく、あくまで事例発表 – あなたの回答は、あなたの状況を踏まえて自分 で導き出すしかないと思います • 前提と行動をセットでお話するので、前提が 同じなら試せることはあるかも • 「うちではこうしてる」という話でtwitterとかで 盛り上がってくれると嬉しい – 私も聞きたい

Slide 8

Slide 8 text

前提:会社依存のもの • Aimingの開発・運営するタイトルの数は増え 続けている – 開発を途中で打ち切る事は少ない • スマホの運営型ゲームのレッドオーシャン化 – 最初からあるべき機能の量が多い→リリースま での工数の肥大化 • これらの理由で、web(Rails)エンジニアはほ ぼ常時ほしい状態

Slide 9

Slide 9 text

前提:転職市場 • Railsエンジニアの採用は難しい – 十分なスキルを持っている人はなかなか見つか らない • 大阪でも難しい – コミュニティとかで見ている感じ、「Ruby使いた いけど仕事では使えてない」という感じの人が多 く見えている

Slide 10

Slide 10 text

行動:(業務)経験者以外の採用 • 大阪スタジオに中途入社したwebエンジニア の約半数はRailsでの業務経験なし – PHP歴は長いとか – 別業種(Railsは趣味でやってた)とか

Slide 11

Slide 11 text

前置き終わり • 第0部:前置き – 自己紹介など • 第1部:採用編 – どうやって「入ってもらう」か • 第2部:育成編 – どうやって「モノになってもらう」か

Slide 12

Slide 12 text

ここから第1部 • 第0部:前置き – 自己紹介など • 第1部:採用編 – どうやって「入ってもらう」か • 第2部:育成編 – どうやって「モノになってもらう」か

Slide 13

Slide 13 text

第1部:採用編 • 応募してもらうまで • 書類審査 • 面接

Slide 14

Slide 14 text

第1部:採用編 • 応募してもらうまで • 書類審査 • 面接

Slide 15

Slide 15 text

応募してもらうまで • 「コミュニティへの露出をして採用に繋がらな くてもめげない」 ことが大事だと思っています

Slide 16

Slide 16 text

前提:採用ルート • Aiming公式サイトからの応募 • 紹介会社さんからの紹介

Slide 17

Slide 17 text

前提:採用ルート • Aiming公式サイトからの応募 – 意欲が高い可能性が高く、マッチングしている可 能性も高い – 数は少ない – 社員からの紹介、イベントなどでのつながり、過 去の仕事の縁で、などを含む

Slide 18

Slide 18 text

前提:採用ルート • 紹介会社さんからの紹介 – 数がかなり多い – マッチングしているかどうかはバラバラ • 非エンジニアを何人か介するため、人材像がうまく伝 わりにくい – 他社さんの選考が進んでいる場合が多く、その 場合はスピードが求められる – 紹介料などで追加コストが発生する

Slide 19

Slide 19 text

前提:採用ルート • どちらのルートからの採用もある • 入社後の活躍度合いも明確に優劣ついてる 感じではない • だが理想的には公式サイトからの直接の応 募を増やしたい

Slide 20

Slide 20 text

行動:技術者コミュニティへの露出 • 採用に繋げることをかなり意識してます – Aimingのエンジニアリングについて知っている 人を増やす • あんまりがっつかない • 職を探してる感じの人には「うちも採用やってます」と いう話はしておく – 私個人のスタンス • 目的は多いほうがモチベ上がるので • 社内にもいろんな考えの人がいます

Slide 21

Slide 21 text

行動:技術者コミュニティへの露出 • 発表できればGood – すごい技術の話であるとか、新奇性があるとか にこだらわない • 我々の常識は彼らの非常識 • 会話のきっかけづくり • 発表だけじゃない – スポンサー – 会場提供

Slide 22

Slide 22 text

露出をしても…… • そんなに簡単に応募につながるわけではな い • めげそう • でもある日いい話があった

Slide 23

Slide 23 text

ある人との面接にて 「紹介会社さんからの紹介ですが、うちを選ん でくれた理由とかってありますか?」 「前に関西Ruby会議でスポンサーしてたのを覚 えてて、紹介リストにあったのを見て良いなと 思って」

Slide 24

Slide 24 text

ポイントは2つ • 露出から応募(の意思決定)までには大きい タイムラグがある場合がある – 「関西Ruby会議でスポンサー」したのはこの面 接の時点で既に2年前の話だった • 紹介会社さんからの紹介の場合でも、応募 者の意思決定のタイミングがある – 先の例では紹介リストからの選択

Slide 25

Slide 25 text

なので • 結果にすぐつながらなくてもめげずに行きま しょう

Slide 26

Slide 26 text

第1部:採用編 • 応募してもらうまで • 書類審査 • 面接

Slide 27

Slide 27 text

書類審査 • 「少しでも多く、その人の今のアウトプットを 見るようにする」ようにしています – 状況によるのでいくつかやり方を用意していま す – 面接にもつながります

Slide 28

Slide 28 text

書類審査 • その人が書いたコードを見るのが基本(会社 の方針) – スキルを見る – 「興味がある」ならコード書いてるはずでしょ? – 形式はgithubでもzipでも

Slide 29

Slide 29 text

コードじゃなくても • 技術力がわかるアウトプットを見る – Qiitaとかblogとか

Slide 30

Slide 30 text

それもなかったら? • 基本的にはNG • …にしたいんだけど、そうも言ってられない 程度に人がほしい状況もある • アウトプットがなくても、職務経歴からある程 度戦力になってもらえる事を期待できる場合 がある • ではその場合にどうするか

Slide 31

Slide 31 text

コーディング課題の提案 • お題を渡して、コードを書いてもらう • Rails経験者ならRails、そうでなければ任意 の言語・フレームワークで • コードと、開発計画の予実を提出してもらう – 調べたことなども書いてもらう – 段取りの付け方や、未知の問題への取り組み 方などを見る

Slide 32

Slide 32 text

課題も難しい場合 • 応募者がデスマとか • 課題をやってもらってるうちに他所に決まっ てしまうリスクが高い場合とか • 面接で評価する(後述)

Slide 33

Slide 33 text

コード評価の視点 • チームでの開発への適応力、その素質を見 ている – 動作検証がし易い提出がされているか – オブジェクト指向(MVC、SOLIDなど)のコードが 書けているか – インデントなどが雑でないか – 名前付けを考えているか – セキュリティを考慮しているか

Slide 34

Slide 34 text

他に書いてもらっているもの • スキルヒアリングシート – 技術要素に関して自己評価を段階で • ゲームプレイヒアリングシート – プレー経験と一言感想 • ともに会社の方針 – 採用ページからダウンロードできます • 面接でこれらのシートから質問することが多 い

Slide 35

Slide 35 text

第1部:採用編 • 応募してもらうまで • 書類審査 • 面接

Slide 36

Slide 36 text

面接 • 人柄を見る→人柄って何さ? • コミュニケーション能力を見る→コミュニケー ション能力って何さ? • エンジニア魂を見る • 技術力を見る

Slide 37

Slide 37 text

自分が見ている「人柄」 • 仕事に関係する何かの事について持ってい るテンションが高くあってほしい – それはコードを書くこととは限らなくてよい • 「仕事でテンションが上った瞬間は?」

Slide 38

Slide 38 text

「人柄」を問う設問 • 「仕事でテンションが上った瞬間は?」 – きれいなコードを書けた時 – 難しい問題を短時間で解決できた時 – 同僚に感謝された時 – 自分の作ったものが世間で良い評価を貰ってい た時

Slide 39

Slide 39 text

「コミュニケーション能力」 • 重要度高い:説明力 – エンジニア間の問題点の共有 – コンテクストの異なる他職種の人と情報を適切 に翻訳して意思疎通できるか • プランナー、デザイナー、運営、など – 「あなたがプレー経験のあるこのゲームについ て、それを知らない私のために面白い点を説明 してください」

Slide 40

Slide 40 text

「コミュニケーション能力」 • 重要度低い:愛想が良い – 相対的に重要度が低いというだけで、評価の対 象でないわけではない – 攻撃的な言葉や態度はチームの生産性を下げ る可能性がある • Teamwork OP

Slide 41

Slide 41 text

「エンジニア魂」を問う設問 • 「今まで読んだ技術書の中で最もライフチェ ンジングだったものは?」 – 私は「リファクタリング」です • 「Ruby(あるいは応募者が知っている言語) の良いところと悪いところ」 – 良いところだけではだめ • 「最近気になっている技術は?」 – 「それに関連して何か手を動かしましたか?」

Slide 42

Slide 42 text

提出してもらったコードから • 「ドヤ顔したいところは?」 • 「恥ずかしいところは?」 • 「あとn時間あったらどうしたい?」

Slide 43

Slide 43 text

技術面接 • コードを見れていない場合はここが重要 • 設計力・着眼点などを見る • ゲームプレイヒアリングシートから 「あなたがこのゲームのシステムを実装する としたらどういう構成にしますか?」 – ホワイトボードに書いてもらう – 「リスクになりそうなところはどこですか」などと掘 り下げていく

Slide 44

Slide 44 text

技術面接 • 事前に課題を用意して置く場合もある – 実際に社内で起きたトラブルなどをモチーフに • コードを書いてもらったこともある – 開発環境の用意や適切な課題の用意など、難 しいところが多い • このへんは皆さんの知見を伺いたいところ

Slide 45

Slide 45 text

ここから第2部 • 第0部:前置き – 自己紹介など • 第1部:採用編 – どうやって「入ってもらう」か • 第2部:育成編 – どうやって「モノになってもらう」か

Slide 46

Slide 46 text

第2部:育成編 • 入社してすぐ – パイロットプロジェクト • プロジェクト配属後 – コードレビュー – ペアプログラミング

Slide 47

Slide 47 text

第2部:育成編 • 入社してすぐ – パイロットプロジェクト • プロジェクト配属後 – コードレビュー – ペアプログラミング

Slide 48

Slide 48 text

入社してすぐ • Rails未経験者→Railsチュートリアルの写経 から – 終わったらor並行して↓に移行 • Rails経験者→パイロットプロジェクト

Slide 49

Slide 49 text

パイロットプロジェクト • 会社or所属予定のプロジェクトで困っている 事を何か1つ解決するものを作る – お題は入社までに募集・決定して渡す – プロダクトオーナーを立てる • 1週間スプリント✕4 • レビューは会社のwebエンジニアみんなでや る

Slide 50

Slide 50 text

第2部:育成編 • 入社してすぐ – パイロットプロジェクト • プロジェクト配属後 – コードレビュー – ペアプログラミング

Slide 51

Slide 51 text

コードレビュー • 「具体的にどう困るか」に落として言う • カッとなって本人のところに行く • 習熟を意識する • 褒める (過去発表「伝わるコードレビューのために」も見てもら えると良いです

Slide 52

Slide 52 text

「具体的にどう困るか」 • ふわっと「読みにくい」みたいな事を言って も、習熟度の低い人には伝わりにくい – 「Rubyっぽさ」「Railsっぽさ」「驚き最小」みたい なのがひっかかりやすい • 「ここはこういう風に書くとこういう事を気にせ ずに読めるので云々」

Slide 53

Slide 53 text

カッとなって本人のところに行く • 文字はナローバンド、直接の会話はブロード バンド • 文字だけで何往復もするより早い • ペアプロにもつながる

Slide 54

Slide 54 text

習熟を意識する • 人間が1つの事に対して行える思考の量に は限界がある – 私はこれをMPと呼んでます • 同じことを考えたり意識するのにかかるMP は、繰り返すことにより低減していく • そうして余剰するようになるMPで新たに追加 で考えることができるようになる • でもこの低減はすぐには起きない – 繰り返すことが必要

Slide 55

Slide 55 text

習熟を意識する • 相手の最大MP以上のことを教えても頭に入らない し、やってもらおうとしてもできない – ベテランは自分が消費MP少なくなってるので、その前 提で考えがち • 低減が十分に進んでいない場合、前に言ったことを また考えられず、同じミスをしてくる事がある • そういう状態なんだと思って、辛抱強くやるのが大 事 • (学ぶ側としては素振りが大事みたいな話し)

Slide 56

Slide 56 text

褒める • 良くないことの指摘だけしてると雰囲気が悪 くなってくる場合がある • 開発のテンション維持は大事 • フィードバックは正負両方有効 – 良い行動は強化したい • 前言った事ができるようになってたらそれは ちゃんと言いたい

Slide 57

Slide 57 text

第2部:育成編 • 入社してすぐ – パイロットプロジェクト • プロジェクト配属後 – コードレビュー – ペアプログラミング

Slide 58

Slide 58 text

ペアプログラミング • ここで1つ、昔バイト先の張り紙で見た言葉を 紹介させてください

Slide 59

Slide 59 text

• やってみせ

Slide 60

Slide 60 text

• やってみせ • 言って聞かせて

Slide 61

Slide 61 text

• やってみせ • 言って聞かせて • させてみて

Slide 62

Slide 62 text

• やってみせ • 言って聞かせて • させてみて • 褒めてやらねば

Slide 63

Slide 63 text

• やってみせ • 言って聞かせて • させてみて • 褒めてやらねば • 人は動かじ

Slide 64

Slide 64 text

五十六メソッド • やってみせ • 言って聞かせて • させてみて • 褒めてやらねば • 人は動かじ

Slide 65

Slide 65 text

ペアで作業をしよう • 五十六メソッドの実践としてのペアプログラミ ング – プログラミング以外でも応用可能 • 作業・思考の過程の共有 – 同じ情報からでも考えることが違っていたりする ので、度々すりあわせていく

Slide 66

Slide 66 text

ペアプロの分量 • 入りたての時は1個の機能を作るまで100% ペアプロ • そのあとは毎日決まった時間にペアプロ – 1日に1-2時間程度やるとリズムができて良い • 苦手な人もいるので相手によって調整しま しょう – ペアプロは「最初は苦手」な人も多いのでまず やってみようというのも大事

Slide 67

Slide 67 text

手離れを意識する • ここまで言ってきたことって大事だけどめっ ちゃコストかかる – 任せられることは任せましょう – 表明するのも大事 • 「今この人はどこまで任せて大丈夫になった か」を常に意識する – それで手厚さを強めたり弱めたりする – まずそうだったら一旦引き返したりもする

Slide 68

Slide 68 text

ここまで第2部 • 第0部:前置き – 自己紹介など • 第1部:採用編 – どうやって「入ってもらう」か • 第2部:育成編 – どうやって「モノになってもらう」か

Slide 69

Slide 69 text

おしまい • あくまで事例の紹介です • 自分の答えを自分で見つける必要がありま すが、他の人の答えはヒントにはなる可能性 があります • なので、私も「他の人の答え」を知りたいです – twitterなどで書いてくれると嬉しいです