What is linearizability in distributed systems?

Linearizability is a guarantee given from distributed databases to clients such that if the DB is processing a write request (e.g increase counter x from 0 to 1), and client A and client B made read requests at the same time, then if client A gets the new value (1) [regardless whether the write request is done being processed or not] then client B must also get the same new value.

In other words, the distributed DB guarantees that if a client gets the new value, then ALL other clients will get the same value afterwards, i.e no values from stale DB replicas or caches … etc.

The DB here is in a leader-follower setup.

This concept is something I learned from the book Designing Data-Intensive Applications.

Continue ReadingWhat is linearizability in distributed systems?

Lessons From a Staff Engineer at Squarespace

Lessons from Dan Na, a Staff Engineer at Squarespace:

  • Meeting with different teams and stakeholders should aim to validate that your team’s plans are aligned with the most important initiatives/goals in the company.
  • Being a staff-plus engineer means being an engineering leader. You are responsible for engineering output, as well as the engineering culture.
  • The best way to build empathy is to try to be in the same seat as the other person. So if you are a developer and you often notice tension between developers and product managers in your org, then take the role of a product manager for a while to build that empathy and then then you can try to resolve the tension.
Continue ReadingLessons From a Staff Engineer at Squarespace

Lessons From a Staff Engineer at Slack

Lessons from Diana Pojar, a Staff Data Engineer at Stripe:

  • It’s recommended to spend time each year to reflect on what you have been doing in your current role/company and see if you are progressing and growing. It’s also recommended to plan what you want to achieve next.
  • You need to build a “track record of mentoring, visibility and technical quality” in the projects you did.
  • What made you from a junior to senior won’t take you from senior to staff-plus engineer. You need to develop your communication and leadership skills.
  • Driving change and having impact are the challenging aspects of being in a staff+ role. Execution and being hands-on are the easy parts.
Continue ReadingLessons From a Staff Engineer at Slack

Lessons From a Staff Engineer at Stripe

Lessons from Nelson Elhage, a Staff Engineer at Stripe:

  • One should build up a broad technical and non-technical context across Engineering.
  • Many people focus only on their team and their world-view and fail to understand the broad technical context across Engineering.
  • Having a broad technical context allows you to be an information glue across teams, because you can detect issues across teams and make proposal to resolve pain points.
  • It’s important to build and maintain relationships with engineering management (managers, directors, vice-presidents ..etc), not only because they are the ones who make decisions, but also because you can learn about the issues in the organization as well as understand their point views regarding decisions they make/made.
Continue ReadingLessons From a Staff Engineer at Stripe

Lessons From a Strategic Advisor at Uber

Lessons from Rick Boone, a Strategic Advisor at Uber:

  • Being aligned with your manager means being aligned on “principles, values, world views, emphasis on emotional intelligence, approach to execution and philosophies”.
  • Being a leader (any kind of leadership) means to get into “the realm of emotional intelligence, communication, collaboration, conflict resolution, evangelism and so on”.
  • To advocate for change, you need to know the change to advocate for. If you aren’t coding anymore it’s hard to find technical problems. Two ways are: 1- sit next to teams to hear when they complain about a problem/service, 2- maintain a list of people who are good in surfacing problems.
  • Interesting topics to look at: “behavioral economics, behavioral science, human psychology, organizational strategy”.
Continue ReadingLessons From a Strategic Advisor at Uber