良いエンジニアの育て方

人を育てるというのは、とても難しい。
なぜなら、育てる方も未完成な人間だから。
ちょっと経験値のある未完成な人が、経験値の少ない未完成な人と、ともに冒険をし、ともにレベルをあげていくことが、人を育てるってことだと思う。
人を育てようと思うと、どうしても上から目線になってしまう。上から目線だと気持ちも相手に伝わりにくい。気持ちが伝わらないと相手もうまく成長してくれない。
だから、人を育てる機会があったら、ともに冒険をする仲間を持ったと考えよう。きっとその方がうまくいく。


それでは、自分の話をしよう。自分というよりは自分たちの話かな。


2010年、自分は、昼間、ブラ三をやりながら、新規ビジネスの企画を考えたり、プロトタイプを作っていたりしていた。ブラ三をやっていたのは、当然ソーシャルアプリというものを学ぶためだ。ブラ三の能力はかなり向上したけど、仕事ではたいした結果が出せなかった。特に企画考えたりするところが。


そんな行き詰まっているときに、電通の人から、「一緒に何か楽しいことしない?」と誘われた。企画力を磨きたかった自分は、その誘いに乗ることにした。
そのときに、一緒に電通に連れて行く人を、部の若手の中から募集することにした。「電通にいって何か楽しいことしたいと思っているんだけど、一緒にいく人手を挙げて」みたいな誘い方だったと思う。
技術的には、HTML5, CSS3, JavaScriptでやる予定だったので、技術力は特に問わないことにした。2011年の早い段階で、HTML5やCSS3に精通した人がそうはいるとは思えなかったからね。


そんな中で、応募してきたのが、彼女だった。
彼女は、応募してきた時点では、入社二年目の冬。うちの部の若手は、最新技術動向をよく調べているので、いろんな技術を表面的には知っているけど、サンプルより深くは知らないくらいの技術力だったと思う。まぁ、技術力は普通って感じかな。


最初、「CSS3アニメーション・ブック」

魅せるスマートフォンサイトを実現!CSS3アニメーション・ブック for iPhone & Android

魅せるスマートフォンサイトを実現!CSS3アニメーション・ブック for iPhone & Android

を自習してもらい、その後、アニメーションの基礎を学ぶために、ActionScript3アニメーションをHTML5, CSS3, JavaSciptに移植するということをやってもらった。
ActionScript 3.0 アニメーション

ActionScript 3.0 アニメーション


この本は、結構難しいので、最初にActionScript3部分の解説をし、実装のヒントを与えた上で、実装してもらい、実装後コードレビューを行った。
後で、彼女から聞いた話だけど、この学習法は、かなり効果的で、自信がついたらしい。
効果的だったのは以下の理由から。

  • 課題が数時間で解ける程度の規模で、達成感が得やすいこと
  • 適度に頭を使う難易度だったこと
  • コードレビューによって良いコードの書き方を学べたこと


このたくさんのスニペットを作るという作業を、僕たちは素振りをするといっていた。何事も基礎が重要。この素振りを二ヶ月ちょっと続けた。


素振りが終わった後、僕らは、ペアプロでアプリを作り始めた。正確に言うとペアプロをさらに進めたペアシンキングという開発手法をとっている。


ペアシンキングとは、プログラミングだけでなく、考えることもペアで行う手法(自分たちで勝手に命名)のことだ。なぜ自分はこう考えたのかをすべて彼女に伝えて、一緒にディスカッションする。


例えば、ある会社が私と一緒にサービスを作りたいと持ちかけてきたとする。これに対して、私がどう考えたのかも彼女とディスカッションする。私のあらゆるビジネス上の決定をディスカッションしていると思ってもらっていい。


ペアシンキングによって、相手が何を考えているかわかるようになる。そして相手と信頼関係が築けるようになる。何考えているかわからない人とは、信頼関係築けないからね。


僕らはこんな感じで冒険を続けている。
このやり方が、あっているかどうかはわからないけれど、
毎日成長している実感がある。
昨日よりは、今日、少しはましなエンジニアになれた気がする。


一緒に成長できる仲間を持つことは素敵なことだよ。