今日もヤバさをI/O中。

(物理的)大型エンジニアのブログです。基本的に何かが足りません。

新卒1年目を終えて、学生時代から今までを振り返ってみた

4月になり、新卒1年目が終わりました。

学ぶことが沢山あり、これからやりたいことも明確になった新卒1年目でした…が、新卒2年目ともなると後輩も入ってくるしもっと大きな成果を求められます。

そのためには今の自分のままではダメで、もっと成長する必要があります。

そこで今回は、自身のエンジニア人生である2年半分の振り返り(超大作)について書こうと思います!

今回も例に沿って YKPWT で振り返ります!

やったこと

開発アルバイト時代(2016/10/01 ~ 2017/03/31)

株式会社ウィルゲートに開発アルバイトとして、入社。

当時は集団で開発した経験がなく、フレームワークもほぼ触ったことがないような状態。Git に至っては初めて存在を知る…

仕事

最初は開発のテストがメイン。また、業務理解のために、画面遷移図やフローチャートを書く。

徐々に業務にも慣れた頃に小規模の機能実装を任されるようになり、CakePHP を使った開発がメインの業務に。

コーディング / Pull Request ルールや、 Git 開発フローなど git を用いた集団開発の基礎を実践しながら学ぶ。

プライベート

大学では通常授業を受けつつ、学生プロジェクトとして Arduino や swift を触ってボードゲームを作成。

また、ボードゲームのコンセプトや内容詰めのために UI / UX やサーベイも実践しながら少しずつ学ぶ。

Kamihira Project 2016

就活も始まる頃だが、企業で働くエンジニアのイメージが1ミリも湧いていない状態。そこで技術的インプットも兼ねて、技術系のイベントに参加し続けていた。

先輩社員の誘いで、若手エンジニアの勉強コミュニティに参加(活動内容は後の時代で触れます)

内定者インターン時代前半(2017/04/01 ~ 2017/09/30)

株式会社ウィルゲートにて4月上旬に内定をもらい、内定者インターンとして働くことになる。

1年以上に渡ってお金を頂いているので、肩書きは開発アルバイト。

仕事

開発アルバイト時代から継続して、CakePHP を使った小規模の機能実装をこなす。

夏休み中は中規模開発プロジェクトに、実装者としてジョイン。

CPM やガントチャートを用いたスケジューリングや結合 / 受け入れテストなど…本格的に集団で開発することについて、実践しながら学ぶ。

プライベート

大学の授業と卒業演習でいっぱいいっぱいだったこともあって、それ以外の動きは乏しかった。

とはいえ、web 系についてのインプットは休日にやっていた(wordpress 構築してみたり、virtual box や vagrant を使ってみたり)

内定者インターン時代後半(2017/10/01 ~ 2018/03/31)

仕事

10, 11月は働きすぎで親の扶養から外れてしまう可能性があったため、お仕事はお休み。

12月以降は小規模の機能実装、3月からはまた中規模開発プロジェクトに、実装者としてジョイン。

業務と直接関係はないが、社内輪読会に参加。

輪読会はじめてます! | ウィルゲート開発ブログ

プライベート

CoinStep という仮想通貨バーチャルトレードゲームを、若手エンジニアの勉強コミュニティメンバーらで集団開発をしていた。

主に Golang を使いながらAPI の実装を担当。他にも、一部フロントで vue.js / vuetify.js を使った実装もした。

あとは初めて isucon に参加したり、イベントに参加したり…コワーキングスペースを借りて開発してたりもした。

新卒1年目時代前半(2018/04/01 ~ 2018/09/30)

正社員になった。同期のエンジニアが皆自分より技術力があることや、業務で一緒に開発をしてきた社員らと同じ立場になったことで緊張と焦りもあった。

仕事

4月中旬では新卒研修、4月下旬 ~ 5月までは、内定者インターン時代後半からジョインしていた中規模開発プロジェクトにて実装をしていた。この時業務で初めて SQS を使った。

SQSで処理を非同期化したらストレスフリーになった - WILLGATE tech blog

また、開発アルバイト・内定者インターン時代ではやらなかった運用保守を担当することになり、お問い合わせに対するログ調査などをやるようにもなった。

6月からは、新しいプロダクトの開発プロジェクトにジョイン。構成はレイヤードアーキテクチャ + Laravel + vue.js 。中でもレイヤードアーキテクチャは社内でも初めての試みで、皆で相談しながら理解を深めつつ、実装をしていった。

また、Laravel も初めて触るフレームワークだったため、チームで勉強会をしつつ自分でも勉強していた。

プライベート

正社員として入社してから3ヶ月ぐらいは思うように時間が取れず、いっぱいいっぱいの状態に。

(当時は実家から通っており、通勤時間は片道2時間15分…。平日に勉強する時間が全く取れないので、通勤時間が1/3の時間になるところへ引っ越した)。

