Using Complicated Subsystem Teams separates the complicated part to reduce the cognitive load on stream-aligned teams. Separation of concerns and decoupling are fundamental techniques in software engineering. The key part and difficulty is the sustainability of a complicated subsystem team. When this team is formed...
This article is part of my notes from Chapter 4 on Designing Data-Intensive Applications by Martin Kleppmann. You can read other chapter notes as well. Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications Chapter 2: Data Models and Query Languages Chapter 3: Data Storage and Retrieval...
This article is part of my notes from Chapter 5 on Designing Data-Intensive Applications by Martin Kleppmann. You can read other chapter notes as well. Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications Chapter 2: Data Models and Query Languages Chapter 3: Data Storage and Retrieval...
Hey friend, As a manager, I coach engineers at various seniority levels. Some of them have much more experience in the industry than me, some have a similar experience, and some are less experienced. Regardless of the experience levels, I often see similarities between each one of them. Today, I write you about one...
These two words—questioning and asking—have different meanings, although both often refer to the same meaning. When we question a person or a piece of work, we meet with resistance. Questioning judges, investigates or interrogates. It looks for gaps, expects a valid reason why there are gaps, and tells that there...
This article is part of my notes from Chapter 3 on Designing Data-Intensive Applications by Martin Kleppmann. You can read other chapter notes as well. Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications Chapter 2: Data Models and Query Languages Chapter 3: Data Storage and Retrieval...
Lately, I had a conversation with an iOS developer who wants to change to the gaming industry and asked me how I switched my tech stack from iOS to the backend and my experience. Today, I will talk about the tech stack change, its effects on your career, advantages, and disadvantages you will get. In short,...
For a while, I've been thinking about what makes leadership difficult and why it challenges me—and others—that much. Before becoming a manager, I had a few discussions with some leaders to figure out the difficulties. I asked them what was their biggest challenge after they became a manager. The answers varied:...
I was thrilled when I received an email from a company—let's call them Acme Inc.—to lead a team of six engineers, including mobile app developers, reverse engineers, and a QA specialist. Although I'm happy that I took the counteroffer my company gave me at that time, I want to finish the story I started in the last...
This article is part of my notes from Chapter 2 on Designing Data-Intensive Applications by Martin Kleppmann. You can read other chapter notes as well. Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications Chapter 2: Data Models and Query Languages Chapter 3: Data Storage and Retrieval...
Functional decomposition is separating parts of your application into their own sections and allowing teams to develop these sections independently. Splitting the application by business capabilities and defining boundaries that enable teams to work independently is at the core of functional decomposition. If you’re...
There are two methods of scaling (a dichotomy): scaling up (vertical scaling) and sealing out (horizontal scaling). Although neither is a silver bullet, implementing either one or a combination of two is often the right action. Choosing which way to go depends on the application and operation overall. Some services...