じぶん対策

日々学んだことをアウトプットして備忘録にしています。

2022上半期を振り返ってみる(その他最近の雑記)

はじめに

私が株式会社スマレジに入社したのは2022年の3月でした。早いことにもう半年以上が経ちます。
エンジニアとして働き始めたのは前職からなので数年の経験があることになりますが、スマレジに入社してからの半年間はかなり濃いものでした。
今回は日常業務をこなす以外にこの半年で取り組んだことや、業務を通しての変化等、半年を振り返ってみたいと思います。
また、最近気になっているサービスやこれからエンジニアとして取り組みたいことについての意気込みを残しておこうと思います。

前職との違い

前職では主に組み込み系のプロジェクトに携わっていました。派遣エンジニアだったこともあり、製品の開発というよりは、テスト工程や開発のサポートツールをメインに作成していました。
Web系の開発としてはJavaを使用したシステム開発を行っていました。
前職のときから、ソフトウェア工学への興味自体はあり、デザインパターン系の本や業務で直接書くことの少なかったオブジェクト志向について等の自主学習を行っていました。
入社してからはガッツリWEB系のサービスに携わることになり、技術面でも開発プロセス面でも新しいことを急速に学びました。振り返ってその一部分をまとめてみます。

オブジェクト志向、設計を意識した開発

前職では基本的にC言語を使用していたため、オブジェクト志向にあまり馴染みがありませんでした。スマレジではメイン言語としてPHPを用いており、オブジェクト志向かつ設計を意識した開発に変わりました。入社して研修期間を終えるとクリーンアーキテクチャドメイン駆動設計の理解のために勉強しながら実装していました。とはいえ前職時代の経験が無駄になることはなく、コンポーネントのレベルを揃えての関数設計や単体テスト結合テストの知識については現在でも活かせているなと感じています。

自己学習面での変化

前職では通勤時間が長かったこともあり、自己学習に当てられる時間に限りがありました。
スマレジに入社後は自己学習に当てる時間がかなり増えたなと実感しています。
要因としては

  • リモートワークによって通勤時間を自己学習に充てられるようになった
  • 勉強の仕方自体や考え方を先輩エンジニアから教わることができた
  • ブログ手当の福利厚生によって定期的にアウトプットする習慣をつけることができた
  • 自己学習での実装がそのまま業務に生かせる機会が増えた

あたりかなと思います。

この半年間は主にブログ駆動だったなと感じますが、本を読んだり、実装することもありました。

これまでに読んだ技術書(&積んでる本)

前職時代に読んだ本(約二年間程度)

  • リーダブルコード
  • Java言語で学ぶデザインパターン入門第2版
  • プリンシプルオブプログラミング
  • スッキリわかるJava入門
  • SOFT SKILLS ソフトウェア開発者の人生マニュアル(転職を決意するきっかけになった本です)

スマレジ入社から半年で読んだ本

  • 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
  • WEBを支える技術
  • 1冊ですべて身につくHTML & CSSとWebデザイン入門講座
  • 改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
  • SQLアンチパターン
  • 独習PHP

現在読んでいる本

積んでいる本

個人的に技術書を読んでいる際の変化としては、知らない知識についての書籍を読んだりしたときはそういうものなのかという理解の仕方で疑問に感じる前提知識がないためすんなり受け入れますが、ある程度知識がついてから読む場合(二回目読む場合等を含む)は現在持っている知識と比較しながら読み進めることが多いです。関連するブログ等を検索したりしながら読み進めます。前者のほうが悩まず知識として習得するだけなので読むスピードとしては早いんですが、後者のように理解を深めながら読むと読破するスピードはゆっくりになりますが理解度がかなり上がる気がします。
改めて整理すると積んでいる本が多かったり、一度読んだ本でも今ある程度実装経験を積んだ上で読み返したい書籍が多いため、これからの半年間はその消化を優先したいと思います。

システム面での変化

開発において直接使用する言語以外にもシステム的な変化が大きかったのではじめのうちはかなり戸惑った思い出があります。

  • Outlook,teams => slack
    前職では連絡ツールとしてOutlookを中心としてteamsをチャットツールとして利用していました。ただ、teamsで連絡しても連絡が取れない人が一定数いたため、基本的にはOutlookが運用されていました。(PCセキュリティの運用ルールが現場ごとに異なっていて、メールは使用できるがteamsは使えなかったりしました。)
    スマレジでは基本的にGoogle Workspaceおよびslackを中心としています。
    slack自体名前は知っている程度で実際に使用したことはなかったのでギャップはありました。ただ、趣味のオンラインゲーム等でDiscordを使用していたことでこのギャップはかなり減ったかなと思います。
    また、社内ではパブリックチャンネルとして個人のslackチャンネルを作成できるため、社内Twitterのような運用ができます。実際運用してみると、ちょっとした悩みだったり、技術的に詰まっていることを他チームのエンジニアから返信をいただけたりするのでかなりいい文化だなと感じています。

  • SVN => Git
    ほかには、開発で使用するソース管理ツールがTortoiseSVNからGitに変わりました。これによってコードレビュー文化に初めて触れました。前職では基本的に製品コードについてはライブレビュー形式をとっており、その他ツール等に関してはコードレビューの文化がありませんでした。コードレビュー文化は転職する際の軸にもしていました。

開発手法の変化(ウォーターフォールからアジャイルへ)

