見出し画像

2023年の振り返りと反省とこれから

こんにちは。エンジニア兼大学生のRyotaroです。

・昨年から社会人学生になったため振り返る時間が無かったこと。
・来年は転職を視野に入れていること。
・エンジニアの皆さんの振り返りを見て触発されたこと。

以上の理由からこれまでを振り返ってみようと思います。


1月

仕事
社内の新規開発案件にアサインされ、ストアドプロシージャを書くことになりました。
ストアドを使うのは初めてだったので、検証環境の精査(dbForgeを使うことになりました)、またMySqlでのそもそもの書き方を学習してました。

ドメインが医療のニッチな分野ということもあり、国語辞典のような太さの書籍を読んでました。
外部エキスパートを使って勉強や要件定義を行うことになり、そこではエンジニア側のスケジュール管理と外部パートナーとのやり取り担当でした。
1月はスケジュール管理であったり、勉強がメインだったと思います。

大学
UoPeopld(米オンライン大学)では、3月末までJavaのクラス(初級編)と代数学を受講してました。Java初級編でしたが、言語の仕様だけでなくオブジェクト指向や現場でのプラクティス、GUIツールとの連携など盛りだくさんでプログラミング入門書籍レベルをイメージしていたのでギャップを感じました。

代数学は、人生初めて大学で学ぶ数学科目かつ、英語だったので慣れるまですごく苦労しました。公式を覚えて問題を解くだけじゃなくて、公式が生まれた背景や実社会での使われ方まで学ぶことができソフトウェアを意識した授業になってました。平時は普通の社会人をしているので、夜中2時〜3時まで課題に追われることが多々ありました。

2月

ドメイン学習を行いながら、ストアドでの開発を行なっておりました。
全部で8000行ぐらいだったと思います。2月末にはテストスケジュールの作成も行ってました。
外部の方に何度もレビューの時間を頂き、ドメインに対する考え方や計算式に対する妥当性を相談させていただいておりました。

3月

ひたすらテスト+バグの修正をしてました。ストアドプロシージャの自動テストを組むことができなかったので、すごく時間が掛かりました。テストパターンと機能が凄く多かったので丸一日テストに費やすこともありました。

4月

仕事
テストは落ち着き、客先説明用の仕様書であったりドメインを深掘りした社内むけの資料を作成しておりました。会議などで何度か説明を行うことや客先質問に回答するための調査であったりでした。

大学
Java(発展編)とデータベースのクラスを受講しておりました。Java(発展編)は凄く難しいクラスでJavaを使いながらデータ構造、BNF記法、ジェネリクス、コレクションフレームワーク、Socketの開発、計算量などなどを学びました。コンピュータサイエンスで学ぶ科目の入門編を詰め合わせたようなクラスでした。普段はPHPを使っているので静的型付けに馴染みがなくJavaの思想を学ぶのに苦労しました。

データベースに関しては既に実務で定義の作成、開発などを行っていたので、内容は簡単に感じましたが毎週100P前後のリーディング課題があり凄く時間が掛かりました。前Termと同じく夜中の2時や3時まで勉強していることは当たり前でした。

5月

作成したシステムの凄く重いという問題があったため速度改善を行いました。MySqlのチューニング方法やボトルネックの探し方などを調べ手探りで改善を進めておりました。動的にメモリを確保することを最小限にすることやワイルドカードを使わない、ループを少なくすることなどを組み込みました。

6月

仕事
昨年作ったシステム(同じく医療)に対しての調査が発生しドメインの学習および調査を手探りで調べておりました。会社としては専門外で相談出来る相手もいなかったので上司と手探りを調査を進めておりました。

大学
9月まではコンピュータシステムと統計学のクラスを受講しておりました。コンピュータシステムは、オライリーの「コンピュータシステムの理論と実装」の原文版を用いて0と1から基本ゲートの作成、CPUやメモリの構築、アセンブラを作るところまで行いました。難易度は高いですがこれまでで断トツで面白い科目でした。

統計学は前回の数学科目に比べてかなり簡単に感じました。おそらく基本レベルのみをカバーした授業だったため?

7月

自社FWからLaravelへのリプレイスを行うことになりました。定義書やフローチャートの作成を行いました。アサインされる案件によっては個人開発になったりレビューの無い環境が存在しておりました。会社として初めて(若手?)全員で開発に参加する案件だったためレビュー方針、Pullリクの単位などチーム内で話しながら進めておりました。

8月

Laravelを使った開発における開発方針を纏めた社内のドキュメントを作成しました。テストコードの書き方もこのタイミングで学びました。レビュー時の負担を減らすことや、共同開発を行なっても色んな書き方が混在しないように意識しておりました。

9月

仕事
簡単なCMSの要件定義及び、実装、テストケースの作成、テストを行いました。自分手動で要件を決めるのは初めてだったので上司に相談しながら進めました。これまではシステムがバックグラウンドである人との会話が中心だったので齟齬なく進める(よしなに理解してもらえていた)ことが出来ておりましたが、開発を終えてから〇〇が違う、もう少しこうして欲しいなどがいくつか出てしまい反省です。
TinyMCEというツールを初めて使いました。

大学
ネットワークと微積分の授業を11月ぐらいまで受講しておりました。
ネットワークはこれまで受講したクラスで1番難しかったです。内容としては「マスタリングTCP/IP」から一歩踏み込んだ内容のイメージです。

ネットワークの知識を深める良い方法があれば教えてください。

微積分のクラスでは、指数や三角関数の微分であったり極限について学びました。高校の時から微積分の範囲がなぜか好きで楽しく授業を受けることが出来ました。

またこのタイミングでAtCoderを始めました。アルゴリズム難しいです。
言語はC++を使っております。C言語から学びましたが読める書籍の幅が広がったのでC++にして良かったと思っております。

10月・11月

仕事
昨年と今年開発した案件に対する、保守メインでの作業でした。React(Next.js)を習得しておくよう会社から指示がありそれぞれのチュートリアルをTSを使って行いました。またHooksを使った開発と挙動調査をいくつか行いました。

またCopilot導入に向けて社内FWとの親和性など調査しておりました。

大学
11月よりソフトウェアエンジニアリングと離散数学の授業を受講中です(12月現在)。

12月

新たに在庫システム管理の新規開発案件にアサインされました。ドメイン学習を進めているところになります。

反省

・開発認識を纏めドキュメント作成まで行ったが、社内FWからLaravelへの切り替えまで持っていくことが出来なかった。
・MySqlだけでなくPHPに対しても自動テストを組むことが出来なかった。
・チュートリアル止まりでNextJSを使った開発を行うことが出来なかった。
・ドメイン学習にかなりの時間を割いてしまっていた。

昨年はエンジニア1年目として1人で開発を行なったり、リバースエンジニアリング行ったり、DB定義を行ったり、大学入学するなど出来ることを増やすことができた1年に対して今年は出来ないことが目立った1年でした。また受託企業であることによる技術の導入の難易度など感じました。

これから

来年末でエンジニアとして満3年で、大学も頑張れば卒業できる予定ですので外資系を第一志望に転職活動したいと思います。仕事、大学、AtCoder(アルゴリズム学習)に取り組みつつ積極的に勉強会への参加、面談への参加など行い情報をとりに行きたいと思います。

ここまでお付き合い頂きありがとうございます!

Have a happy new year !!!


この記事が気に入ったらサポートをしてみませんか?