There’s no syllabus, explore what excites you
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.
There’s no syllabus, explore what excites you
Throughout our life, we have been conditioned to find a syllabus and stick to it. Going out of the track is either discouraged or while doing it our peers and parents always said is a waste of time and effort. This continues even when you are working.
Whenever I talk about the internals of databases, or interesting algorithms, or an obscure domain from computer science, I always get the comment "Shut up! we don't need this at work."
We tend to focus on things we need at work or to crack some interviews and nothing beyond that. Even a slight detour seems like a waste of time. Unfortunately, this mindset is killing your curiosity and making you boring.
Be curious, tinker with things, and give yourself a chance to stumble upon the unexpected. The domain of computer science is vast and beautiful; there are so many things you will genuinely fall in love with.
Do not limit yourself to someone else's curation; explore what excites you.
You can find this post on my LinkedIn and Twitter; do leave a like.
📹 Video I posted this week
This week I posted How nested loop, hash, and merge joins work.
Joins are essential for relational databases and they not only power transactional queries but are also used in analytical workloads. But how do databases join the two tables?
In this video, we go in-depth to understand the different algorithms that databases use when they join two tables. By the way, these algorithms are not just limited to databases, but even distributed computation frameworks like Apache Spark use them when they need to join the two datasets. So, let's jump in.
🧠 Paper I read this week
This week I spent reading Amazon MemoryDB: A fast and durable memory-first cloud database
The paper describes the architecture of MemoryDB and how they leverage Redis and offer 11 9s of durability with in-memory performance 🤯 pretty impressive.
It spills the details about how they provide single-digit millisecond write and microsecond-scale read latencies, strong consistency, and high availability while being fully compatible with Redis.
You can download this and other papers I recommend from my papershelf.
100% test coverage does not mean your system is stable
I once saw a FAANG codebase with 100% test coverage but the system was still broken.
Many big companies obsess over unit tests and most of them chase the vanity metric of test coverage as an indicator of system stability. The obsession with hitting that 100% coverage mark leads to engineers wasting countless hours writing trivial test cases.
I am not saying, to not write tests at all. Tests are essential and you need to write the ones that matter, the tests that catch regressions, the tests that ensure the core functionality remains intact, and the tests that keep the system stable.
I prefer writing integration tests because they ensure that my system is stable from the outside and that the required user flows are working fine. I do write unit tests, but only for critical business logic and complex internal flows and edge cases.
Five pieces of code that I write unit and integration tests for are
for functionality that directly impacts the user experience
for the system's core business logic
for code that gets invoked frequently
for code that handles sensitive data
for code that changes frequently
So, when you write the next set of tests ask yourself, your lead, and your manager the tough question - "why?"
You can find this post on my LinkedIn and Twitter; do leave a like.
📰 Interesting articles I read this week
I read a few engineering blogs almost every single day, and here are the three articles I would recommend you to 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, GitHub.