Entering the market in 2026, as a senior software engineer with about 14 years worth of experience, is still a daunting task. I feel like an impostor, inadequate of the minimum requirements to apply for just a basic role. It seems like I have all this experience swimming in the deep open sea, but they require me to climb Mount Everest.
Times have changed, AI agents coming after our jobs, weekly tech layoffs and intense interview processes, this requires that we take a different approach to entering the market. There is a famous quote by Arch Bishop Desmond Tutu :
There's only one way to eat an elephant. One bite at a time
And this is how I am going to climb this mountain, one step at a time. I am writing this post, to help explain to myself and who ever chooses to read, the concepts, principles and methodologies required to prepare for a job interview.
The first topic will be CAP theorem. Why CAP theorem? I believe this is one of the fundamental questions that will be asked when it comes to a system design/senior engineering interview. The actual abbreviation might not be referenced, but the theory and understanding behind it will definitely.
** Important note, CAP theorem is generally related to data management, but it is imperative that we start here as this will be a core guideline on how to design our systems.
Consistency
Strong Consistency: In this case, our data should always be consistent and in sync on all data sources all the time.
Eventual Consistency: This means that our data will eventually be consistent at some point in time.
When consistency is referenced, it is almost always referring to strong consistency, as eventual consistency can be considered the opposite because it favours availability over consistency.
Availability
Availability means that our data will always be available, even though it can be stale. In this case, we need to make sure that our responses will always return data. As an example, if we have an error, we should still provide the data even though it is not up-to-date.
Partition Tolerance
This means that our system should work despite network failures/outages. A system should be robust and should still be able to function even when we encounter issues, therefore Partition Tolerance should be a default value when it comes to system design, leaving you with the final decision between Consistency or Availability.
Conclusion
The majority of systems in use today, will be a combination of A&P as strong consistency is mostly required for very specific systems like, transactions management system, booking management systems and inventory management systems just to name a few.
This, however, doesn't mean that we cannot combine the approaches within a system. Systems consists out of numerous sections which can have their own requirements, and it is up to us to determine what will work best for each system.
Based on my experience, there's rarely ever a case where one approach works 100% as expected (No silver bullet).

Top comments (0)