エンジニアの成長と反抗期

最近、後進の育成について考える機会があります。

ある時、こんな状況で困ることがあるんだけど、どう思う?
と聞かれて飛び出した言葉【反抗期】について考えてみます。



相談内容

育成や生産効率をテーマにした会食にて、相談された内容は

  • あるエンジニアが実力以上に過信して自己評価する
  • やたら特定の技術に拘って、結局リリースが伸びたり改悪したりする

  • ・・・んだけど、これは何なんだろう、どうしたらいい?というもの。
    これに対し、自身の辿った道も思い直して出した返答が

     『それは、エンジニアの反抗期だよ』

    もちろんこれは、こどもがヤダヤダ拒否する(=仕事したくない)本来の意味ではなく
    逆に、やり過ぎによる失敗経路への舵切りのことを指しています。
    聞き手はこれで非常に納得がいった様子。

    反抗期とは

    おそらく3~5年目の時期に、技術やアイデアに偏ったものを創り出すことがあります。
    そして、閑古鳥/改悪サービスにするなどで大失敗します。

    要は、色々覚えて、色々経験して、
    自分がなんでもできちゃう、自分の考えが正しい、イケる!
    と錯覚して天狗になっちゃうことが原因であります。

    具体的にそう考えていなくとも、人間、自信がつけば自然とそうなっていくはずで、
    そうならなければ伸び悩む系か、もしくはよほどデキた人間でしょう。

    これは環境が、極少人数のプロジェクトだったり、
    マネージャの類の手腕がいまいちだったり、
    逆に敏腕マネージャでもエンジニアを過剰に信頼していたら陥るかもしれません。

    自分がエンジニアだからこう書いているけど、”エンジニア” を “デザイナ” や ”ディレクタ” に置き換えても当てはまる部分があるはずです。

    成長に必要なもの

    エンジニアが真の意味で成長するために重要なことは多々あれど、
    スタートダッシュに必要なものは、楽しい!尊敬!モテたい!とかで
    個人的には楽しい!であって欲しいのですが、

    数年経ってより成長するために重要な事は、機会を与えること1点であり、
    その機会が成功体験になれば良し、失敗体験になっても組織が失敗を許容して
    その後の糧にしてくれればそれも良し、だと思っています。

    とはいえ、その機会の成否が組織に与える度合いと、担当者の腕前のバランス調整は
    上長/マネージャの仕事であるため、若いうちは気分的な責任はしっかり抱えつつも
    真の組織的責任はケツ持ちに丸投げしておけばよいのです。

    そして反抗期へ・・・

    失敗経験が重要だとはいっても、大きな成長に繋がる失敗なんてそうあるわけなく、
    現実的にはコツコツ知識と小さな成功/失敗を積み上げていくわけです。

    すると、ある時期に突然、フッと道が拓けた感覚に陥るのです。
    この感覚は、仕事でも遊びでもゲームでも、なんにでも共通するはずです。

    仕事で言えば、1つのサービスを1人で創ったとか、1人で運用しきったとか、
    リードエンジニアとして滞り無く任務完了した、売上を達成した、
    といった出来事の後に悟りを拓きやすいと思います。

    その、反抗期に入ったエンジニアの変化に周囲が気づかなければ
    いつかは大事故を起こして… からのフェードアウトか大成長を遂げるかもしれないし、
    気づいて頭ごなしに否定をしてしまうと成長機会を奪ってヒネくれるかもしれない。

    もしかしたら中学生以上に厄介なこの状況、どうしたらいいのでしょうか!?

    反抗期対策

    1人だとそもそも指摘されないので完全に個人の裁量ですが、
    周囲に人がいる場合はどのように接するべきなのでしょう・・・

    手っ取り早いのは、1度大失敗してそれを認めればいいので、しっかり手綱を握り
    サービスリリース前に根気よく説明/説得して間違いに気づかせることかもですが、
    リリースしなくちゃわからん部分も大きいので、リリース前だと
    なかなか失敗を認めさせることは難しいかもしれません。

    それこそ、世間の目に触れる前に尖った機能を抑制された=企業文化が丸くなった
    と受け取られて不満に変わるかもしれません。

    かといって、リリースして大失敗しても、担当者が成長してくれればかまわん!
    なんて話になるわけもありません。

    反抗期は成長のためには通って然る可き、と考えますが、
    運が良ければ周囲の理解によって無事通り過ぎてステップアップできても、
    悪ければ頑固でセンスのおかしいヤツと断定されて停滞してしまうかもしれません。

    なので、周囲、特にマネージャは反抗期を察してあげて
    今が大きな成長機会なのだ!と温かい目で見守りつつ、
    センスが迷子になっていたら、クソサービスに仕上がってってるよ馬鹿め。
    ということをオブラートに包んで思い知らせてあげてください。

    また、エンジニア個々としては、
    最重要なことが売上であり(売上がないなら目的の達成度)、
    それはユーザ目線の便利さ使いやすさ面白さから成るものであり、
    その実現手段が技術やアイデアである。

    という当たり前の優先順位を常に心がけ、
    技術先行型になっていないか自身を時々振り返ってみてください。

    …と、いうことをメキメキ伸びて楽しい真っ盛りの
    若いうちに簡単にできれば苦労しないんですけどね!!

    企業と成長

    企業としては、
  • 限られたサービス・リソースでやり繰りしなくてはいけない
  • 失敗したくない(大成功を狙った伸るか反るかは別として)
  • エンジニアの成長は望んでいる

  • エンジニア目線でエンジニアを成長させるには、
  • 大きな責任ある機会を与えること ⇒ リードエンジニア等の枠には限度がある
  • 失敗を経験させること(許容すること) ⇒ 具体性や度合いの調整が難しい
  • 一度はデスマーチ的キツい経験をさせる ⇒ 社会的に正しい労働条件を守るべき

  • なかなか狙って全体的に成長させることは難しい状況で、
    努力しつつ運良く技量に見合った成長機会を得られるプロジェクトにアサインされた
    少数のエンジニアが台頭してくる、という流れが多い気がしています。

    しかし、この必然的な少数をいかにして増やすかが課題なので、
    努力と運のうち、運要素をできるだけ薄めて作為的に増やすために
    まだ埋もれている伸びそうな人材を、伸びるために的確なアサインをする
    人事的部分が最も効果的に数多くの上位エンジニアを生み出すのではないでしょうか。

    …これはアタリマエのことと思うかもですが、売上は最重要であり、
    売上のためには既に成功例のある人材を使うのが安定であるのに対し、
    成長させるために未経験だったり数段階上のレベルの仕事を割り当て挑戦させることは、どうしても売上の安定と相反するため、体力(金)に十分な余力がある時期しかやりづらい思った以上に厳しい問題のようです。

    ただ的確なアサインといっても、結局は1つのプロジェクトを最も責任あるポジションで
    担当しないと良好な成長は見込めないわけで・・・
    リードエンジニアめっちゃ増やせばいいじゃん! ⇒ チームの細分化しようぜ!
    のコンボを提示するのですが、なかなか、ね。(私は言うだけなので・・・)

    他に、密な情報共有とか定期的な勉強会といった案もありますけど、ネタは用意せども、やらざるを得ない環境にならないと真の成長は得られないですからね。
    あとは上位エンジニアが背中で引っ張るとか周囲のレベルも重要でしょうけど、
    ここでは組織的取り組みとして優良な手段、ということで。

    振り返って

    やる気のある人材に、やりがいある機会を与え、やりたいようにさせる
    のが多少リスキーでも成長面でいえば文句ない手段だと思います。

    私自身も長く、わりと好き勝手させてもらっていますが、
    やはり反抗期を経験しており、AJAXが流行りだした時期に
    多用し過ぎて反省した思い出があります。
    (※ブラッシュアップ不足は否めなかったけど、今の時代から見ればあながち
      方向性は間違っていなかった… と思いたいけど、当時は明らかに早かった!)

    そういった経験を積んで、開発ポリシーとしては、
    シンプルで、可能な限り既存のものを使って、
    ユーザにもエンジニアにも理解しやすいシステム創り
    を心がけるようになっていきました。

    要は大人なエンジニアになったということですね。
    (※丸くなる、とは違います)


    若いうちに、成長するヤル気に満ちあふれていたり、
    そもそもの機会を得るために努力や勇気や運を振り絞っても
    成長とともに視野が狭くなって反抗期に入っては勿体ありません。

    しかし、反抗期を思い当たるエンジニアが多いのも事実。
    できるだけ多くのエンジニアが迷子にならず真っ直ぐ歩めれば!
    と、まとまりなくも久々に意識を高くしてみました。