Book Review: Designing Data-Intensive Applications
henrikwarne.com
henrikwarne.com
How are you tackling the issue? It’s not like that one can find distributed system projects easily.
What I did, was to seek projects outside of work. In my case, I self-studied python, algorithms, and data structures. I started to implement my own projects, inspired by 12 in 12 challenge by Mackenzie Child. Somehow, I was able to get an interview with Google through the Google Foobar challenge, and I am now working at Google as a SWE.
Like what I shared, I haven't read the book yet, but if I was to apply learnings in distributed systems, I would build one using virtual machines or single thread processes with message passing via TCP, UDP, or HTTP, each representing a system for a small scale prototype. After I am comfortable with the concepts and implementation, I’ll probably scale up using one of the cloud service providers (AWS, GCloud, Azure, Digital Ocean, etc).
I work in Data Science so I have Python experience (at least for scripting) but the leap to SWE seems massive, let alone at some FAANG company.
At my previous position I was growing project management skills but felt my engineering skills was stagnating. I decided learning Python on the side. Based on HN recommendation, I started reading the CLRS algorithms book and implemented all data structures and algorithm with Python up until red-black tree. After that, due to time constraints I only implemented select algorithms from the graphs section.
After I had a better foundation on data structures and algorithms, I used leetcode and hacker rank as a test bed for my implementations. It is great, since the submission tests cover correctness, edge cases, memory and time constraints.
During this journey, I somehow triggered Google Foobar challenge with my Python and algorithm searches. This was the turning point—-I had tried to apply to Google before, but even with referrals it went nowhere due to my background not matching what G was looking for. Foobar, if you didn’t know, is a timed online programming challenge similar to leetcode. It consists of 5 levels, and Google will give you a phone interview if you completed level 3. This allowed me to bypass the HR filter!
So I started prepping for the interview in anticipation. I did the usual study routine—-cracking the coding interview and lots of leetcode. I wrote a lot of code on paper, completely filling up 2 notebooks. My goal was to be able to pick a random leetcode problem, handwrite the solution in 20 minutes, and have it pass all submission tests. Eventually I was able to do that for most problems at easy/medium difficulty.
The rest is just going through the interview process. Phone, then on-site, the nervously await the result. And you know the rest.
The whole journey took about 1.5 years, starting from learning python and reading CLRS. I know there’s a lot of dislike for the whiteboard algorithm interview, but in my case it was a way to pivot to SWE despite not having the background and experience, and I am grateful for it.
Does anyone know of other books like this? That teach theory with good pedagogy?