29歳がエンジニア人生で後悔していること　学習、キャリアなど

29歳になったので、20代最後の歳ということで、
これまでのエンジニア人生（7年間）で後悔していることを書いていきます。
重要順です。
若手の勉強や人生設計の参考になれば幸いです。
長いです。

# 私のプロフィール
* 芸術系の大学を卒業
* 29歳、IT業界は経験7年
    1. 5年目まで: 大手電機メーカーのIT子会社でWebやスマホの仕事（BtoCメイン）
        * Web: サーバサイド、クライアントサイド
        * スマホ: iOS & Android
        * 小規模（～7名）チームマネジメント
    2. 6年目～現在: 中堅通信会社で要素技術の開発
        * ネットワーク、GUI etc
        * 便利な技術を開発してサンプル実装を行うのが主な仕事です


# 陳腐化しづらい基礎的な知識を多めに勉強すべきだった
流行りの技術を勉強するとすぐに流行遅れになり結局学習に費やしたコストが無駄になることも多いです。
実際、私は昔いくつかWebフレームワークを学習したのですが、どれも数年で使わなくなり虚しい・・・・・・。

Web開発における重要な概念（「セッション」とか「DI」とか）の勉強には役立ったのですが、
結局使わなくなった知識が多くあり無駄なので
休日に時間を割いてまで勉強する値打ちはなかったなあと思っています。
今になって振り返ってみると、費やした時間の割に今後のキャリアに役立つ知識が少なくて、自分は一体何をしていたんだろうとショックです。
学習のコスパを上げるには流行遅れになりづらい知識を習得すべきだったと反省しています。

**だから、こうすべきだった:**

その点ではIPAの情報処理技術者試験の学習はコスパが良いといえます。
基本情報や応用情報は初歩的すぎて普段の業務に結びつきづらいのですが、
高度試験の勉強は業務に使えます。
実際、私は5年ほど前にネットワークスペシャリストに合格したのですが、
5年間ずぅぅ～～～～～～～っとこの知識を業務に活かせています。
高度試験に合格した程度だと専門家を名乗るのにはちょっと厳しいですが、
私の場合はエンベデッドスペシャリストやプロジェクトマネージャあたりも業務の役に立ちそうなので、このあたりに時間を費やしておけばよかったと感じています。

それからLinuxのコマンドの知識もずっと役に立っています。
書店に行けばLinuxコマンド辞典みたいな書籍があって、それに100個くらいコマンドが紹介されていると思うので、
そうした辞典を一通り読んでおけば、「コマンドでどのようなことができるのか」がざっくり頭に入ります。
半日間くらい集中して読めば終わるので、学習としてはわりとさくっと済みます。
ちょっと複雑なワンライナーを書いたり、そもそもそのためにググるためのヒントとして役立ったりして便利です。
ざっくり「コマンドでどのようなことができるのか」の範囲を把握できればよくて、細かく記憶する必要はありません。
（Linuxのコマンドにも地味に流行がありますし、ディストリビューションが変わると知識が通用しなくて悲しくなることがあるので＾＾；）
Linuxコマンドの全体像（何ができて、何ができないのか）を把握できればOKです。

# 自分の経験をベストプラクティス集として書き溜めておくべきだった
普段仕事をしていると、様々な学びがあると思います。
DBアクセスが多すぎると実行速度が落ちる、コードレビューをするときは〇〇が要チェック、GoFのデザインパターンのうちアレはこういう条件のときには使えない・・・・
こうした学びをベストプラクティスとして整理していなかったので、
7年間のキャリアの中で忘れてしまい、もったいなく感じています。
私の場合、真面目に整理してあれば

* AndroidアプリのUI設計での統計的エビデンスに基づいた要考慮事項リスト
* チーム立ち上げのときに実施すべきベストプラクティス集
* Node.jsアプリのパフォーマンス改善でまずやるべきことリスト

などを作ることができたはずですが、上記は一つも存在しません。
結構昔のことなので忘れてしまった点も多く、せっかく学んだことなのに今後に活かせなくなってしまいました。

