Imposter syndrome is real and quite common
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.
Feeling like an imposter is quite normal
I felt like an imposter for the first few months at Google. Whenever we switch to a new company or join a new team, the first few months are always scary and it happens to the best of us. New codebase, new processes, new people, new rituals, everything seems overwhelming.
Things get worse, when we put pressure on ourselves to perform and make an impact from day one. Remember, the initial learning curve at any company, regardless of your background, is steep.
So, how do we overcome this? I did the following things to overcome. Again, these are from my personal experience and not an exhaustive list.
acknowledge that you will not be the smartest one in the room
accept that you know nothing and it will take time to build the context
ask questions, it helps you learn the codebase and processes faster
observe others and see how they operate and navigate
work for a few extra hours, if required, to ensure you ramp up faster
The next time you feel that imposter syndrome, remember: it's a normal part of the process. Lean into the discomfort, ask those questions, and you'll be surprised at how quickly you become an integral part of the team.
You can find this post on my LinkedIn and Twitter; do leave a like.
📹 Video I posted this week
This week I posted PostgreSQL connection management and per-client process model explained
PostgreSQL creates a new process every time a client connects, and this week I spent some time going through the source code and understanding the internal details of how and why PostgreSQL chose to create a new process instead of a new thread along with its connection management strategies.
🧠 Paper I read this week
This week I spent reading Distributed Transactions at Scale in Amazon DynamoDB
I have always been curious about this and hence this week I am reading their paper on how they have implemented full ACID transactions. Interestingly, they did it while ensuring low latency for all operations and without sacrificing scalability and availability.
I understand there is a difference between this ACID and ACID offered by relational databases; for example, it expects us to pass all the operations in one shot. But still, it is a good read to understand the implementation of distributed transactions at scale.
You can download this and other papers I recommend from my papershelf.
Most people get this wrong about the master replica setup
It is a common misconception, spread through popular books, people, and courses, that in a master-replica setup the master node will *only* handle writes. This is incorrect.
In a master-replica setup, writes go to the master does not mean reads cannot go to the master. The writes and the critical reads go to the master, while the reads that are okay working with stale data go to the replica to reduce the load on the master.
Hence, the backend code might have two database connections created, one with the master and one with the replica, and depending on the operation we pick the relevant one and fire the queries.
Critical reads are usecase specific. Some APIs or operations require a consistent view of the data, for example - reads during transactions, reading the account balance of a user, etc. hence they will use the master connection to fire their read request on the master node.
Whenever someone says something highly generic, remember this
a → b ≠ ~a → ~b
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