Hello 👋 and welcome to a new edition of the Progressive Coder newsletter.
This is the first combined edition of the Cloud & Backend + DevEvolution newsletters.
Going forward, you will be getting a combined weekly edition (instead of separate ones). This will be packed with information that doesn’t take forever to read.
In today’s edition, we talk about:
🧰 The Reason for Eventual Consistency
🤖 The Secret Game Behind Tech Promotions
⏰ Some Interesting Tweets
To support Progressive Coder, share it with your friends and colleagues.
🧰 The Reason for Eventual Consistency
There are two main types of database replication:
Synchronous
Asynchronous
👉 In Synchronous Replication, the leader waits until all followers have confirmed that they have received the write before reporting success to the user.
No chance for eventual consistency in this case. But it’s bad for the system's availability as one follower going down can result in the entire system being down.
👉 In Asynchronous Replication, the leader sends the updates to the followers but does not wait for a response from the followers (at least not all of them)
This is great for availability. But leads to the problem of eventual consistency.
The below figure shows how.
In the above situation, there is one leader (green) and two followers (orange).
When the user updates a record, the leader instructs both followers to replicate the change. However, as soon as follower 1 has replicated successfully, a success message is returned to the user.
At that point in time, follower 2 still contains old data. The data is replicated to follower 2 eventually. Until that happens, any query directed to this follower will return stale data.
Hence the name eventual consistency.
The longer it takes for replication to reach all followers, the greater the replication lag.
When there is significant replication lag, the problem is no longer a theoretical inconvenience. You start seeing real system issues.
There are several ways to deal with replication lag. But more on that in a later post.
Meanwhile, you can read more about replication in this post.
🤖 The Secret Game Behind Tech Promotions
Yes, there is a game. A game of levels.
Getting promoted as a software developer depends on how well you play the game.
You may not be aware of the game. But there is a high chance that some of your colleagues are actively playing it.
In fact, your manager knows everything about it and where you stand in the game. Whether they are telling you is another story.
🤔 So, what are these levels?
Think of them as indicators of your influence and impact.
The higher the level, the more influential it is. The more influential it is, the greater the impact it can create.
Taking the tech example, most organizations have junior, mid, senior, and staff-level roles.
✅ As a junior developer, you just influence your own actions. Your impact is restricted to your assignments.
✅ Once you are a mid-level developer, you start worrying about business outcomes related to your task.
✅ At senior-level roles, your influence extends to all direct peers reporting to the same manager. You have a chance to create a meaningful impact via leadership, mentoring, and guidance. On a system level, you can influence the future design and architecture of the system.
✅ At staff-level roles, your work influences and impacts people across your department and even at an organizational level. You’ll be involved in building important development patterns, hiring decisions, and business strategies.
🤔 So, how do you play the game and win?
Like beating a video game level, you must acquire the skills and abilities to move from one level to the next.
🚀 For transitioning from junior to mid-level, tech skills matter the most. Get good at your specific technical expertise and chances of promotion will come along sooner rather than later.
🚀 For mid to senior-level roles, you must build architectural knowledge and soft skills.
🚀 For senior to staff-level roles, you need long-term vision, communication, mentorship, and leadership skills.
Generally speaking, the higher the level, the more comfortable you must become in dealing with the unknown. Focus on long-term thinking instead of short-term gratification.
⏰ Interesting Tweets
Here are a few interesting tweets I came across this week:
👉 I also strongly believe that good architecture compounds the benefits over time.
👉 Writing to DB and publishing to a message bus is an important problem in event-driven systems. The below tweet sums it up quite well.
👉 Learning something new is all about implementation. In my view, memorization can only get you to the start line. After that, you need to try out concepts to really absorb them.
🏀 Over To You
Have you seen eventual consistency in action? If yes, how did you handle it?
Are you aware of the game behind tech promotions? If yes, how are you playing it?
Write your thoughts in the comments section.
If you are finding this newsletter valuable, consider sharing it.
Progressive Coder grows thanks to word of mouth. Share the article with your friends or colleagues to whom it might be useful.
Wishing you a great weekend ahead! ☀️
See you later.