21卒新人ソフトウェアエンジニアが入社1年目に読んだ技術書

はじめに

私は21卒の新人ソフトウェアエンジニアで、仕事では主に、自社で企画・設計・開発・運用・保守をしているWebサービスクラウド移行を担当しています。

早いものでもうすぐ1年目が終わってしまうので、備忘録も兼ねて、2021年に読んだ技術書とともに時系列順に振り返っていきたいなと思います。

入社直前(2021年2〜3月)

入社前の時期は、応用情報技術者試験の勉強をしていました。 2月の中旬までは、修士論文の執筆や発表会があったりで忙しかったので、試験対策自体は2月中旬あたりから始めました。

基本情報技術者の資格は持っていなかったということと、4月実施の試験に申し込んだということもあって、 対策が間に合うか微妙な感じでしたが、結果としては、合格ラインギリギリで合格することができました。

試験対策としては、以下のような感じで、使用した書籍は2冊だけでした。

入社直後(2021年4〜5月)

入社直後は研修期間だったということもあり、自分が今後どのような技術を扱うことになるか定まっていなかったため、 技術書からは一旦離れて、ソフトウェアに関するビジネス書を読んでいました。

GWが明けた直後に配属発表があり、ソリューションサービスのソフトウェア開発をする部署に配属され、 Webサービス開発を担当するチームに配属されることになりました。

配属直後(2021年6〜7月)

学生時代は、学部・修士ともに情報系専攻でしたが、Webやクラウドの技術にはまったく触れてこなかったため、 まずは「サーバーってなんだっけ」、「クラウドってなんだっけ」というところからのスタートでした。

この時期は、配属後のソフトウェア研修の期間で、本格的な開発業務がほとんどない状態だったので、 この期間を利用してまずはWebやクラウドの基本を学ぼうと考えて、以下の4冊の書籍を読みました。

Pythonを使用したツール開発(2021年8〜9月)

研修が終わってからは、社内用の運用ツールをPythonで開発していました。

このツール開発の期間中は、Pythonの言語仕様やベストプラクティスを学ぶ目的で、 Effective Pythonを読んでいました。

ツール開発の際にOJTに丁寧にコードレビューをしてもらったことで、 学生までは通用していた「動けばよいコード」ではなく、 実務で求められる「他者が読みやすくセキュアなコード」を書くことが大切だなと強く実感しました。

そこで、一度読んだことはあったのですが、再度リーダブルコードを読み直しました。 忘れていた内容も多く、とても勉強になりました。

GCPを使用した技術検証(2021年9〜10月)

ツール開発を終えたあとは、GCPを使った技術検証をおこないました。 具体的には、オンプレにあるDBをGCPへ移行するにあたっての技術検証と移行ツール開発をおこないました。

このとき使用したGCPのサービスは、Cloud Storage, Dataflow, Firestore(Datastoreモード)などでしたが、 GCPを使用すること自体がはじめてだったので、まずはGCPの入門書を1冊読みました。

その後、年内にGCPの初学者向け資格であるAssociate Cloud Engineerを受験する予定であったため、 試験対策も兼ねて、CourseraのArchitecting with Google Compute Engineコースを受講していました(今思うと冗長だったかも)。

cloud.google.com

coursera.pxf.io

GCP資格試験対策(2021年11月)

11月に入ると、GCPの資格対策として、以下の書籍を一通り読みました。 また、試験の直前には、Udemyで模擬試験を解くことで試験慣れをしていました。 本試験は、模擬試験とは少し毛色が違っていましたが、なんとか合格することができました。

Go言語とSQLに入門(2021年12月)

私がメインで参画しているPJTでは、Webサービスを支えているコア機能のGCPへの移行を進めています。

このPJTでは、将来的にはマイクロサービスアーキテクチャを採用する予定であり、今後Go言語を使用する機会があることが想定されるため、 Go言語の基本的な言語仕様を勉強するために、以下のUdemyを受講しました。

px.a8.net

px.a8.net

他には、年末年始の休暇期間を利用して、以下の2冊を読みました。

GCPへの移行業務の中でも、特にDBを触る機会が多くなってきていたため、 SQLの基本的な構文を把握することを目的として、初学者向けの書籍を1冊読みました。

また、7月あたりにインプットしていたWeb技術の内容を忘れかけていた時期だったので、 Web技術の知識を再インプットすることにしました。

C#を使用したツール開発(2022年1月)

年が明けてからは、メインで担当しているPJTとは別で、C#を使ってQRコード関連のツール開発をおこないました。

このツール開発では、UTを実装する機会があったことと、 先輩からTDDの書籍をオススメされていたということもあり、テスト駆動開発を読みました。

また、これまでの期間は技術書ばかりを読んでいたので、 気分転換も兼ねて、OJTからオススメされていたTeam Geekを読みました。

DB移行検証(2022年2〜3月)

ここまで来ると、もうかなり最近のことですね。

最近は、オンプレにあるDBデータをGCPへ移行するにあたっての、 本格的な技術検証をしています。

ここでも、やはりDBに関連したツールを開発する機会が多々あるのですが、 そもそもDBがどうやって設計されているかということやDB自体のことが気になっていたのと、 本格的にSQLの知識が必要となってきたこともあり、以下の2冊の書籍を読むことにしました。

他には、これまでWeb技術に焦点を当てた書籍は何冊か読んできましたが、 Webアプリケーションの開発に焦点を当てた書籍は読めていなかったため、以下の書籍を読みました。

この書籍は、タイトルこそ「Web技術入門」と書かれていますが、 Web技術が発展してきた歴史を簡潔に整理しつつ、 Webアプリケーション開発に必要となる知識がわかりやすく解説されているため、とてもおすすめの一冊です。

1年目を振り返ってみて

こうやって書き出してみると、意外と多くのことに取り組んできたなと思います(実感はあまりないのですが)。

基本的に、

自分の今の知識量 < 仕事を円滑に進めるために必要な知識量

という感じで、前提知識がまだまだ全然足りないなーという印象なので、継続的なインプットは欠かせないです。

目に見える成果として、以下の2つの資格を取得できたことは良かったかなと思います。

一方で、基本的な知識の習得がメインになってしまったため、 今後は、WebやDBやSQLやGoにしろ、深いところまで理解できるようにしていきたいなと考えています。

2年目に向けて

2年目のスタートとしては、マイクロサービス化に向けてのキャッチアップとGoの言語仕様の学習のために、 以下の書籍を読むところから始めるつもりです。

Goに関しては予約受付中の書籍がいくつかあるので、そちらも気になるところです。

資格に関しては、まだ迷っている段階ですが、以下の理由から、 データベーススペシャリストを受験しようかと考えています。

  • 実務でDB関連の業務が割と多い
  • 将来的に、データ基盤/分析系の業務に興味あり
  • 応用の効果で、2年以内であれば午前Ⅰ試験が免除される(年次試験なので今年がラストチャンス)
  • 高度の中では比較的難易度が低い(らしい)

他には、GCPのProfessional Data Engineerにも興味があるので、 業務で必要となる技術と相談しながら、学習計画を立てていければなと思います。

cloud.google.com

Team Geek|Googleのギークたちはいかにしてチームを作るのか

続きを読む