This edition of the newsletter contains
I have also shared 3 super-interesting articles to read over the weekend. Thank you once again for reading this edition of my Newsletter. Now, without further ado, let’s jump right in.
By the way, the admissions for my System Design June cohort are open. If you are an SDE-2, SDE-3, or above, and looking to build a rock-solid intuition for designing any and every system, you will find my course extremely interesting.
Instead of drawing boxes, we go into the intricate details of every single system and build an end-to-end understanding. The learnings from the course can be applied at your workplace from day 1. If you're looking for genuine engineering discussions or brainstorming, be sure to check out my course.
Course curriculum and other key details: https://arpitbhayani.me/course
When In Doubt, Code It Out
Prototypes are not only great for learning concepts better, but they are also great for doing highly reliable project estimations. Here's how ...
Prototyping is about building fast and low-quality stuff that is never meant to be shipped to production, nor is expected to follow any best practices. They are meant to gather the information, build an understanding, and then be thrown away.
Project estimations are hard, as we all are guilty of making random guesses while estimating efforts. Instead, it is better to build a quick prototype and make an informed decision. Prototypes help us answer some critical questions.
what will be a tentative task breakdown
how long each task would take
what are the unknown unknowns
which parts of the system are hard, and where the risks lie
more importantly, can this even work
Beyond technical feasibility, prototypes also help in gauging whether people even care about the solution. Sometimes, showing a quick demo is enough to validate interest or reveal disinterest before you go all-in.
It's often better to spend a few hours testing an idea than to invest weeks in something doomed from the start.
If you are learning new things every day, Prototyping is the easiest way to build a practical understanding, be it around system design, advanced algorithms, or even an idea that you find interesting. You often learn faster by doing than by just reading or planning.
Remember, it's okay to discard prototypes. Their value is in what they teach you, not in their longevity. Make prototyping a habit. Most prototypes don't take more than 200 lines. Treat them as experiments and not polished products.
So, when in doubt, code it out.
By the way,
Being hands-on is the best way for you to learn. Practice interesting programming challenges like building your own BitTorrent client, Redis, DNS server, and even SQLite from scratch on CodeCrafters.
Sign up, and become a better engineer.
Here's the video I posted
I published a video - An Engineering Deep-dive Into Atlassian's Mega Outage of April 2022
Two years ago, Atlassian had a mega outage where they "permanently" deleted the data for 400 of their paying cloud customers, and it will take them weeks to recover it.
I did an engineering deep dive into this outage, trying to understand their engineering systems and practices, and spoke about 6 key insights into how their engineering systems are built, their backup and restoration strategies, and, more importantly, why it is taking them so long to recover the data.
Paper I read and would highly recommend
I spent some time reading Indexing Dataspaces
One interesting problem Google faced when they were starting up was indexing all kinds of data and querying it efficiently.
Dealing with messy, unstructured, and structured data all at one go was a pain, especially when the data systems at that time assumed a well-defined schema. This is where Google built Dataspaces.
Dataspaces index data of all shapes and sizes and provide an efficient way to query them without forcing strict integration. Instead of maintaining separate indexes for structured and unstructured data, it extends the classic inverted lists with structural metadata - capturing attributes, associations, and schema hierarchies.
If you find data systems and databases interesting, I would highly recommend reading this paper; pretty interesting.
You can download this and other papers I recommend from my papershelf.
Three interesting articles I read
I read a few engineering blogs almost every day, and here are the three articles I would recommend you read.
Thank you so much for reading this edition of the newsletter 🔮 If you found it interesting, you will also love my courses
I keep sharing no-fluff stuff across my socials, so if you resonate, do give me a follow on Twitter, LinkedIn, YouTube, and GitHub.
Please write a more interesting newsletter