アラフィフWebエンジニアの生存戦略について考える
あと数年で50歳という年齢が現実的になってるのでアラフィフWebエンジニアの生存戦略考えてみました。
noteの方にも書いたのですがこっちはちょっとだけ加筆してみました
本題に入る前に自分の経歴をざっくり
ざっくりといいつ、それなりに年齢重ねてるので、文字数多くなってすみません・・
20代:
一応就職活動したけど、何となくしっくり来ないので、2年ほどフリーターで、早朝にサーフィンしてから、仕事するみたいな生活をしていた。
フリーター時代にWindows/MS Access & VBAを独学で覚えたのをきっかけに、派遣社員として働くようになって、とある外資系企業で当時としてはかなり大規模なネットワーク環境の中で色々なことを経験させてもらったので
など色々学びました。
30代:
20代でアルバイト&派遣しか経験してない負い目があって、正社員を志すも挫折して、もとの派遣先に戻って色々経験させてもらう。
外資系企業で何故かプロジェクトマネージャーの役割をさせてもらえので、必然的に英語を嫌でも勉強しないといけない状況だったので、スキルアップになったし、そのままそこの正社員っていう道もあったけど、色々考えた末に、人材派遣会社に入社。 人生初の正社員になって、キャリアカウンセラーとして色々やった
40代前半:
キャリアカウンセラーとして、色々な人の人生を垣間見てきたことで、色々考えさせられることが増えてきて、1社に雇用されててその1社からの収入に全てを依存することに怖さを感じていたので8年ほど勤めた会社を退職してフリーランスになりました。(詳しいことは昔にブログに書いてるので興味ある方はこちらを)
退職後は
- 前職で趣味と多少実益を兼ねてバックエンドとiOS/Android向けアプリをつくったりしてずっとコードを書いていて、知り合いの会社でエンジニアがいなくいというので、そこでWebアプリケーション開発、運用、その他何でもという感じで仕事を開始
- それがフリーランス最初の仕事で、過去何人もの人が関わってきたRuby/Rails&AngularJSという構成で1人で色々見るのはそれなりに大変だった
- その後は、基本的に自分で営業したり知り合い経由でお仕事の相談を受けて、基本は2社かけもちする形でお仕事
という感じで気づいたら5年近くフリーランスでWeb系のエンジニア+αな仕事をしてます。
本題の生存戦略について考える
普通のWebエンジニアとして生きていくと思ってます。
普通っていう言葉の意味合いがどのようにでも解釈できてしまうと思いますがジャンルが違うけど
相手は普通の男がいい、というあなた。会話力・ルックス・身長・清潔感・ファッションセンス・学歴・年収がすべて普通の男なんて、たったの0.8%! 普通のダンナがなぜ見つからない?っていう本より
みたいな感じをイメージしてるのですが、流石にこの引用だけでは伝わらないんので、掘り下げてみます。
仕事をする時に期待されそうなことを3軸程度で自己評価してそれぞれが「普通」に出来ることをイメージ Web系のエンジニアとして仕事をしていく場合に複数名のチーム(私は2名〜8名位規模がほとんど)体制で仕事をするのが一般的かと思います。
付け加えると技術情報について調べるのに一定の英語スキルというのも問われてくるケースがあるかと思うのでそのため仕事をこなすスキルとして
- ベースのWeb関連の技術スキル
- チーム開発の中で目標達成に向けてのマネジメントスキル
- 読むスキルを中心とした英語
という3軸で表現できるかなと思ってます。
3軸を自己評価
Web系の技術:
Ruby/RaisベースのWebサービスでおそらく5年位運用してる会社のお手伝いをしてます。 そこはModel/Controllerとも100を超えてて、色々手を入れづらい状況だったのでコツコツとテスト書いたり、業務固有の概念をPORO(Pure Old Ruby Object)でFatModel/Controllerの状態をちょっとづつ解消していき、gem のアップデート(含むRails本体)なんかもこなせます
フロントエンドの方は管理画面系の処理を書くことがほとんどですが
- 4年位前に関わったとある案件で、かなり肥大化して&たまに謎の挙動するjQuery+αのやつをChromeDeveloperToolsを毎日眺めつつ既存実装読み解
- jQueryメインだったフロントエンドを徐々にVueを採用
- AngularJS(つまりは1系)の既存実装をちょっとづつAngular6/7&TypeScriptに書き換える みたいなことも対応
マネジメントスキル:
立場的に自分がチームの運営を主体的にすることはないのですが、基本的に複数案件をこなしてるので、セルフマネジメントの必須スキル「タスクばらし」そのポイントで触れられてるタスクばらしは常に行ってます。
「タスクばらし」とは、読んで字のごとく、仕事をタスクにバラすことである。仕事に取り掛かる前に、その仕事の要素を分解し、どのように進めるか道筋を立てることで、どれくらい時間がかかるか、リスクは何か、見通しを得ることができる。
基本的に2つ(一時期は3つ)仕事を掛け持ちしてるので
- それぞれの仕事の現状やらないといけない作業をバラす
- だいたい1時間単位になるようにする
- 開発のお仕事でだいたいSprint単位でやることが決まるので、その枠組みの中で、タスクばらしされた内容の中で、難しいそうなやつとか緊急度高そうなものを自分のピークタイムに実施する
- Sprint始まりにそういうのを集中させる
- 平日だいたい5時頃から仕事してるので、そういうのは朝一番に着手する
という感じで日頃自分のやることは処理してます。
あとは、長くお手伝いしてる所だと、なるべく情報・状況を自分だけに属人化しないように、ペアプロとかペアオペでこまめに情報共有してるので、そういう作業を差し込めるように他の人の進捗なんかも気にしながら作業は日々行ってるので、30代でプロジェクトマネージャーしてた経験が今になってだいぶ役に立ってますね
英語:
昨年からイギリスの人と一緒に仕事をするようになりました。その人は日本語は話せるけどエンジニア未経験だったので、GitHubのIssueとかPRレビューとかはなるべく英語で説明していました。 ※ちなみにここ最近3ヶ月間くらいは、毎朝zoomでその人と英語80%位の割合で話してます
3軸を可視化するときっとこんな感じ
それぞれの軸で、自分よりももっとデキる人を何人も知ってるのですが、3軸を満遍なく見た時には、そんなに悪くない所に自分はいるかなと思ってます
私は、フリーランスでお手伝いする立場なので、最終的な意思決定はする立場にはないけれど意思決定をしてもらう上での状況を整理して相手の知識や経験を踏まえて言語化・可視化して、みんながやりたがらない雑多なことを拾うのは、割と好きだったりします。
なので相手の人/会社にとって都合よく使ってもらえるような普通のWeb系エンジニアとして生きていくのが自分なりの戦略かなと思ってます