0.はじめに
みなさま、こんにちは。
私は プレイド のエンジニアの大平(おおひら) (@Victoria_Peak_)
と申します。
7年勤めた野村総合研究所を辞め、2018/07〜現在まで 株式会社プレイド で勤務しています。
日々の活動内容(プログラミング・SaaS/SIer・ロードバイク・減量など)をつぶやいたりしておりますので、本エントリを読んで興味を持たれた方は、twitterでフォロー、リプライ、メッセージなどをいただければと思います。
基本すぐに回答します。
本エントリは、2018年12月に執筆した、 前編 と、
中編 、
後編 の 挫折の章 、
後編 の 復活の章の続編になります。
- 対象読者
- エンジニアに限らず前向きに人生のチャレンジをしようとしている方
- 人生のレーンチェンジを考えている方
- SIerからwebエンジニアになりたいが、実際はどのようになるのかを知りたい方
- 未経験でwebエンジニアに転職したが、業務に挫折しかけている方
- 30代以降でなにかにチャレンジしたい方
- 本連載の構成と第二部について
エントリの構成は下記の通りです。
■ 第一部:
■ 第二部:
- 第一回 / 反省の章 ※本エントリ
本連載は、私がSEを7年勤め、年収1000万のキャリアを積むも、自身の本当にやりたいことに気づき、転職してwebエンジニアになり、1年と少しが経つまでの体験談を綴っていきます。
2019年は転職含め怒涛のように環境が変わっていきました。
恵まれた高給の大企業の環境から、直近の年収アップを捨て、個人の技術力が勝負のwebエンジニアとしてスタートアップに飛び込み、他のことが手に付かないほど業務に四苦八苦していました。
社会人になってから転職後はおそらく私の社会人人生で一番長く、苦労した体験になったと思っています。
第一部は、ストーリーメインで、現在の私までを描きました。
(※内容は上記のリンクを参照してください。)
どん底であった状態から無事生存するまでを書いたお話、2018/11〜2019/10 までの 復活の章 を執筆しました。
一通りメインストーリーが終わりました。今回からは、第二部として苦しんだ経験を振り返り、挫折と成長戦略について考察を連載執筆していきたいと思います。
- メンタルモデルの重要性
本エントリでは挫折することの真理に近づくことで、新しいチャレンジをする際に必要な挫折しないメンタルモデルを考察していきたいと思います。
メインのストーリーでは、挫折の章、復活の章 で私が苦しんでいたように、自分で自分を追い詰めてしまうことがなによりも自分の足をひっぱっていたように感じます。
今回は 挫折してしまうメンタルモデルと挫折しないメンタルモデルを図解していこうと思います。
本エントリは下記の3構成に沿って進めていきます。
- 1.自走できる人材になるためのロードマップ
- 2.挫折しやすいメンタルモデル
- 3.理想的なメンタルモデル
1.自走できる人材になるためのロードマップ
- webエンジニアは自走できるまでに、自走で成長しなければいけない
一般的に仕事において自走できる人材は、はじめから自走できる人材になれることはなく、まずはベースのインプットと訓練を積むことが必要です。
新卒でweb系の会社に入れば、研修でその後の業務と連動するようなベースの知識や訓練をある程度積むこともできるでしょう。
私も前職ではSEとして5年目まで継続的な研修や半年に一回成長目標を立てて、自走できるまで上司にサポートをしてもらっていました。
成長させていただいたことに関して今でも大変感謝しています。
私は30代で完全未経験でエンジニアになったため、スキル0からスタートしました。
さらにweb業界では未経験のメンバーに対して、自走できる人材に、自走でなれるかを求められていることを強く感じました。(弊社がスタートアップということもあると思いますが。)
- 自走できるまでには3つのレベルが存在する
エンジニアを約2年間経験し、自走できる人材になるまでにわかったことがあります。
自走できる人材になるためには、下記のような3つのレベル感があることがわかりました。
下記の表を御覧ください。横軸が時間軸。縦軸はスキル軸となります。
段階は下記の3段階あります。
Lv3: 自走できる Lv2: 時間がかかるが自走できる Lv1: スキル無し
私はLv1からスタートしました。
時間の投入時間や投入量によって自分のスキルレベルが上昇していきます。
Lv1は一番初歩的で、プログラミングスクール出たあたりとなります。
右も左もわからない状態です。
学習すべきところは先輩から言わせると、「それくらいググれよ」「ドキュメントに書いてあるじゃん、読めよ」というレベルの質問ばかりになります。
例としては javascript の知識、Dockerの知識、マーケティングツールのプロダクト仕様・知識、英語ドキュメントの読み方、海外ライブラリの github issueを読む、環境構築などがあります。
具体的なスキルは下記のイメージです。 挫折の章 から引用
- github使い方(issue,PR運用?エクセルレビューじゃないの?) - git branch (commit, push とか checkout とか全般) → 後に会社のブランチぶっ壊して事故る - docker (docker-compose?k8s?manifest?container?image?) - Node.js 関連 (初めて。npm?, express?, package.json?, pug?) - Vue.js 関連 (え、Laravelとは違うの?SPA?MVVM?Store?component?) - javascript (ECMA?コールバック?async?Promise?javasciptの配列操作ならやったことある!) - webpack (え、なに?ごめん全然わからない。) - API (CDNならjqueryでHTMLに読み込むのやったことあるよ!え、違う?それ以外もある?) - Linux(操作方法はNRIでやってた。なんとか触れる。) - DB設計(oracle経験ありだけど実装経験なし。NoSQLは初めて。型がないDBなんてあるの?) - mongo (mongo?mongoose?ORmapper?DBならoracleだったよ!DBアクセスのコード書いたこと無いけど) - SQL (oracleでやったことあるよ!カンタンなCRUDなら書けるよ!) - クラウド(GCP?聞いたことある!) - リリース (リリースはパートナーさん任せでした。) - datadog の監視 (よく保守運用はやってたけど、性能は基盤チームの範囲だったよ。) - KARTE の使い方(KARTE Dojoはやったよ!基本機能だけなので他のはわからないよ!) - 業界用語・業務知識(マーケティング用語。SI用語が全く通じない。webプッシュ?セグメント?イベント?) - 各プロダクトの英語ドキュメントの読み方(え、TOEIC350点なんですけど。) - アジャイル開発(アジャイルなんかかっこいいやつ!ウォーターフォールはガチガチでやったことある!)) - slack (slack?NRIでは基本メールだったよ!)
通常はフロント、サーバサイドに絞った前提で、ある程度(感覚的には1年くらい)業務経験を積んで行くことでLv2に到達します。
Lv2では、実装要件とプロダクトの仕様が固まれば、時間はかかりますが、issueをクローズさせることができるまでに達します。
質問内容も、プロダクト仕様やデータの作り方、モデルの構造など、ややプログラミング自体というよりも設計に近い質問が多くなります。
2年以上経つとLv3となり自走できる人材、担当した issue を自分で設計しPRを出すまでになります。人によってはレビューに入ったりします。
やっと戦力感がでてくるのではないでしょうか。
2.挫折しやすいメンタルモデル
- 鬼門は「自走のための自走での成長が求められる」 Lv1
そうです。ここまで書くとわかる方が多いかと思いますが、挫折の鬼門はまさにこのLv1。
駆け出しエンジニアでは、会社として戦力になっていないこの期間が一番心理的負担が高く、挫折要因と考えます。
Lv3までに達するまで挫折しないためには、Lv1において健全性を担保したまま経験値を適切に積み、Lv2に到達できるかがポイントとなります。
何故鬼門なのかをもう少し考察していきましょう。
下記は、挫折しやすいメンタルモデルを図にしたものです。
先程の図と図軸やレベルについては変化はありませんが、自分の理想とする成長曲線が追加を追加しました。
- 実践的認知の歪みを分析する
敵は自身で生み出す認知の歪み
では何故メンタル負荷が高いのか。解像度をあげます。こちらは挫折しやすいロードマップになります。この表をベースに解説していきます。
まず、人間のストレスは「認知の歪み」が9割といわれています。(ググるといろいろ出てくるのでそこは割愛します)
今回もその認知のが私を苦しめる原因でした。この歪みは自分で生み出してしまうのが厄介なところです。私は認知の歪みは2つ発生させていました。
具体的にいうと、私がやってしまった認知の歪みは下記の2つです。
青矢印:理想の成長曲線を作を作り、差分を認知する
赤矢印:最終的な理想のレベルと現状の差分認知する
それぞれについて解説していきます。
青矢印:直線的な成長イメージは悪手
青矢印では、成長を焦りすぎるあまり、私は無意識に直線的な成長をイメージしていました。
例えば2ヶ月後に自分の設定した目標を振り返ると、目標に対して全く届いていないことに気づくのです。更にストレスを感じます。
自分の理想の成長スピードを赤矢印と考えがちな目標を立てがちです。ダイエットとか何ヶ月で何キロ!と一緒ですね。
青矢印についてはメインストーリーで見事に理想の目標を書くことで生み出してしまっています。
- 爆速で成長することを決心。それが裏目に。 自信と浮かれ具合を一気に消失した私は、迷惑をかけないために、 一刻も早く一人前のエンジニアに成長するために、自分の成長イメージを設定します。 メモに目標を書いていきます。 一ヶ月で基本的なバグフィックスができるようになる。3ヶ月で簡単なモジュールが追加できる。 半年で新規で機能を作れるようになる。。etc... これも特に成長には関与しません。全くの逆効果でした。 ただただ自分を焦らせる結果になっただけなのでした。 どんどん実態の自分の成長からは離れ、目標を下方修正するもまだまだ届かない。 そしてそれを行うことで自分のダメさを再認識することになり、自分を追い込んでいきます。 つらすぎて3ヶ月ほどでこれはやめることにしました。
※ SIer/年収1000万を手放した私 ( 後編 / 復活の章 ) 〜 webエンジニアの 挫折者から生存者へ 〜 - 毛並みの揃った話はないけれど
赤矢印:最終的な成長を意識しすぎるのも悪手
赤矢印では、最終的にLv3を目指していたため、今の実力の曲線との差に絶望する日々と、いくらコードを書いてもLv2にさえ近づくことができないことにストレスを感じていました。
これは完全に満足する状態に持っていけないことに認知を歪ませます。完璧主義の方に多かったりするのではないでしょうか。
実際の成長曲線は指数関数的
では実際の成長はどうなのか。現実直線的に成長できるほどそんな甘くないですし、特にプログラミングの場合は自分のレベルの成長曲線は右下の曲線になります。
実はエンジニアの成長曲線というものは、投入時間に対して比例で成果が成長するのではなく、後半に指数関数的に成長することがわかりました。
時間や量を投入してもそれほど成長せず、年単位の努力で実を結ぶとある瞬間に成果を感じやすくなってきます。
ここを認識せず、途中で辞めてしまうため挫折となるのです。
以上が、メンタル面で苦しみにより挫折を産むメカニズムです。
3.理想的なメンタルモデル
- 挫折しやすいメンタルモデルを破壊する
このように私は明らかに挫折しやすいメンタルモデルを認知していることが判明しました。
問題の整理ができました。今度はいかにして挫折しないメンタルモデルを手に入れるかを考察していきます。
まずはこの挫折しやすいメンタルモデルを破壊していきます。
そもそも認識が誤っていたのです。私を苦しめていた2つの認識は外しましょう。私も現在も無意識に認知の歪みを生み出していることに気づくので、「あー認知が歪んでいるな」と客観的に気づくだけで問題ありません。
認知の歪みの原因は青矢印と赤矢印を認知しすぎることが原因のため、ここを考えないようにします。しかし考えないようにしない、というのは再現性がなく抽象的なので具体的な対応策に落とし込みます。
- 未来と過去は盲目でいい。今、ここに熱中する、「熱中ドリブン」
理想のメンタルモデルを図解する
下記の図に理想のメンタルモデルを図解してみました。
先程削除した差分の線が消滅しシンプルになりました。
主に脳内で理想を作ってその差分があることでストレスを感じていましたが、理想のメンタルモデルでは実際の成長曲線だけを観察します。
スタート時点で理想のイメージは立てます。自分の現状のレベル感(レイヤやレベル感)と理想像をイメージします。
でも何月何日に達成するかは特に決めませんし、年単位でざっくり状態目標だけ立てます。
以前よりも成長してきて感じますが、理想のイメージは、自身が成長することで少しずつ解像度が上がっていくのを感じます。
はじめは漠然としたものでよいのですが、なぜ私がその理想イメージの状態に惹かれるのかは成長してみるとわかるのかもしれません。
理想のメンタルモデル → 圧倒的行動量/スプリント
最後に、今回の経験と考察で生まれた熱中ドリブンについて少し考察します。
このメンタルモデルでの行動は個人的に「熱中(遊び)ドリブン」と呼んでいます。
俗にいう計画的に行う行動を「計画(仕事)ドリブン」と呼んでいます。
人の不安は未来への想像から生まれます。
熱中ドリブンは、それを排除し、今ここに熱中する、というメンタルモデルです。
未来や過去を考えないことは、Well-being やマインドフルネスの考え方に近いと思います(ここも詳しくはネット上に沢山あるので割愛します。)
実際に熱中ドリブンを実践している私の行動内容や量も変わってきています。下記のツイートのように、直近でも私は熱中フェーズに入ってからプログラミングに投入量/時間が増すことを実現できています。
【目標達成のための生活:休日】
— Kaz_Shio / SIerと自社開発 エンジニアのリアル:デジタル人材の探究 (@Victoria_Peak_) 2020年1月28日
- 朝最低7時起き
- 午前:コード書く、ブログ書く
- 午後:コード書く、ブログ書く
- 土日どちらか夜18-21時:2h30mぶっ通しロードバイクトレ
- 合間に:バッティングセンター、ピッチング
成果の確実性に対して変える思考スタイル
熱中ドリブンは一般的な考え方として似ているのは、アジャイルです。ただ全てがこのケースに当てはまるとは限らず、再現性がある活動などには成果が期待できるのでウォーターフォール思考で行うのが良いと思っています。
- 「成果がある程度期待できる行動」に対しては、「直線的に目標を立てるウォーターフォール的思考」が有効です。
- 「成果の不確実性の高い行動」に対しては、「理想のメンタルはアジャイル的思考」=熱中ドリブンが有効と思います。
と整理できます。
特にプログラミングは私にとって未知な新規性の高いため、投入量と行動の方向性に対して確実な成果が期待できない。その場合はアジャイル的な思考法が適切と思います。
駆け出しエンジニアや新しいことに挑戦する方はこの熱中ドリブンを試してみてはいかがでしょうか。
まとめ
お読みいただきありがとうございました。
メインストーリーから毛色が変わりまして、今回からは分析/考察が中心となります。
エンジニアに関わらず、少しでもこれから新しいことにチャレンジする方々のお役に立てればと思います。
次回について
今回はメンタルの考察をしました。 第二回はプロダクトと自分のスキルレベルの相関について考察していきたいと思います。
プロダクトは成熟度があり、それに対して適切なエンジニアレベルがあります。
スキルレベルが低いエンジニアが成熟したプロダクトにあたった場合、どのように攻略していくのか、を考察していきたいと思います。
P.S.
日々の活動の記録を見たかったり、転職やその他仕事についてご興味がれば下記までよろしくお願いします。