avatarAlexander Nguyen

Summary

The website content provides a curated list of books and resources essential for software engineers in 2023, ranging from coding interview preparation to system design and software engineering best practices.

Abstract

The article "Resources a Googler is Using to Be a Software Engineer in 2023" outlines a collection of books and resources that are invaluable for both aspiring and experienced software engineers. It emphasizes the timeless relevance of "Cracking The Coding Interview" for tackling technical interviews, while "Elements Of Programming Interviews" is highlighted for its comprehensive problems that align with interview standards at top tech companies. "The System Design Interview" series is recommended for mastering system design, with the advanced course offering deeper insights for senior-level roles. "Designing Data-Intensive Applications" is a must-read for engineers scaling web applications, and "A Philosophy on Software Design" challenges readers to rethink their coding practices. Classics like "The Mythical Man Month" and "Domain-Driven Design" delve into the intricacies of team dynamics and object-oriented design, respectively. The article also provides a call to action for readers to engage with the author's content on social media and consider membership for similar insights.

Opinions

  • "Cracking The Coding Interview" is considered the most accessible resource for those new to the tech interview process, with its problems serving as a benchmark for readiness.
  • "Elements Of Programming Interviews" is deemed essential for interview preparation, offering problems in multiple languages that are reflective of real interview challenges.
  • The "System Design Interview" books and online community are seen as indispensable for mid-level engineers, with the advanced course being particularly beneficial for those aiming for senior positions.
  • "Designing Data-Intensive Applications" is recommended for its detailed explanations of database scaling and architecture, crucial for engineers working on large-scale applications.
  • "A Philosophy on Software Design" is noted for providing a fresh perspective on writing code, focusing on the balance between modular depth and breadth.
  • "The Mythical Man Month" is revered for its timeless essays on software project management, particularly the concept of communication overhead in large teams.
  • "Domain-Driven Design" is acknowledged to be dense and textbook-like, but highly valuable for understanding object interactions and database schema design.
  • The author endorses their resume template for its effectiveness in securing roles at major companies like Amazon and Google.
  • Engagement with the author's content on platforms like Twitter and LinkedIn is encouraged for continuous learning and professional development.

Resources a Googler is Using to Be a Software Engineer in 2023

New Year, New Books

Photo by Debby Hudson on Unsplash

Whether you believe in New Year resolutions or not, now is always a good time to learn more about software engineering.

Whether you’re just starting your career or already been working as a software engineer, here’s a list of resources everyone should be using.

Cracking The Coding Interview

It doesn’t matter whether it’s 2020 or 2023, larger tech companies are still asking the same data structures and algorithm questions. That also means the same resources still work.

Cracking the coding interview is the friendliest introduction to software engineering interviews. If the problems in this beginner book are too difficult, that may be a sign you’re not ready to apply.

If you haven’t heard of this book, it’s not too late to pick up a copy on Amazon to study and apply for 2023 software engineering roles!

Elements Of Programming Interviews (Java, C++, Python)

Elements of programming interviews is the absolute standard for preparing for any software engineering interview. This book personally made me ready to interview and receive offers at Amazon, Microsoft, and Google.

Unlike cracking the coding interview above, this book comes in 3 languages, all of which are the most popular coding languages taught in university.

If you’re able to solve the problems in this book, you are performing at the level of coding interview problems. The problems are harder than Cracking the Coding interview but mastering this book can lead you to your next software engineering opportunity.

The System Design Interview (Community + Discord, Vol. 1, Vol.2)

The system design interview is an absolute must for anyone applying for mid-level software engineering roles in 2023. This book will easily walk anyone through how to think about system design interviews.

While both books are more than enough to pass the interview, I still recommend the online community since it includes both books and has a larger discord community devoted to users all studying system design. While the subscription is only 1 year long, it shouldn’t take anyone more than 1 year to study all the material in both books.

Grokking The Advanced System Design Interview

If you’re already familiar with Grokking the System Design interview, then you’ll be able to extend your knowledge of system designs even further with the advanced course.

Thsi is for people who are already familiar with the basics of system design and want to take their knowledge to the next level. This course includes examples on using different large scale databases, distributed messaging, and designing a key-value store.

This course is more apt for users pursuing senior software engineering roles.

Designing Data-Intensive Applications

If you’re further along in your software engineering career, Designing Data-Intensive Applications is a must read. This book will guide any reader on the basics of how to scale large web applications like Facebook or Netflix.

If you’re still unsure about the differences between a NoSql and Sql databases, this book will give the most comprehensive explanation you’ll ever need.

While this isn’t necessarily a book you read end to end, it’s an amazing supplement if you’re curious about databases and scaling your applications. It’s an all-time favorite for anyone who’s been working as a software engineer for at least a year.

A Philosophy on Software Design

A philosophy on software design is one of the more niche books on this list. This book talks about how what you should be thinking about when writing your code.

While books like Clean Code are more about what clean code looks like, this book focuses more on how to think differently about your code. Does it make sense to have deep or shallow modules? (Does it make sense to have few functions that do many things or multiple functions that do few things?) The answer will surprise you and you’ll absolutely get a better sense after reading this book.

Whatever stage in your career, you’ll walk away from this book learning something new about software engineering you hadn’t thought about before.

The Mythical Man Month

This book is an all-time classic. If you ever wondered why Amazon believed in two-pizza teams (where no teams should be larger than what two pizzas can feed) or why your teams are usually never larger than 10 members, it’s because of this book.

The Mythical Man-Month introduced how having more people on the team increases communication overhead with everyone else. While that’s the most famous essay in this book, all the other essays are just as valuable.

While most software engineering teams hardly practice any of the other essays today, each of them make absolute sense to the engineer. A simple read will be more than enough to spot issues in your software engineering practices at your company.

Domain-Driven Design

Domain Driven design is not the easiest book to read. It definitely feels more like a textbook than anything else. But if you’re an up and coming software engineer, this book will simplify a lot of concepts you’ll hear thrown around the work place.

In university I was never taught how to meaningfully break down objects or how they should interact with each other. This book demystifies that topic and clearly explains how and why you should separate fields in your objects. Once you understand the concept between an entity and a value object described in this book, your database schemas suddenly become clear.

While designing data-intensive applications is more of a high level architecture focused book, this book focuses on lower level details like how to cleanly interact with your database and designing which objects interact with each other.

It’s not the easiest read I guarantee you’ll be a better engineer after read though it.

Did you see what happens when you click and hold the clap button?

The resume template that helped me get into Amazon and Google

If you enjoyed this experience consider being a member for more content like this!

1000 are following on Twitter!

And follow me on my quest to 100,000 followers on LinkedIn Alex Nguyen | LinkedIn

Software Development
Software Engineering
Coding
Programming
System Design Interview
Recommended from ReadMedium