はじめに
2021年4月に株式会社マイベストにエンジニアとして就職し、現在2年目になります。
僕はマイベストの新卒1期生であり、1人新卒だったことや、エンジニアの人数も少数だったため、会社としての体系的なエンジニア研修などは用意されていませんでした。
業務上必要なことはやりながら覚えていきましたが、その他にも基礎的なことは自分で勉強しようと思いいろいろな本などを読んだので、今回はそんな僕が入社時期にで読んで勉強になったなと思う本をおすすめ順に紹介したいと思います。
当時の僕のスキル感としてはこんな感じです。
- 情報系大学院生
- Ruby on Railsでチュートリアルレベルのアプリケーションは作成できる
- 実務インターン経験やハッカソンでのチーム開発経験がある
- バックエンドエンジニアとしての入社
対象者
自分と同じような境遇の人や、当時の自分と同じくらいのスキル感の方のお役に少しでも立てると嬉しいです。
- 研修制度が整っていないスタートアップに入社する新入社員
- エンジニアになるために勉強をしている人
- エンジニア1年生
- 技術書をそこまで読んでこなかった人
書籍についてはこちらでもまとめを作っています。
読んだ書籍
達人プログラマー(第2版): 熟達に向けたあなたの旅
最初に紹介するのは『達人プログラマー(第2版): 熟達に向けたあなたの旅』という本です。
この本の中では、エンジニアとして仕事をするにあたって、よく出る概念が網羅的に紹介されています。後述するt_wadaさんの『ソフトウェアエンジニアとしての姿勢と心構え』のスライドの中で紹介されていたので読んでみました。
ネガティブな考えはすぐに伝播してしまうので、文化としてソフトウェアをきれいに保つ必要がある話としてよく出される「割れ窓理論」や、作っていくうちに最初の完成イメージとずれてしまう「石のスープとゆでガエル」の話など、社内でもよく議論になったり、改善する際に引き合いに出されたりする概念が紹介されていて勉強になりました。
もちろん具体的な設計やコーディングの際に気をつけるべき考え方も網羅的に紹介されています。
仕事の中で意識するとともに、コミュニケーションの語彙としても知っておいてよかったなと思った内容が詰まった一冊です。
プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで
続いては『プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで』です。
個人でのRuby on Railsでは自分が知っていたRubyの最低限の記法でしかコードが書かれていなかったのですが、開発現場のプロダクションコードでは先輩たちのきれいなRubyでの記述がたくさんありました。
所見では何をしているのかわからなかったり、自分もそういうコードを書きたいなと思っていたときにこの本を読んだおかげで、コードが読みやすくなったとともに、Rubyの書き方の引き出しが増えたと思います。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』は有名な本で、たくさんの人がおすすめしていますよね。
他の人に読みやすいコードを書くための方法が紹介されていて、内容はわかりやすいため理解は簡単です。けど、実践は難しい。
学生の頃に読んで「なるほど」とすごい納得した覚えがあるのですが、実際に業務に入ってそれをそのまま実践できるかと言われると難しかったです。
しかし、そんなときに改めて読み返して、意識するポイントを思い出すのに役立ちました。
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
続いては『オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方』です。
僕の学科がソフトウェア専門ではなくて、ハードウェアもカリキュラムに入っていたので、オブジェクト指向などのソフトウェアの概念についてはJavaの演習の授業で少し学んだくらいで、そのときもあまり理解できていなかったような気がします。
この本では、概念的な説明よりも、実務を通してオブジェクト指向を使いながら理解できるような構成になっていて、改めて読んでわかりやすかったです。
しかし、業務に入りたてだったり、経験がないと実践していくイメージが付きづらく、自分も途中で挫折していました。
少し慣れてきたときに読み返したら、すごく勉強になったので、そのタイミングで読んでよかったなと思った本です。
達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ
続いては『達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ』という本なのですが、個人的にはこちらの本の内容は大学の講義や事前に学んでいたので、この本からの学びという点では大きくはなかったです。
しかし、実際にデータベースを設計する際にはこの本で紹介されている内容は意識して設計するなと思ったので、データベースについてわからなければ読んでみるのがよいと思いました。
プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則
『プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則』こちらの本は、
一緒に就活していた友人が、内定先の先輩からおすすめされたというので僕も買って読んでみました。
達人プログラマーと同じように、ソフトウェア開発中によく聞く言葉や概念が101個解説されています。
その当時は新しい言葉や聞いたことがあるけど、いまいち理解できていなかった言葉を学んでとても参考になったと思っていたのですが、最近になって、DRYを誤解していたことに最近気づいたので、ちゃんと理解しようとして読んだ方が良さそうです。このあたりはやぱり実際に開発に触れながら辞書的に使うのが良いのかなと思いました。
参考にしたスライド
ここまでは本を紹介しましたが、実際は本以外からも勉強していたので、そちらも紹介させてください。
まずは勉強の仕方を勉強する
僕が入社してすぐに「何を勉強しようか」と考えた際に、真っ先に「そもそもどうやって勉強するのかを勉強しよう」と思っていました。そのほうがその後の勉強の効果が高まりそうだなと思ったからです。
具体的には下記のスライドを参考にさせてもらいました。
ソフトウェアエンジニアとしての姿勢と心構え
人は一ヶ月でエンジニアになれるのか - 詳細解説
400人以上のインターン生を受け入れ成長させてきたCTOが考える若手エンジニアが成長するコツ
学生時代に知っておきたかったWeb技術の学び方の学び方
技術選定の審美眼
合わせて、基礎的な理解をしようと、当時話題になっていたt_wadaさんの技術選定の審美眼はスライドでもポッドキャストでも学ばせてもらいました。
Ruby on RailsからWebを勉強した学生の身としては、Webのアーキテクチャがどうして今の形になったのか、その背景をしれてとても面白かったです。
他社の研修資料を参考にさせていただく
最近はありがたいことに研修内容を公開してくれている企業がいくつもあります。
会社では体系的な研修がなかったので、このあたりの資料を参考にさせてもらいながら、同世代がどんなことを勉強しているかをチェックして、必要に応じて深堀りながら勉強していました。
参考になれば嬉しいです。
2023/4/20 追記
ありがたいことに研修シーズになって反響をいただきました。
1,2年目の学びについてはこちらにもまとめているのでもしご興味ありましたら見ていただけると嬉しいです。