書籍やWebの資料である程度勉強はできるのですが、
自社のプロダクトや文化に適合したベストプラクティスや、
役に立つという実感や実績が伴ったベストプラクティスは、
なかなか得難いものです。

**だから、こうすべきだった:**

プロダクトに依らない汎用的な技術やマネジメントなどについて、
役に立つ知識は普段から書き溜めてメンテナンスしておけば仕事が楽になったと思います。
知識を積み重ねていけるように外部化していくことが重要です。
（経験を忘れて次に活かせないのは虚しいので。犬や猫じゃあるまいし）

また、ベストプラクティスとしてまとめておくと
「パフォーマンス改善するときはまずコレを見れば良い」、「チームの進捗管理をするときにはまずコレを見れば良い」といった具合に
自分にとってのデフォルトの選択肢になってくれるので、
困ったときにいろいろな記憶や資料を掘り返す必要がなくなり時短にもなります。

# 自社製品の開発をする企業に早めに転職すべきだった
最初の会社では人月おいくらの仕事をしていました。
開発しているのが自社製品ではなく親会社の製品なので、プロダクトに愛着がありませんでした。
プロダクトの品質を上げても自分の給与が上がるわけではありませんし、
なんならダラダラと仕事をして開発期間を引き伸ばすほうが売上が伸びます。
なのでモチベーションが上がりませんでした。
一方で職業倫理として真剣に仕事をしたいですし、どうせ仕事をしなくちゃいけないなら真面目に打ち込みたいという気持ちもあり、
若干の葛藤がありました。
私の周囲を見ても、仕事に愛着を持てないと思しき人がおり、
スマホ片手にトイレに行って2時間帰ってこないというのを毎日繰り替えす人とか、プロとして信じられない手抜き（分かっていてこのような杜撰なコードを書いただろう、としか批判できないもの）をするといったモラルハザードを起こしている人がいました。

さらに、子会社は親会社の意向に従う、といった場面が多くありました。
具体的な力関係は、
私（子会社のヒラ） < 子会社の管理職 < 親会社のヒラ < 親会社の管理職
となっており
仕事を自分でコントロールできない部分が大きいのが苦痛でした。

転職してからは、自社の技術を開発している、
つまり仕事の成果が自社の業績につながってくる　という環境ですし、
自分の裁量が大きくなったので
上記葛藤がなくなりストレスの種が一つ減りました。

**だから、こうするべきだった:**

転職は早めにすべきでした。
可能なら新卒時点で自社製品を扱う企業に入るべきでした。
私がいた会社では、親会社と子会社はやっぱり違います（裁量、さらに賃金）。
2つくらいプロジェクトを経験したら
すぐに転職活動を初めても良かったと思います。
転職活動自体は何年間やってもいいわけですから、
経験が浅いときから初めて、納得のいく企業と出会えるまで続ければよかったと反省しています。

ちなみに、タイミングが重要です。
私が転職した2016年は有効求人倍率等の指標が指し示すとおり景気がよく、
満足な転職ができました。

一方で、私が新卒の就職活動をしていた2011年は景気がかなり悪く、
求職者と企業のパワーバランスがおかしなことになっていました。
学生が企業の人事を接待する事件があったり、人事が学生に肉体関係を要求するといったこともありました。
学生の自殺や失踪が増えたのもこの時期だったと記憶しています。
多くの企業が採用数を絞ったので、待遇の悪い企業に入社することになった人がたくさんいました。
2011年に就職活動をすることになったばかりに生涯年収がウン千万円も小さくなった人がたくさんいたわけです。
こういうタイミングに転職活動をしてもうまくいかないのは目に見えています。

# 専門領域の形成に着手しておくべきだった
私は29歳です。
これくらいの歳になると、周囲に専門知識を持った人が増えてきます。
たとえば新卒から7年間フロントエンドをいじっている人がいればその人はかなりの知見を蓄積しているはずですし
順調に博士号を取った人たちがビジネススキルを身につけてバリバリ活躍し始めるのもこれくらいの年齢だと思います。
こうした人たちと対等に協力したり、ときには競争する必要があります。

