エンジニアがどんなに技術力をあげたとしてもせいぜい数人分のパフォーマンスしか出せない。でも人を育ててチームを育てる技術を身につければそれを何十倍にも出来る。マネージメントってそういうことだよ。
— ひさじゅ@すたてく社長 (@hisaju01) June 7, 2017
こんなことをつぶやいてみました。
エンジニアの世界ではよくキャリアパスを考える時に、技術を突き詰めるかマネジメント方向へいくかの二択で選択を迫られるってことがよくあるかと思います。当然私も30前後の頃は悩みました。それから10年以上ずっとエンジニアを続けてきて今思うことは、
「技術力もマネジメント力も両方必要」
ということです。
つぶやいたように私も人の数倍くらいのスピードでコードは書けるようになっていたし、仕様の提案力や交渉力もそれなりについて、単純に開発の仕事を回すという意味では相当速い仕事が出来るようになっていました。それでも断れない性格なので、仕事を受けすぎて思うようにまわらなかったんです。そこで必要だったのがマネジメントでした。
サラリーマン時代のマネジメント
サラリーマン時代は部長という役職ももらって部下も20人くらいまでは増えたので、必然的にマネジメントをやる環境になっていました。その時やっていたマネジメントは
- 経営陣との調整
- エンジニアの評価
- 採用
というような仕事がほとんどで、いわゆる組織を管理するためのマネジメントという色が強く出ていました。これはこれで重要な仕事だと思いますが、多分エンジニアのみなさんはあまりやりたくない仕事ですよね(笑)。この時はこれが当たり前だと思っていましたし、それなりのポジションだったので会社を円滑に回すために頑張ろうと思ってやっていました。で、その後会社を辞めてフリーランスをやることになります。
フリーランス時代のマネジメント
「フリーランス時代のマネジメント」ってなんだよって話もありますが、本当の意味でマネジメント力が必要になったのが会社を抜けて1人になってからなんです。最初にも書いたように人の何倍もの仕事を受けてたんですが、やっぱり詰んだんですよね。それでもなんとか回したいけどフリーランスなので採用も出来なかったので、当時出始めていたクラウドソーシングを使って時給で何人かにお願いして、チームの形を作りました。
空いた時間でということで依頼していたので、多くの人が集まってきてくれたんですが、実力があって時間が取れる人というのはなかなかいなかったので、最終的には
- 時間が取れないけど実力が高い人
- 時間はあるけど、経験が浅い人
という人が数人ずついるようなチームが出来ました。
それから案件をこなしていくんですが、実力がある人には難易度の高いタスクをお願いし、経験が浅い人には難易度が低かったり重要度が低いタスクを依頼して、私がレビューとマージを行いリリースするというサイクルが出来ました。それでも運用していくと実力が高い人の時間が確保出来ないとか経験が浅い人の仕様齟齬やリファクタしないといけない量もあったので、経験が浅い人でも出来るように難易度の高いタスクもISSUEを分割したり、ほとんどプログラムの流れが書いてある説明を書くようにしました。これって実は自分で書いたほうが全然早かったんですが、それでも経験の浅い人の実力があがっていくのが見えたのでやり続けて、少しずつISSUEの粒度を粗くしていったんですね。
それを数ヶ月続けていった結果、その人にはある程度雑にお願いしても完璧なプルリクエストが上がってくるようになりました。
マネジメントは自分の為に
私も昔はクソコードにまさかりを投げる尖ったプログラマでした。でも自分の限界に達した時に人やチームの重要性を感じ、管理するマネジメントから育てるマネジメントを覚え始めました。
自分で起業してからもよりその重要性を感じていて、経験のあるエンジニアが取れない中、どうやって組織を育てるかを突き詰めていくと、未経験の人でもちゃんと育てることで、チームが育ち、結果組織が育つということになると思っています。
実際ある程度結果も出ていて、去年の新卒コンビが現場でバリバリ活躍していることで証明もされてるのかなと。
「もうすぐ3月も終わり。新卒1年目の2人に今年を振り返ってもらいました」
今年もまた未経験の人を育てはじめているので、これからの会社が楽しみです。
そんな感じで、みなさんもマネジメントやりたくないって思っていたかもしれませんが、マネジメントをやるというのではなく、自分が楽をするために人を育てるって考えると楽しくマネジメントが出来るようになるんじゃないかと思います。
楽をするために働くのがエンジニアですもんね。