Why does this exist?
Learning how to be a software engineer is already hard. Take a short-cut by following some of these great online resources. Definitely don't overwhelm yourself, just pick out what's interesting and check it out!
Also be sure to join the discord server to stay updated on any new software engineering resources!
- Designing Data-Intensive Applications by Martin Kleppmann
- System Design Interview by Alex Xu
- Clean Architecture by Robert C. Martin
- Building Microservices: Designing Fine-Grained Systems by Sam Newman
- Software Architecture: The Hard Parts by Neal Ford, Mark Richards, Pramod Sadalage and Zhamak Dehghani
- Byte-Sized Design by Alex Nguyen
- System Design Newsletter by Neo Kim
- ByteByteGo by Alex Xu
- System Design Codex by Saurabh Dashora
You can find 30+ more at Byte-sized Design
- Microsoft Engineering Blog
- MongoDB Blog
- Mozilla Hacks Blog
- MuleSoft Blog
- Netflix Tech Blog
- Nordstrom Technology Blog
- Nutanix Blog
- Nvidia Blog
- NVIDIA Developer Blog
- Oculus Blog
- OVHcloud Blog
- PagerDuty Blog
- Palantir Blog
- PayPal Engineering Blog
- Pinterest Engineering Blog
- Quora Engineering Blog
- Rackspace Technology Blog
- Red Hat Blog
- Red Hat Developer Blog
- Reddit Engineering Blog
- Riot Games Engineering
- Salesforce Developer Blog
- Salesforce Engineering Blog
- SAP Blogs
- SAP Community Blogs
- Shopify Engineering Blog
- Slack Engineering Blog
- Snap Engineering Blog
- Splice Engineering Blog
- Spotify Engineering Blog
- Square Engineering Blog
- SquareSpace Engineering Blog
- Stripe Engineering Blog
- Symantec Blogs
- Target Tech Blog
- The New York Times Engineering Blog
- ThoughtWorks Insights
- Trello Blog
- Twilio Engineering Blog
- Twitch Engineering Blog
- Twitter Engineering Blog
- Uber Engineering Blog
- VMware Blogs
- VMware Radius Blog
- VMware Tanzu Blog
- Walmart Labs Blog
- Yelp Engineering Blog
- Zendesk Engineering Blog
- Zillow Engineering Blog
- 🔧 Craft Better Software by Daniel Moka
- 💻 Coding Challenges by John Crickett
- 🔍 Dev Details by Mike Thornton
- 📘 Engineer’s Codex by Leonardo Creed
- 🖥️ Front-End Focus by Mads Brodt
- 📈 High Growth Engineer by Jordan Cutler
- 🍔🧠 Hungry Minds by Alexandre Zajac
- 🚀 Level up software engineering by Caleb Mellas
- 🛠️ Maximiliano Contieri - Software Design by Maximiliano Contieri
- 👨💻 The Developing Dev by Ryan Peterman
- 💡 The Modern Software Developer by Richard Donovan
- 🛠️ The Pragmatic Engineer by Gergely Orosz
- 🔷 The T-Shaped Dev by Petar Ivanov
- 📈 Saiyan Growth Letter by Tiger Abrodi
- 🧹 Software Design: Tidy First? by Kent Beck
This is the most common and best textbook anyone could use to learn algorithms. It’s also the textbook my university used personally to learn the core and essential algorithms to most coding problems.
The 4th edition was recently released and is still relevant to MIT students. If you need structure and a traditional classroom setting to study, follow MIT’s algorithm course here.
Graph theory does come up in interviews (and was a question I had at both Bloomberg and Google). Stay prepared and follow William Fiset’s graph theory explanation.
The diagrams are comprehensive and the step-by-step explanations are the best I’ve ever seen on the topic.
This handbook is for people who are strongly proficient with most Leetcode algorithms. It’s a free resource that strongly complements the CSES.fi curriculum.
For the most experienced algorithm enthusiasts, this book will cover every niche data structure and algorithm that could possibly be asked in any coding interview. This level of preparation is not generally needed for FAANG type companies but can show up if you’re considering hedge fund type companies.
This is the simplest book to get anyone started in studying for coding interviews.
If you’re an absolute beginner, I recommend you to start here. The questions have very details explanations that are easy to understand with basic knowledge of algorithms and data structures.
If you’re a little more experienced, every question in this book is at the interviewing level of all large technology companies.
If you’ve mastered the questions in this book, then you are more than ready for the average technology interview. The book is not as beginner friendly as CTCI but it does include a study plan depending on how much you need to prepare for your interviews. This is my personal favorite book I carried everywhere in university.
Blind has a list of 75 questions that is generally enough to solve most coding interviews. It’s a very curated and focused list for the most essential algorithms to leverage your time.
The playlist above is one of the clearest explanations I’ve ever seen and highly recommend if you need an explanation on any of the problems.
These problems are hard. Really hard for anyone who hasn’t practiced algorithms and is not beginner friendly. But if you are able to complete the sorting and searching section, you will be more capable than the average LeetCode user and be more than ready for your coding interview.
Consider this if you’re comfortable with LeetCode medium questions and find the questions in CTCI too easy.
Want to suggest your own resource? Feel free to make a pull request anytime!