そのための武器として専門領域があると心強いです。
要は「○○なら私に任せてください！」と声高らかに宣伝すれば
協力者が集まってきやすくなったり、
仕事が集まってくるので競争にあたって有利なものを選択しやすくなったりするわけです。

私の経験上、薄く広くなんでも知っているだけの人は、
値打ちの低い余りものの仕事ばかりを担当させられるゴミ箱みたいな便利屋として扱われるのでキャリア上不利です。

さらに、会社によるかもしれませんが、
エキスパートの道を行くのかマネージャーに挑戦するのかといったキャリアの方向性の選択を迫られる頃合いでもあります。

**だから、こうすべきだった:**

早めに専門領域の形成を意識して動くべきでした。
仕事を選べるときはキャリア上有利な仕事を選ぶべきでした。
なんとなくの感触としては、27歳くらいからは知識を深掘りする方向に切り替えるべきでした。

また、愛着を持てる技術を見つけるべきでした。
私はソフトウェア技術を仕事のツールとしか捉えていません。
IT企業に入ったのは入社試験がそこしか受からなかったからですし、
ノースキル状態で就職した人でも学習と工夫次第でそれなりの収入を手に入れやすいので
未だにソフトウェア開発をしているわけです。
しかし私のような人は、愛着がある人間には、努力の量で負けてしまいます。
これは専門領域の形成にあたっては不利となります。
愛着を持てる技術を見つける方法は・・・・・よくわかりません・・・・

# 早めに結婚すればよかった
※ 結婚をしないひと、子供を作らない人が世の中にたくさんいるのは知っています。
（私の親族や古くからの友人にもそうした人たちがいます）
そうした人たちがそうした人生を選ぶのは自由ですし、好きにすれば良いと思います（私には関係のない話です）。
けれども私個人は結婚をしたいし子供もほしいので、個人的な反省として、この項目を書いています。

私は東京に住んでいます。
東京は男女ともに初婚年齢が平均30歳を超えています。
ちょっとこれはおそいと考えています。
仕事に油が乗ってくる時期と、子育てが忙しい時期が、衝突してしまいます。
仕事でも子育てでも不便ではないでしょうか。


職場で下っ端でいられる時期のうちに
子育てのハードな部分を済ませたかったです。

周囲に未婚の人が多いので結婚について焦っていなかったのですが、
早めに考えて行動すべきでした。

**こうすればよかった:**

早めに結婚を意識した恋愛をする。
結婚や子育ではコスパを考えてすることではないと思っていますが、
そうだとしてもぴったりな時期とそうでない時期があるというのも現実だと感じています。

# とりあえず目立っておくべきだった
目立っている人には面白い仕事のチャンスが多く回ってきます。
また、目立つことでなんか頑張ってる感が出るので周囲からの評判が良くなり
仕事がスムーズになります。
周囲に細かく恩を売っておくことも重要です。
（たとえば誰かがプレゼンしたら、その後の雑談で「○○っていうの、良かったですよ～」などと言ってその人の理解者としてのポジションを印象づける）

私の周囲で、仕事を自分で選びやすい立場に立てている人は、上記のような活動でとりあえず目立って顔を広げている人が多いです。
仕事を選択できる立場はとても重要です。
学習やキャリアのために効果的な仕事を選べます。

私は「ごたごた言う前に製品を作れや！」みたいなかなり黙々と仕事をするタイプだったので
いろいろな人たちの中で埋没してしまっています。

**こうすればよかった:**

日頃から目立つ。そのために以下のことを実施します。

* 成果をアピールする機会には頑張ってアピールする
* だれかのプレゼンなどの機会があれば反応してあげる（ただしやりすぎると人との距離感を測れない人みたいになってしまうのでまずは雑談の中とかでポロッと反応する方向で進める）
* 雑談の中で自分の仕事内容について話す