コミュニケーションアドベントカレンダー6日目の記事です。
僕は30歳ぐらいまでぶらぶらしておりまして、その後就職したり転職したりした職場の同僚エンジニアが同世代か年上の、しかもできる人たちばかりだったため、これまであまり人に教えるということをせずにやってきました。ところがフンザがミクシィに買収され、ミクシィからやってきた若者の面倒を見ることになりまして、齢35にして初めて指導する立場となりました。この半年間で感じたことなどをつらつらと。
ちなみに二人でやっているのはAndroidアプリです。僕自身Android開発を始めて日が浅いため精進の日々です。そんなこともあり、Androidに限定すれば彼から気づかされることも多々あって面白いなあ、と思ってます。
経緯とか
本人も僕がこのことを書くのを知っている(というかコミュニケーションアドベントカレンダー7日目が彼の当番)なのでぶっちゃけて書くと当初はもう大変でした。彼はちゃんとしたAndroid開発に初挑戦、しかも教える側も不慣れとあってどこから手をつけたらいいかよくわからない。
中でも僕の頭を悩ませたのがそのスキル。3年目でAndroid/Java経験はほぼなし。でも3年やってるんだからJavaの文法って難しくないし(他に難しいところがあるのはスルー)まあイケるっしょー。と楽観していたらそんなことはなかった。Javaの文法から教えたり参考書選びに付き合ったりしてました。
issueの粒度設定も良くなくて、自分だったら1日で終わる、もしくは数日にわたっても進捗を管理できるサイズにしたのを任せると数日かかって結局解決しないといったことがよくありました。これは完全に僕のミス。確実に数時間で終わるようなタスクをこなして進捗が目に見える、達成感を感じられるように修正が必要でした。
そんなこんなで数ヶ月経った頃、うちのCTOに「伸びてはいるんだけど、期待してたよりは伸びてなくて、どうしたらいいんだろう?」みたいな相談をしたら「世の中、俺やお前みたいに寝る間を惜しんで好きなコードを書くような人種ばっかじゃない」と諭されまして。
自分ぐらいできることを期待していたつもりはなかったんだけど(かといって期待しないのもそれはそれで失礼で、さじ加減が難しいところではあります)、問題は自分が勝手に期待していたレベルに達しなかったことに対して一方的に失望感を覚えてしまったことなのかなと。少なくとも成長が感じられる以上、彼なりに努力はしている、そう考えるべきでした。
それからも時間が経つにつれて軌道修正したり、お互い勝手が分かってきて、当初よりだいぶ良好なコミュニケーションが取れるようになってきたと思っています。僕が面倒だと思うことは丸投げできるようになり、そういう意味でも頼りにしています。
教えるにあたっての心構えとか
現在は大雑把にいうと以下のような心構えで臨んでいます。
-
相手を尊重する
- 自分だったらというのを前提にしない
-
何がプロダクト/チームのためになるか
- 俺がやったほうが早いでは問題の本質は解決しない
-
現在のスキルを把握した上で、うまくステップアップできるように課題の難度・量をコントロールする
- 進捗やスキルアップに応じて随時調整する
あとこれだけは意識してやってほしいことを一つだけ挙げると、
- もっと抽象化した思考ができるように訓練しろ
ということですかね。開発にも慣れてそこそこできるようになったかと思いきや、予想外のところで詰まる時がある。その根底にあるのは抽象化ができてないんじゃないかと見ています。プログラムを抽象化して捉えるというのは、漫然とコードを書いているだけではいつまでたっても身につかないものです。目の前の問題の本質はどこにあるのか、常にそれを意識してほしい。
最後に
教えるということを通じて相手のシコウ(思考、志向、嗜好、etc.)に気づいたり、教えようとする過程で、またそのフィードバックにより自分の考えが明確になったり、これも一つのコミュニケーションだなあと思った次第であります。
鳥は卵の中からぬけ出ようと戦う。卵は世界だ。生まれようと欲するものは、一つの世界を破壊しなければならない。鳥は神に向かって飛ぶ。神の名は、アブラクサスという。
ヘルマン・ヘッセ『デミアン』
彼がAndroidプログラマとして独り立ちする日が楽しみでなりません。(In other words, まだ一人前とは思ってないからねー☆)