先程現在読んでいる本にアジャイルサムライを挙げましたが、開発手法がウォーターフォールからアジャイルに変わったことも大きな変化でした。
前職では車載機器関係のプロジェクトに携わっている期間が長かったのですが、基本的に仕様が一度決まれば変更されることは少ないです。機能追加等顧客からの要望はありますが基本的に人員の増加や期間の調整をします。ウォーターフォールでの開発のメリットは仕様の変化をできるだけ避けるプロジェクトで活きてくると思っています。例えば外部からの人員調達を前提としたプロジェクトだったり。
ハードウェア側の開発と平行して進む組み込み開発においてはウォーターフォールはかなり相性の良い開発手法だなと実感しています。
それに対してスマレジではアジャイルな開発手法を取っているチームがほとんどかなと思います。ウォーターフォールVSアジャイル論争をする気はありませんが双方のメリットを理解しやすいのは実体験として経験できたからだと思います。
また、アジャイル的な開発手法になったことで自分の担当プロダクトがビジネスに及ぼす影響を近くで感じ、機能的な要望の温度感を感じながら開発ができていることはスマレジに入ってよかったことの一つです。

業務を通して通常タスク以外に自主的に取り組んだこと

ユニットテストについて

先程挙げたクリーンアーキテクチャの他に業務を通して考えたこととして大きなものにユニットテストがあります。 前職でテスト工程を担当していたこと、スマレジに入社してからテスト駆動開発という考え方を知り実践していることから、テストについて考えることが多くなりました。
何度かブログ記事にもしている内容になります。
https://taisei-miyaji.hatenadiary.com/entry/2022/07/15/205958

ドキュメントの整備について

他にも、ドキュメントの整備についても考えることが多かったです。新しいプロダクトに携わる際、既存のプロジェクトへの理解を深める際にドキュメントがほしいなと思う機会がありました。
ただ、アジャイルにおいてはドキュメントの作成を目標に置くのではなく、機能の提供を第一に考えます。
担当するプロダクトにおいても存在するドキュメントは最小限だったので基本的にコードを読んで理解を進めました。その際に自分が欲しかったドキュメントはどういったものなのか?どういうドキュメントがあればプロダクトの仕様理解が進むのかについて考えるようになりました。
私の現在の考えですが、プロダクトにおけるドキュメントは新しく担当するエンジニアが仕様を理解する上でかかる工数とドキュメントメンテナンスによる工数を最小化するためのものだと思っています。
このあたりはユニットテストを仕様書とすることでメンテナンス工数をテストにも活かせるんじゃないかと考えています。
この話はまた改めて記事にしたいと思います。

応用情報技術者試験

今年4月に実施された応用情報技術者試験に合格できたのもこの半年の成果の一つでした。
前職時代に一度受験してたんですが一度不合格になっていました。(明らかに勉強時間不足でした)
スマレジに入社した直後でかなりバタバタしていた時期の受験でしたが前回の勉強分の知識も活かせて合格できたので良かったです。
次はDBスペシャリストの受験を考え始めていたりします。

今後の目標

直近の目標はDBスペシャリストへの挑戦となにか個人開発することです。
ここまで取り組んできたような技術書読む習慣やこのブログを書く習慣を続けてインプットを継続しつつ、実装にかける時間を増やしていきたいです。

技術的な面での当面の目標は

  • SQLをもっと使いこなせるようになる
  • 認証周りについて理解する
  • テストがないプロダクトへのテストの導入
  • バッチ送信処理の実装経験を積む etc

といった感じです。

まとめ&雑記

大きく環境が変わった半年間でしたが、転職で叶えたかった

  • コードレビュー文化による品質への意識向上と他人のコードを読む機会の増加
  • WEB開発へと分野を変えることによる自学自習の加速(組み込みはWEBと比べるとネット上に情報が少なかったりします)

を叶える事ができました。

その他開発環境においても前職と大きく文化が異なった環境に身を置くことになったため、それぞれの手法の良し悪しを身をもって体感しています。
また、リモートでの勤務が増えたため、通勤時間分を勉強時間に充てられています。

仕事に集中できる環境のために結構投資しているおかげもあって、快適に仕事できていると思います。(仕事という大義名分ができると財布のひもはなくなります)

新調したものは

  • マウス(MX master 3S)
  • キーボード(MX keys mini)
  • モニター(LGのウルトラワイドモニター)
  • 電動昇降机(Flexispot e7)
  • 椅子(イトーキ製)
  • その他細かなガジェットたち(洗い出し始めると怖くなってきたのでやめます)

同年代のエンジニアや先輩エンジニアの意見を聞く機会が多いことも成長を加速できている要因だと思っています。

ここまで入社前後の比較をしながら半年間を振り返ってみましたが、前職での経験は確実に活きていますが、ユーザーのことを考えながら、主体的にごりごり開発を進められるスマレジの文化のほうが自分には合っていたかなと思います。

モチベーションを継続できた要因としては個人的につけている日記によるところも大きいかなと思っています。
ほぼ日手帳」というスケジュール帳をここ二年間は毎日書いてます。リモート中心になってからなにかイベントが起きる頻度が減ったので日記に書く内容はその日指摘されたことや自分で気づいた改善点、悩みや感情の変化を書いています。
ただ、最近は振り返りとして検索したいなと思う機会が増えてきたので「obsidian」というMarkdownメモアプリに移行中です。(気になった方は調べてみてください。)
あとは他のスマレジ社員のブログもちらちら見ていたりしてモチベーションにしています。

こうやって振り返ってみると頑張った半年間だったなあと思いますが、この少しの背伸びを続けていくことがこれからのエンジニアとしての成長につながると思っているのでこれからも続けていこうと思います。
ここまで読んでくださってありがとうございました。ほぼ素人状態の新人エンジニアから半年間の成り行きが、読んでくださった方の参考になれば幸いです。