冴えてるRailsエンジニアの育て方
by
KUROKI Shinsuke
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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などで書いてくれると嬉しいです