この時期は仕事でレイヤードアーキテクチャに初めて触れたため、DDD やドメイン設計について調べて、どう実装していくのが正解なのか考えて理解を深めていた。

去年若手エンジニアの勉強コミュニティメンバーと一緒に参加していた isucon にも参加した。

新卒1年目時代後半(2018/10/01 ~ 2019/03/31)

仕事

6月から触っていた新しいプロダクトがリリースし、こちらの運用保守も担当することに。

ただ残念ながらこのプロダクトは、様々な観点から見て品質が悪いという課題があった。加えて、当初4人いた開発メンバーも自分と LDR だけに。

どう解決するのか自分で分析 / 提案 / 実行まで LDR に相談しながら協力してサービスの課題に向き合い続けた。

その影響で、初めて E2E テストをプロダクトで書いたり(puppeteer, nightmareJS)、テスト技法やテスト計画書について輪読会で学んだりした。

また、弊社で品質保証 PRJ を立ち上げ、自社の障害分析を行なっている最中である。

プライベート

今までに比べると多くのアウトプットをした。

あとは社内イベントのスタッフをしたり、技術系カンファレンスの当日スタッフに参加したり…

2月ぐらいから QA に興味が出てきたため、独学で勉強しつつ少しずつ勉強したりイベントに参加している最中である。

Keep

エンジニア面

  • 企業で働くエンジニアのイメージがわからない状態から、ここ数年で企業にて働くエンジニアとしてやりたいことがかなり具体化するまでに至った
    • 描きたいキャリアパスが入社前より具体化した
    • 企業に対して自身がどのような価値を提供できるのか、その価値は企業が求めているものなのかも考えるようになった
  • エンジニアとしても社会人としても成長が感じられた(特に新卒1年目後半は自分でもわかるぐらいめちゃめちゃ成長した)
    • 以前よりも自走力が上がったように感じる
    • エンジニアとしての自分に少しだけ自信がついた
  • 着実に技術力を身につけている
  • アウトプットする量が、以前よりも多くなった
    • 以前は「技術力ないからマサカリ投げられるのこわいな〜〜〜」と思っていたが、今は「どうせ技術力ついたところで投げられるときは投げられるんだから、気にするだけ無駄」と考えるようになった
  • 自身の興味(これから専門性として極めたい領域が)設計と QA であることがわかった

それ以外面

  • アウトプットする量が、以前よりも多くなった

Problem

エンジニア面

  • 業務で大きな成果は出せていない
  • 未だ自身の専門性(強み)が弱い
  • 新卒入社前でももっと成長できる余地があったのではないかと感じる
  • お世辞にも、アウトプットの質はまだ良いとは言えない
  • 思わぬところで基礎知識が抜けている

それ以外面

  • まだまだコミュニケーションが下手
    • 説明下手の域を出ていない
  • 「地頭」「論理的思考」「メタ認知力」などが課題に挙げられるが、残念ながら PDCA の回している回数が少ない
  • 「成果」を達成するまでのストーリー立てが下手
  • 段々人前で喋る機会が増えたため、自分の喋り下手なところが露呈した

わかったこと

  • 自分の描きたいキャリアパスが今のところ「まずは QA エンジニアになりたい。そのあと設計と QA を武器にしたアーキテクトを目指したい」っぽい
    • 弊社でも、品質保証の分野は求められているため自身のやりたいこと(Will)と、会社が求めているやるべきこと(Must)は一致している
    • あとは自身の専門性 / できること(Can)が一致すれば、業務でも大きな成果を出せる
  • 新卒入社後(特に新卒1年目時代後半から)成長したのは、実践しよう・試してみようという姿勢と振り返りがあった(≒ とにかく PDCA を回す)から
    • そのためにはインプットとアウトプットの両立と振り返りが大事
  • いきなりアウトプットの質を求めるのは無理
    • 量を重ねてから質を求めるべき
  • 登壇は素振りが大事
    • 喋りが苦手な自分はなおさら回数を増やすべき
  • 「地頭」「論理的思考」「メタ認知力」などが課題に挙げられるが、残念ながら PDCA の回している回数が少ない
  • 「成果」を達成するまでのストーリー立てに適した考えの骨組みがまだないかも

次にやること

  • QA の知識を最優先で身に着け、業務で実践する
    • ただし、最終的に目指したい姿はアーキテクトなので、設計の知識も身につけ実践する
  • 設計の知識を実践する場として、プライベートでプロダクト開発をする
  • 継続的なアウトプットは続けつつ、半年ごとに自分のアウトプットを振り返る機会を設ける
  • 人前で喋る機会を得たときは、絶対に素振りをする
    • 回数をこなせば、喋り下手も改善する道筋が見える
  • 思考法・ストーリー立てに適した思考のフレームワークを見つける
    • これは別途ブログ記事にして考えてみる