Always negotiate the offer you get
Remember, companies expect negotiation. It's a normal part of the hiring process. But before you jump and say "you want more", do your homework, talk to people, and be ready with the following
This edition of the newsletter contains two quick write-ups about
Always negotiate the offer you get
Why PostgreSQL crumbles even when a moderate number of clients connect
I have also shared 3 super-interesting articles I read this week along with a paper that I am reading 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,
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. [plus, you get a 40% off]
Always negotiate the offer you get
Always negotiate the offer. Many people, feel uncomfortable but a good negotiation can significantly impact your career trajectory and financial well-being.
Remember, companies expect negotiation. It's a normal part of the hiring process. But before you jump and say "you want more", do your homework, talk to people, and be ready with the following two pointers
understand how the company typically structures its offers
be honest with yourself about your interview performance
When you are negotiating your offer, the two most important leverage you will have are - your current compensation and a competing offer. If possible, try to secure one of the two. This also emphasizes the importance of negotiating a higher compensation as it affects your future compensation.
Most people become arrogant if they have a good competing offer, but you should always remain respectful and diplomatic. When I put forth a competing offer during negotiation, I always say -
"I'm very excited about the opportunity with your company. I do have another offer that's offering X. While compensation isn't my only consideration, I'm wondering if there's any flexibility in your offer to help make my decision easier."
The way you negotiate is just as important as what you negotiate. Always maintain a respectful and professional throughout the process. Remember, this conversation is between two adults.
express your excitement about the role and the company
be specific and quantify your ask, instead of just asking for "more"
when you ask for more, explain why you deserve more
remember, it is not just about the money
So the next time you're presented with a job offer, do your homework and negotiate with confidence and humility. Successful negotiations can have a compound effect on your financial well-being, so play well.
You can find this post on my LinkedIn and Twitter; do leave a like.
🧠 Paper I read this week
This week I spent reading Striking the right chord: A comprehensive approach to Amazon Music search spell correction
When I was at Unacademy, I used to hate Google for one thing. They made it okay to have typos in search queries. This made my life difficult as I was also required to handle them, for a great UX, while building Search ground-up.
This week, I am reading a paper by Amazon that covers how they solved this problem in Amazon Music. Search is always a highly contextual problem and the solutions are almost always vertically optimized.
Amazon leveraged the BART Transformer model to provide contextual spelling suggestions. They also leveraged Reinforcement learning to refine the system based on real-time user feedback.
The paper also covers fragments of real-world implementation details and performance metrics. This will give you a peek into the design and implementation of the system.
By the way, when I built Search for Unacademy, I leveraged phonetic search to address this problem. Realizing that search cannot be a one-size-fits-all solution was one of my biggest learnings.
You can download this and other papers I recommend from my papershelf.
Why PostgreSQL crumbles even when a moderate number of clients connect
PostgreSQL crumbles even when a moderate number of clients connect to it. This happens because of how it handles each connection. Let's understand this in a bit more detail.
When a new client connects, PostgreSQL (postmaster process) spawns a new backend process (not thread) to handle the session. This backend process is responsible for starting a session, and maintaining it until the client disconnects or the connection is lost.
As the number of clients increases, the server has to spawn more and more backend processes. Each of these processes needs to cache catalog tables, prepared statements, intermediate query results, and other data; leading to a higher memory consumption.
This is why, when we spin up PostgreSQL we always keep it behind a connection pooling manager, like pg_bouncer. This manager establishes and manages a pool of connections to the database. When a client request comes in, the manager assigns an available connection, instead of creating a new one.
This connection reuse makes it easy for us to handle a large number of clients over fewer database connections. Fun fact: there is a massive proposal for moving PostgreSQL to a multi-threaded model instead of a multi-process model.
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, and GitHub.
Your approach to balancing confidence with humility is spot on. Negotiation really is an art that can have a huge impact on our tech career journey.
Hey Arpit with respect to job negotiation, what is the homework that shall be done? I am unable to grasp that part