Create time for experimentation

In many companies, a requirement is that developers work 5 days a week on the product, and to implement features that Product Manager says they need to be implemented.This approach leads to lower satisfaction and higher turnover. People want to…

Querying database with non-covering index

When writing a simple query, we often check if there’s an index for all the fields we filter on. The query performs well in both local and production environments, and we don’t think twice about it. However, certain conditions can…

Scaling a notification service – Part 1

A reader reached out and asked for advice on how to create a notification service. In this series of posts, I will try to answer the question, but also the reasoning behind different approaches. We start from a simple approach,…

Reduce cognitive load with abstractions

Developers work with complex systems. Each of those systems is complex on its own, and the interactions between them can become complex as well. One way to deal with the complexity is to abstract those systems. We don’t need to…

Using Locks

Locking – What is it, how and when to use it? The answer is: Hopefully, you dont. Quite an artist, right? The nature of locks is to limit concurrency in software. Meaning, we are introducing waiting time, where the CPU…