こんにちは!CTO統括室の黒崎(@kur_m88)です。2022年度のサイバーエージェントには新卒のエンジニアが約90名入社してくれました。
アフターコロナー1期生の新入社員へ、代表藤田からのメッセージ
2014年までエンジニアブログを遡ると、こんな企画がありました。この企画を8年ぶりに復活させてみようと思います。
思いつきで企画してみたので100人に聞く時間はありませんでしたが、約40名から返事をもらえました。
おすすめする一冊の被りが多ければランキング形式にしようと思っていたのですが、あまり被りがありませんでした。
ちょっと分量が多いですがせっかくなので全部紹介しようと思います。
先輩エンジニア達から新人エンジニアに向けた言葉ももらったので、最後に載せてあります。ぜひ最後までご覧ください!
新人エンジニアにおすすめする一冊
それでは、紹介していきます!
ソフトウェアアーキテクチャの基礎 ――エンジニアリングに基づく体系的アプローチ
https://www.oreilly.co.jp/books/9784873119823/
何から勉強したらよいのかわからない人におすすめです。新しく出た本なので、近年のソフトウェア開発を学ぶ意味でもぜひ読んでみてほしいです。
Clean Architecture 達人に学ぶソフトウェアの構造と設計
https://www.kadokawa.co.jp/product/301806000678/
アーキテクチャに関する話は様々あるが、言語/システム/規模に関係なく、非常に重要かつ普遍的な内容を抑えられる。もっと早く読めば良かったと思う1冊。
リーダブルコード――より良いコードを書くためのシンプルで実践的なテクニック
https://www.oreilly.co.jp/books/9784873115658/
エンジニアがチーム開発する上で最も基本となることが書かれている。例も読みやすく実践的。
他人が読みやすいコードを書くっていうのは意識してないとできないことである。その気づきを得られる本。
学生時代にチーム開発に慣れていない人にとって大事なことがまとまっている。
- 変な癖がつく前に読むことが大事
- 言語問わず応用が効く内容
- すごいコードよりも読みやすいコード
- 短い時間で読め、本が厚くないので持ち歩きもしやすい
計算機プログラムの構造と解釈
https://www.shoeisha.co.jp/book/detail/9784798135984
https://sicp.iijlab.net/
神の言語Lispの方言であるSchemeを使用し、インタプリタやレジスタマシンと言ったコンピュータサイエンスの基本的な概念をひとつひとつ実装しつつ学んでいく一冊です。Web系の会社にいるとどうしてもこうしたCSの基礎的な話はなかなか業務で触れることはなく、直接役に立つというよりは自分の視野を広げる系の本にはなりますが、この一冊を終えた頃には自分が大きく成長していることを感じられるはずです。
Java言語で学ぶデザインパターン入門第3版
https://www.sbcr.jp/product/4815609801/
GoFのデザインパターンをわかりやすく解説してくれている良書。デザインパターン名は実務でよく飛び交ったり、共通言語になりがちなので、若手のうちにおさえておくとコミュニケーションが円滑になるきがします。
現場で役立つシステム設計の原則〜変更を楽で安全にするオブジェクト指向の実践技法
https://gihyo.jp/book/2017/978-4-7741-9087-7
コードの凝集度や疎結合・責務の分離や所在の明確化、コードを書く上での意識が飛躍的に改善され一冊でした。
詳説 データベース――ストレージエンジンと分散データシステムの仕組み
https://www.oreilly.co.jp/books/9784873119540/
クラウドに最適化されたDBの実装や、分散型DBの話をアルゴリズムベースで説明されている。実際に業務でデータベースを実装することはほとんど無いかもしれないが、知識として知っておくととても役立つかと思う。
Webを支える技術―― HTTP,URI,HTML,そしてREST
https://gihyo.jp/book/2010/978-4-7741-4204-3
自分がWebエンジニアとして1歩成長実感を持てたきっかけになった書籍だからです!
シンプルにWeb開発をする上で必要なことがまとまっているから。
Webという幅広いエコシステムはたくさんのエンジニアの方が触れる知識だと思いますので、それを理解するにはもってこいの一冊だと思いました。
[試して理解]Linuxのしくみ~実験と図解で学ぶOSとハードウェアの基礎知識
https://gihyo.jp/book/2018/978-4-7741-9607-7
- OS・ハードウェアの入門書としておすすめ
- これをとっかかりに他の kernel やハードウェアの本に手を出す土台ができます
ネットワークはなぜつながるのか 第2版
https://www.nikkeibp.co.jp/atclpubmkt/book/07/P83110/
httpアクセスしてからレスポンスが返ってくるまでの一連の流れをとても詳しく詳細に、かつ簡潔に説明している本です。
図解も多く、説明が詳しいですし、ボリュームも多すぎないので、難易度も高くなです。
Webアプリケーションを作る上では間違いなく読んどいたほうがいいです。
この中の知識を知っているか知らないかで、だいぶ新卒のスタートアップに差が出るのかなと思います。
マスタリングTCP/IP 入門編(第6版)
https://www.ohmsha.co.jp/book/9784274224478/
シンプルにWeb開発をする上で必要なことがまとまっているから。
セキュリティエンジニアのための機械学習――AI技術によるサイバーセキュリティ対策入門
https://www.oreilly.co.jp/books/9784873119076/
機械学習が流行っている中、機械学習における攻撃も理解してほしい。
効果検証入門~正しい比較のための因果推論/計量経済学の基礎
https://gihyo.jp/book/2020/978-4-297-11117-5
データ分析するのであれば必読だと思います!
実践的データ基盤への処方箋〜ビジネス価値創出のためのデータ・システム・ヒトのノウハウ
https://gihyo.jp/book/2021/978-4-297-12445-8
データ基盤の考え方がデータソースからフロントまでを包括してかつ現場で考えなければいけないことを記載しているためデータ基盤に何かしらの形で関わるのであれば読んでおいて損はないです!
また、最初読んだときはちんぷんかんぷんかもしれないですが実際にプロジェクトを経験すると体験することが多くあると思うので1年経ってから再度読み直すとより深い理解が得られると思います!
[改訂新版]マインドマップから始めるソフトウェアテスト
https://gihyo.jp/book/2019/978-4-297-10506-8
テストをしっかりするのはホント重要で、漏れなく行うにはとてもいい方法と思っているから。
テストという観点ですが、仕様検討という意味でも有用です。
Googleのソフトウェアエンジニアリング――持続可能なプログラミングを支える技術、文化、プロセス
https://www.oreilly.co.jp/books/9784873119656/
ソフトウェア開発の方法論からマネジメントまで網羅的にまとめた一冊です。
Googleでのベストプラクティスはさておき、スケール性などの評価観点を設定して意思決定プロセスを論じる思考方法を身につけていただくとエンジニアとして役立つかと思いました。
SOFT SKILLS ソフトウェア開発者の人生マニュアル 第2版
https://www.nikkeibp.co.jp/atclpubmkt/book/22/S00500/
キャリア形成の指針として。
ソフトウェア開発者としてよりよい人生を送るための習慣や処世術が載っている本。1章辺りの長さも短く読みやすい本。事例がアメリカ辺りを元にしていそうなので、そこは差し引いて読むのが良さそう。
エンジニアのためのマネジメントキャリアパス――テックリードからCTOまでマネジメントスキル向上ガイド
https://www.oreilly.co.jp/books/9784873118482/
新人時代にどう 1on1 に向き合ったらよいか,少人数のチームを引っ張って開発をするにはどういう立ち回りをするべきか,などといった,エンジニアマネージャーを志すエンジニアだけではなく万人に必要なことが書かれた名著だから。
入社すると何かと将来のキャリアを問われる機会が多いでが、多くの新入社員にとってイメージが湧かないものです。本書では、インターンのメンターからCTOまで、各職種について詳しく紹介されています。マネジメントを目指さない場合でも、なぜ1on1をするのかなどのマネジメント側の気持ちを理解するのは大切なので是非一読してみてください。
エンジニアの知的生産術――効率的に学び,整理し,アウトプットする
https://gihyo.jp/book/2018/978-4-7741-9876-7
プログラミングに関わらず抽象的な学び方、考え方を学習できる書物なため。
モデルとは何か、を最初に理解できることで次に読む本の理解度も上がる。
達人プログラマー(第2版)熟達に向けたあなたの旅
https://www.ohmsha.co.jp/book/9784274226298/
昔からの名著であり、新装版によって古臭さを全く感じさせいため。
並行処理の難しさ、DRY なコードへの意識、プログラマーとして重要なこと全てが簡潔にまとまっている。
ソフトウェアエンジニアリング、チーム開発、仕事の進め方諸々のエッセンスが実例込みでぎゅっと詰まっていて経験によって我々が普段無意識にやっているであろうことを改めて言語化してくれている。
ソフトウェア開発に携わる人は絶対読んでおいて損はない一冊だと思います。
エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング
https://gihyo.jp/book/2018/978-4-7741-9605-3
ソフトウェアエンジニアリングの不確実性にどう立ち向かっていくか、理論的に書かれている。
システム障害対応の教科書
https://gihyo.jp/book/2020/978-4-297-11265-3
備えあれば憂いなし。エンジニアは開発するだけではなくシステムを運用するスキルも必要です。
ライト,ついてますか―問題発見の人間学―
https://www.kyoritsu-pub.co.jp/bookdetail/9784320023680
35年前の本なので古典です。
問題とはなにかという点について考える種となる本です。
軽く目を通して気になったときに読み直す感じがよいとおもいます。
誰のためのデザイン? 増補・改訂版 認知科学者のデザイン原論
https://www.shin-yo-sha.co.jp/book/b455574.html
デザイナー界隈では有名な本らしいのですが、プログラムやシステムの設計にも通じる所があるのでエンジニアにもお勧めです!
ノンデザイナーズ・デザインブック [第4版]
https://book.mynavi.jp/nddb/
デザインを見る目を養えるエンジニアの必読書。
オブジェクト指向UIデザイン――使いやすいソフトウェアの原理
https://gihyo.jp/book/2020/978-4-297-11351-3
エンジニアに「UIデザイン」の話は関係ないという思い込みを捨ててほしい。エンジニアこそが仕様・デザイン・実装のすべてを一貫してシンプルにできる立ち位置におり、そうした姿勢が、システム全体の将来性とユーザーから見た使いやすさの「両立」に欠かせないことに気付かされる。
日本語スタイルガイド
https://www.jtf.jp/tips/styleguide
リモートワークが当たり前になっていた今の時代こそ日本語ライティング技術が試されるのだ。
エンジニアもなにかと文章を書く機会があるので、読んでおいて損はない。
人を動かす
https://www.sogensha.co.jp/productlist/detail?id=1587
成果を最大化するため、他人や組織に理想的な動きをしてもらう秘訣が凝縮されている。
リファクタリング・ウェットウェア — 達人プログラマーの思考法と学習法
https://www.marlin-arms.com/support/ptl/
古い本ですが、脳をリファクタリングするという視点でこれから多くを学ぶ際に脳を柔軟にしておくことができると思います。
アイデアのつくり方
http://books.cccmh.co.jp/list/detail/963/
アイデアとは、無から天才が生み出すものではなく、単に既存のものの組み合わせであり、誰でも作れることを教えてくれるから。
資本論
https://www.iwanami.co.jp/book/b248569.html
やはり働くならば、賃金や資本というのがどのような構造になっているのかを知っている必要があると思います。岩波なら1巻だけ読めばおkです。
この1冊ですべてわかる 新版 SEの基本
https://www.njg.co.jp/book/9784534045126/
コーディング技術だけだはなく、ビジネス領域、上流工程の知識もつけて欲しいから。
興味のある技術領域のO’Reilly English版
英語リーディング力がないと最新技術やツールを習得しずらい。新人の時間があるときに、技術書を英語で読みこめるようになっておいたほうがよいと思うから。
OREILLY日本語版と英語版を読んで解釈の違いを見つけるのとか楽しいですよ!
その他
- プログラムはなぜ動くのか 第3版
- ネット興亡記 – 敗れざる者たち –
- リファクタリング―プログラムの体質改善テクニック
- ソフトウェア・ファーストあらゆるビジネスを一変させる最強戦略
- レガシーコードからの脱却――ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
- 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
- Webブラウザセキュリティ Webアプリケーションの安全性を支える仕組みを整理する
- 「ついやってしまう」体験のつくりかた 人を動かす「直感・驚き・物語」のしくみ
- Game Programming Patterns ソフトウェア開発の問題解決メニュー
- オンラインゲームのしくみ Unityで覚えるネットワークプログラミング
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 嫌われる勇気 自己啓発の源流「アドラー」の教え
- みんなが欲しかった! FPの教科書 3級
- 失敗の本質 日本軍の組織論的研究
- ニンジャさるとびすすけ
先輩エンジニアからのメッセージ
- 自分のペースで一歩ずつステップアップしていってください!
- いろいろあると思いますが、一緒に頑張りましょう。
- 会社で作るソフトウェアはビジネスや世界の課題を解決するたのものです。なんのために設計し、コードを書くのかを忘れないようにしましょう。しかし、だからといって楽しむことも忘れないようにしたいですね。
- 自分が今やるべき目の前のことに集中しましょう。
- エラーに出会うたび強くなる。
- CA入ったからこそできる挑戦を一緒に積み重ねていきましょー!!
- 様々な領域を習得する必要がある業界・時代ですが一緒に楽しんで色々習得しちゃいましょう!
- 自分が直接関わるかどうかに関わらず周りの人がやっていることを把握していると自分の作業へもプラスにつながることが多いので色々なことに興味を持ってただければ!
- 良いサービスを作る、良いパフォーマンスを出すためには、まずは基礎を徹底的に身に着けましょう!
- 最初の1年で以下に基礎を固められるかで、今後のエンジニア人生が変わってくるかもしれないので、この1年は基礎知識を漏らさず身につけることを意識してみるといいと思います!
- 先輩エンジニアの力を頼って吸収することが爆速成長の秘訣です。
- 機械は分解すると壊れますが、そうして初めて中身の仕組みを学べます。人も失敗することで初めて、何が成功を支えていたのかを学べます。失敗を恐れないでください。
- オーナーシップ高くもって楽しんでいきましょう。
- 必要は発明の母。
- よく寝ましょう。とにかく睡眠時間を確保することが大切です。仕事は100m走ではありません。マラソンです。
- 業務が大変だったり思うように行かず、辛い状況に直面することがあるかもしれませんが、めげずに頑張ってみてください。有り体ですが乗り越えると自信になります。
- 若いうちに様々な分野に興味を持って、実際に手を動かしてみることが重要で!幅広い経験が何年か経った後に貴重な経験として花開きます。
- 頭を柔らかく、好奇心を大切にしていきましょう。
- 精一杯やり通せれば1年めは100点満点です。頑張ってください。
- 「僕が考えた最強のコード」よりも「他者に優しいコード」。
- 千里の道も一歩から。
- 長い人生、怪我をしないためにも、走り方の前に正しい歩き方身につけてみてはどうでしょうか。
宣伝
サイバーエージェントの新卒採用情報です。サイバーエージェントの技術職に興味を持ってくれた方はぜひ気軽にエントリーしてみてください!
2023年度エンジニアコース新卒採用
https://www.cyberagent.co.jp/careers/special/students/tech/?ver=2023-1.0.0
エンジニア向けインターンシップ
https://www.cyberagent.co.jp/careers/students/tech/internship/