こんにちは、まんじです。
今回はぼく自身、ソフトウェアエンジニアでのレベルが上がったタイミングがいくつかあるので、そこらへんについて書いてみたいと思います。
これからソフトウェアエンジニアをやる人も、すでにやってる人も参考になる箇所もあるかもしれないので、参考になる部分は日々の作業やアクションに取り入れてみてください。
自分で独学で勉強してポートフォリオ作ってから高田馬場にあるベンチャー企業に長期インターンで入った時に間違いなくレベルアップしました。
自分で1人でやってる頃はエディタはatom、言語はPython、フロントエンドは素のJavaScriptでGitとかは適当に使う〜みたいな感じだったんですけど、そこらへんがまるっと実務仕様に変更されました。
変更後)
技術スタック以外にも、ソフトウェアエンジニアでの仕事の進め方なども周りにいるエンジニアやデザイナーと関わって仕事をすることになったので、自分の周りの環境がかなり変わりました。
その状態で数ヶ月とりあえず通っていてコードレビューでボコボコにされ、スクラムミーティングでもつっこまれまくり、自分の当たり前の基準値が更新されていきました。
(最初は自分で勉強もせずに惰性で通っていたけど、着実にレベルが上がっていた。)
高田馬場ベンチャーでインターンしてた頃にちょうど半年目ぐらいから、ベンチャー社長PMのチームに移動することになって、ベンチャー社長にコードレビューやタスク管理などをマネジメントしてもらうようになりました。
そのタイミングで心機一転して、1日の業務時間6時間 + その前に1~3時間程度(タスクが終わらない時や実装方法がわからない時に)実務に関する作業をすることに自分で決めました。
なんとなく「こいつについていけば伸びるんでね???」と実感があったので、その自分のフィーリングを実行したという感じです。
結果的に、そんな日々を3ヶ月程度行っていて、みんながみんなにコメントする会みたいなやつ(名前不明だけど会社だとわりとそういうのある)のタイミングで
ベンチャー社長: 「きみはもっとできる」 ← なんかかっこいい
みたいな、コードレビューやらプロジェクトリードができるだのそういうコメントがベンチャー社長から自分に来て風向きが変わりました。
周りからの評価)
昔: 「まんじはクソ雑魚すぎる」
それ以降: 「まんじは結構できる」
周りからの評価が変わったのもそうですし、その3ヶ月程度でベンチャー社長のコードレビューの水準値に合わせていってベンチャー社長にとっての基準値が分かってきたことや、枝葉の技術的な部分のReactやAPIやCI/CDなどの技術力も向上していました。
高田馬場ベンチャーのインターンをやめる頃には、フロントエンドとAPI側なら安定してタスクがこなせるようになっていました。
いわゆる、わりと自走できるエンジニアみたいな。
マネージャーにサポートを受けながらジュニアレベルの開発がメンバークラスとして一人称でできる状態になった、みたく表現したいと思います。
そこらへんのタイミングで、本当にぴよぴよクソ雑魚駆け出しエンジニアから、ギリ雑魚ソフトウェアエンジニアになり始めた、、、というレベルアップ具合でした。
こんな感じのルートを辿ってきて、ニートも完全に飽きていたのと病んでいたので、フリーランスエンジニアになることにして案件を探し始めました。
QiitaやZennでそこらへんの情報を調べていたんですが、イマイチ具体的には書かれていなくて(どれくらいの経験年数とかでどれくらいの単価なのか?など)、よくわかりませんでした。
とりあえず脳死で案件があるサイトには片っ端から登録して、エージェントとも複数面談をして、書類が全く通らないということが分かりました。
当時のぼくのエンジニアのレジュメ。
冷静に考えてこの経歴で海外からフルリモート希望というあまりにも無理ゲーすぎる条件で、奇跡的に2社だけ書類が通ってそこの1社で働けることになりました。
時給は3000円税込(エージェントがマージン率などを公開していなかったため、結構取られていたような気がする)で決まって、当時はすごく興奮しました。
ぼく「に、日給24,000円!!!(興奮)」
このタイミングで明確にソフトウェアエンジニアでフリーランスエンジニアをやることに対する解像度が超高まりました。
また、フリーランスエンジニアを仲介して稼ぐビジネスモデルや、どういったITの会社が多いのかなどもこのタイミングで実際にリアルをベースに学べたのでかなりレベルアップした気がします。
ちなみに後述しますが、この偶然入れた会社でぼくはまた成長をすることになります。
フリーランスエンジニアの案件を取れたタイミングでは全然雑魚というか、ムーブメント?まとっている雰囲気?は雑魚でした。
ただ、フリーランス案件を探して無理やり入り込んだ時は確実にレベルアップしたと思いました。
フリーランスで稼働し始めて、自分のマネージャーが外資出身で年齢は1個年下の役員のソフトウェアエンジニアの人になりました。
その人がぼくを工数として扱って仕事を進めていくような感じです。
フリーランスになってからも正直最初の6ヶ月ぐらいは、今振り返ってもぼくのパフォーマンスは微妙だった気がします。
ギリ切られないぐらいです。
ぼく「す、すいません、終わりませんでしたああああ、ブランチはこれです。」
役員エンジニア「分かりました。お疲れ様です。」
こんな感じのやりとりを複数回はした記憶があります。
そんで印象深かった思い出の1つに、フリーランスになってから6ヶ月経過したぐらいの頃に、ぼく自身ソフトウェアエンジニアをやめたいと思い始めていたり仕事が嫌になっていた頃でした。
モチベーションが落ちていて、かつ、それがパフォーマンスに出始めていた頃でした。
役員エンジニア「最近どうですか?」
まんじ「うーん、まあ普通ですね、、、中国の女の子に振られました」
役員エンジニア「まんじさんは今パフォーマンスが落ちていると思っていて、昔のほうがもっとPRとか出してくれていた気がします」
まんじ「すいません、改善します」
ここでなぜかスイッチが入り、ぼくは振られたプロジェクトやタスクを気合いを入れてこなすようになりました。(目標の納期までに可能な限り気合いで終える)
そしてこのタイミングでなぜか分からないんですが、Reactの状態管理が複雑な箇所もリッチめなUI(状態管理が複雑)もかき分けて捌いていけるようになぜかなってReactをハンドリングする力が急激に上昇し始めたのを覚えています。
フロントエンドのレベルがクソ上がり始めて、それがPRなどにも出始めて、ベンチャー社長に教わってた頃に近い感覚でレベルが急激に上がり始めました。
役員エンジニア「たくさんスピーディーにタスクをこなしていただき、ありがとうございます!」
まんじ「いえ!」
といった具合に昔とデジャビュ感のある自分に対する評価変更が起こり始めました。
結局のところ、少しのセルフブラックをするとリターンが得られる、てきな。
マネージャーが役員エンジニアの人から、次はGoogle出身のソフトウェアエンジニアの人が自分のマネージャーになりました。
役員エンジニアの人も経歴が誰が見ても強かったんですが、こちらのGoogleエンジニアも誰が見ても強いなんてレベルではないレベルで誰が見ても強いソフトウェアエンジニアの人でした。
「Googleエンジニアの人が毎週自分にタスクを振って、それを自分がひたすらこなす」という一週間のルーティーンが始まりました。
実はぼく自身、プログラミング?ソフトウェア開発を教わった期間が1番長くなった(っている)のがこのGoogle出身のエンジニアの人です。
コンテキスト踏まえて本当にいろんなことをこの人から継続的に学ばせてもらって、一緒に仕事を進められる期間が半年、1年となっていく過程でぼくのレベルはさらに上がっていったような気がします。
たまに納期がめちゃくちゃきついプロジェクトとかもあったんですが、ある意味でそういうギリいけるかいけないかみたいなプロジェクトを振られた時に自分の開発スピードは上がったり、メンタルのタフさみたいな能力も上がったような気がしています。
とりあえず、当然なんですが、レベルがすごく上がりました。
フリーランスになってから稼働している会社がグローバル勢(日本人率10%程度)で、GAFAM出身やメガベンチャー出身や日本人でもみんな英語は当然できたり超高学歴(東大とか旧帝とか)など、ぼくの周りにいる人がいわゆる強い人が多くなりました。
そこの中に混じって作業をしていくなかで、自分の中の当たり前の基準値が変わっていきました。
レベルが勝手に引き上がっていったとも言えます。
昔だったら「え?やばすぎね?」みたいな感覚だったんですが、そこらへんのテイストの人たちと仕事を進めているとたしかにみんなできるわけなんですけど、なんていうかそこらへんが「普通」になったという感じです。
などなどいろいろな要因はありそうなんですが、昔に比べると明確にレベルが上がったように自分自身感じ始めていました。
環境に適応してレベルが気付かないうちに上がっていっていた、、、といった具合。
ぼく自身、個人開発は結構してきていて全部失敗しているんですけど、その作っている過程で実は結構技術力が伸びていたんじゃないか?って思うことが多いです。
こういったものを作って失敗してというのを繰り返してきたんですが、作ってる過程でコードを書く時間が多かったので、やっぱりそこで技術力のレベル感で言うと上がったような気はしています。
基本的にぼくがレベルアップした時はいつも環境が変わった時で、かつ、その環境で底辺ゾーンから無理やりなんとかして適応した時だったような気がしています。
多分、ソフトウェアエンジニアに限らずなんですけど、なんか人生はこれな気が最近しています。
完璧になってからフィールドに入るのではなくて、先にフィールドに入ってそこで死にかけながら試行錯誤してなんとかすると、レベルが急激に上がる感。
この2つのタイミングでなんとかした時に、レベルは結構上がったと思います。
どちらの時期も今の自分のレベル感では明らかに不十分でしたけど、そこでなんとかすることで急激にレベルが上がったてきな。
こういうのって完全に1人だと無理で、環境や他人が必要になります。
ソフトウェアエンジニアで仕事をしていると、基本的に仕事を進めて話し合う過程やコードレビューなどでその人のレベル感がなんとなく雰囲気で分かります。
いろんな人と自分との差分を実際にそれらのことを行うことで把握して、自分の立ち位置を計測したり、自分よりも圧倒的にできる人は「どこがどれくらいどんな技術スタックでできるのか、逆にどこができないのか」などを把握して自分と外部の差分を把握した時にそこらへんの感覚の解像度が高まりました。
すごくざっくりと書くのであればこんな感じでしょうか。
若干上に書いてあることと重複するんですけど、、、基本的に自分よりも明らかにできる人と一緒に仕事をすることで、基準値がその人に合わさっていくとやっぱりレベルは上がったなと思います。
繰り返しになりますが、ベンチャー社長、外資役員エンジニア、Googleエンジニアの3人がぼくが継承を行なった人物たちなんですけど、その人たちと一緒に仕事して求められるアウトプットのレベル感に自分が合わせていった時にレベルがすごい上がったな〜というふうに思うところです。
なので、強い上司に乗っかって部下に徹するみたいなのが大事な気が今はしています。
とかこんなことを思っていたような気がしています。
後から振り返るとなんかかっこよく言えますが、実際やってる最中はストレス度合いが高くて普通にきついというマインドが結構な割合を占めていました。
もちろんそのハードルを突破した時は開放感とかはあったたりしんですけど、やってる最中はやっぱり負荷がすごいかかっていてきつかったです。
あとは現状も負荷がかかることを多くしているので、多分それがレベルアップにつながると信じたいところです(つらい😭)。
レベル上がってる最中は「やば、きつすぎる...」としか思わないわけなんですけど、後から振り返ると、きつい時とか現状の自分の基準値を壊してアップデートする時とかそこらへんがレベルアップする時な感じはするところです!
環境とか他人が自分よりもレベル高めなとこに混じって、自分でめっちゃがんばると、レベル上がるんじゃね感はあります。
というわけで、まだまだクソ雑魚なので、ぼくもがんばりたいところです。