💼 Chief Roadblock Remover and Learning Enabler 💡 Software Development Expert 👨💼 High-Performance Coach 💻 Building great products, building great teams!
I've been writing a newsletter for almost a year and a half, publishing a new issue every week, and 𝗺𝗼𝗿𝗲 𝘁𝗵𝗮𝗻 𝟯𝟰,𝟬𝟬𝟬 𝗽𝗲𝗼𝗽𝗹𝗲 𝗮𝗿𝗲 𝗰𝘂𝗿𝗿𝗲𝗻𝘁𝗹𝘆 𝘀𝘂𝗯𝘀𝗰𝗿𝗶𝗯𝗲𝗱 (thank you!).
I write articles in five different learning tracks:
🔹 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲
𝗧𝗼𝗽 𝟮𝟬 𝗦𝗤𝗟 𝗾𝘂𝗲𝗿𝘆 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝘁𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀
Here is the list of the top 20 SQL query optimization techniques I found noteworthy:
1. Create an index on huge tables (>1.000.000) rows
2. Use EXIST() instead of COUNT() to find an element in the
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 != 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿
Software Engineer == Problem Solver
Don't attack problems with code. Try first to understand them from a business perspective and then a technical perspective. When you do this, make a plan for how to solve it.
Try to
𝗙𝗮𝗰𝗲𝗯𝗼𝗼𝗸 𝗰𝗿𝗲𝗮𝘁𝗲𝗱 𝗮 𝘁𝗼𝗼𝗹 𝘄𝗵𝗶𝗰𝗵 𝗱𝗲𝘁𝗲𝗰𝘁 𝗮𝗻𝗱 𝗿𝗲𝗽𝗮𝗶𝗿 𝗯𝘂𝗴𝘀 𝗮𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗰𝗮𝗹𝗹𝘆
The recent document by engineers from Facebook explains how they wrote a tool that can automatically fix bugs. In the paper, they introduced 𝗦𝗔𝗣𝗙𝗜𝗫,
𝗪𝗵𝘆 𝗱𝗼𝗲𝘀 𝗚𝗼𝗼𝗴𝗹𝗲 𝗿𝗲𝗰𝗼𝗺𝗺𝗲𝗻𝗱 𝗠𝗼𝗱𝘂𝗹𝗮𝗿 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵𝘀 𝗶𝗻𝘀𝘁𝗲𝗮𝗱 𝗼𝗳 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀?
In the last decade, we have seen a massive trend of using microservices everywhere. We were building systems for a few hundred or thousand users and
𝗛𝗼𝘄 𝘁𝗼 𝗟𝗲𝗮𝗿𝗻 𝗦𝘆𝘀𝘁𝗲𝗺 𝗗𝗲𝘀𝗶𝗴𝗻?
If you're working as a software developer and you want to move towards a software architect role, or you're preparing for coding interviews for more senior roles, systems design is an important skill you need to have. Without
𝗪𝗵𝗮𝘁 𝗶𝘀 𝘁𝗵𝗲 𝗗𝗶𝗳𝗳𝗲𝗿𝗲𝗻𝗰𝗲 𝗕𝗲𝘁𝘄𝗲𝗲𝗻 𝗜𝗻𝗻𝗲𝗿, 𝗟𝗲𝗳𝘁, 𝗥𝗶𝗴𝗵𝘁, 𝗮𝗻𝗱 𝗙𝘂𝗹𝗹 𝗝𝗼𝗶𝗻?
🔹 (INNER) JOIN - return all rows with matching values in both tables.
🔹 LEFT (OUTER) JOIN - return all rows from the left table and those that meet the
𝗧𝗼𝗽 𝟮𝟬 𝗦𝗤𝗟 𝗾𝘂𝗲𝗿𝘆 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝘁𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀
Here is the list of the top 20 SQL query optimization techniques I found noteworthy:
1. Create an index on huge tables (>1.000.000) rows
2. Use EXIST() instead of COUNT() to find an element in the
𝗛𝗼𝘄 𝘁𝗼 𝗯𝗲 𝗮 𝗽𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝘃𝗶𝘁𝘆 𝗺𝗮𝘀𝘁𝗲𝗿?
Use a few simple techniques:
1. Focus on ONE thing. Block your time in the calendar for everything and try to focus on the current task only.
2. Use 3:3:3 Plan. 3h to work on your most important projects. 3h for
𝗟𝗲𝗮𝗿𝗻 𝗳𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀 𝗻𝗼𝘁 𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸𝘀
We, as developers, like to learn new stuff and try it ASAP. That stuff is mostly some new frameworks and tools (such as React, Angular, Spring, Web Forms, ...). Yet, those frameworks usually have 𝗮 𝘀𝗵𝗼𝗿𝘁
𝗦𝘁𝗮𝗰𝗸 𝗢𝘃𝗲𝗿𝗳𝗹𝗼𝘄 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗜𝘀 𝗡𝗼𝘁 𝗪𝗵𝗮𝘁 𝗬𝗼𝘂 𝗠𝗲𝗮𝗻 𝗜𝘁 𝗜𝘀
In the recent interview with Scott Hanselman, 𝗥𝗼𝗯𝗲𝗿𝘁𝗮 𝗔𝗿𝗰𝗼𝘃𝗲𝗿𝗱𝗲, 𝗛𝗲𝗮𝗱 𝗢𝗳 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗮𝘁 𝗦𝘁𝗮𝗰𝗸 𝗢𝘃𝗲𝗿𝗳𝗹𝗼𝘄, revealed the story about
𝗠𝗶𝗰𝗿𝗼𝘀𝗼𝗳𝘁 𝗢𝗳𝗳𝗲𝗿𝘀 𝗙𝗿𝗲𝗲 𝗔𝗜, 𝗠𝗮𝗰𝗵𝗶𝗻𝗲 𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴, 𝗮𝗻𝗱 𝗗𝗮𝘁𝗮 𝗦𝗰𝗶𝗲𝗻𝗰𝗲 𝗰𝗼𝘂𝗿𝘀𝗲𝘀
Recently Microsft created a comprehensive suite of courses on these topics for beginners, which is an excellent foundation for understanding the
𝗪𝗵𝗶𝗰𝗵 𝗰𝗹𝗼𝘂𝗱 𝗽𝗿𝗼𝘃𝗶𝗱𝗲𝗿 𝘀𝗵𝗼𝘂𝗹𝗱 𝗯𝗲 𝘂𝘀𝗲𝗱 𝘄𝗵𝗲𝗻 𝗯𝘂𝗶𝗹𝗱𝗶𝗻𝗴 𝗮 𝗯𝗶𝗴 𝗱𝗮𝘁𝗮 𝘀𝗼𝗹𝘂𝘁𝗶𝗼𝗻?
The diagram below illustrates the detailed comparison of AWS, Google Cloud, and Microsoft Azure, created by Satish Chandra Gupta.
They all use
𝗗𝗼 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗔𝗹𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
The answer is no. Even though we have 23 design patterns, around ten are mostly used in everyday development. Knowing which patterns exist overall is good, but you need to know these very well.
Design
𝗗𝗲𝗳𝗶𝗻𝗶𝗻𝗴, 𝗠𝗲𝗮𝘀𝘂𝗿𝗶𝗻𝗴, 𝗮𝗻𝗱 𝗠𝗮𝗻𝗮𝗴𝗶𝗻𝗴 𝗧𝗲𝗰𝗵𝗻𝗶𝗰𝗮𝗹 𝗗𝗲𝗯𝘁 𝗯𝘆 𝗚𝗼𝗼𝗴𝗹𝗲
In the latest paper by Google Engineers, they researched how to define, measure and manage Technical Debt. They use quarterly engineering satisfaction surveys to analyze
𝗕𝗼𝗼𝗸𝘀 𝗘𝘃𝗲𝗿𝘆 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 𝗠𝘂𝘀𝘁 𝗥𝗲𝗮𝗱 𝗶𝗻 𝟮𝟬𝟮𝟯.
You probably already noticed that I'm a big fan of reading. I usually read 3-4 books per month. You can learn from knowledgeable people in two ways: to work directly with them or to read
𝗔𝗣𝗜 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗧𝘆𝗽𝗲𝘀
API (Application Programming Interface) is an interface that enables software applications to communicate with each other by defining a set of rules and protocols.
𝗧𝘆𝗽𝗲𝘀 𝗼𝗳 𝗔𝗣𝗜𝘀:
🔹 𝗥𝗘𝗦𝗧
𝗔 𝘃𝗶𝘀𝘂𝗮𝗹 𝗴𝘂𝗶𝗱𝗲 𝗼𝗻 𝗵𝗼𝘄 𝘁𝗼 𝗰𝗵𝗼𝗼𝘀𝗲 𝘁𝗵𝗲 𝗿𝗶𝗴𝗵𝘁 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲
Choosing the right data store can be confusing with so many options around. This diagram shows a selection choice for a data store based on a use case.
Data can be 𝘀𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱
𝗪𝗵𝗮𝘁 𝗶𝘀 𝘁𝗵𝗲 𝗱𝗶𝗳𝗳𝗲𝗿𝗲𝗻𝗰𝗲 𝗯𝗲𝘁𝘄𝗲𝗲𝗻 𝗠𝗩𝗖, 𝗠𝗩𝗣, 𝗠𝗩𝗜, 𝗠𝗩𝗩𝗠, 𝗠𝗩𝗩𝗠-𝗖, 𝗮𝗻𝗱 𝗩𝗜𝗣𝗘𝗥 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗽𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
Here is the list of the most critical architectural patterns:
𝟭. 𝗠𝗩𝗖
𝗔 𝗹𝗶𝘀𝘁 𝗼𝗳 𝗵𝗲𝗹𝗽𝗳𝘂𝗹 𝘁𝗼𝗼𝗹𝘀 𝗶𝗻 𝗮 𝗟𝗶𝗻𝘂𝘅 𝘀𝘆𝘀𝘁𝗲𝗺
🔹𝗽𝗶𝗱𝘀𝘁𝗮𝘁 - monitors how much of the system's resources—such as CPU, memory, device IO, task switching, and threads—are being used by all or a specific set of programs.
🔹𝗻𝗲𝘁𝘀𝘁𝗮𝘁 - displays
𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 𝗖𝗵𝗲𝗮𝘁 𝗦𝗵𝗲𝗲𝘁
Design patterns can be divided into three main types:
𝟭. 𝗖𝗿𝗲𝗮𝘁𝗶𝗼𝗻𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀
These design patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.
𝗔 𝗩𝗶𝘀𝘂𝗮𝗹 𝗚𝘂𝗶𝗱𝗲 𝗢𝗻 𝗛𝗼𝘄 𝗧𝗼 𝗖𝗵𝗼𝗼𝘀𝗲 𝗧𝗵𝗲 𝗥𝗶𝗴𝗵𝘁 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲
With so many options around, choosing a suitable data store can be confusing. This diagram shows a selection choice for a datastore based on a use case (𝗦𝗤𝗟 𝘃𝘀 𝗡𝗼𝗦𝗤𝗟).
Data can
𝗪𝗵𝗮𝘁 𝗘𝘃𝗲𝗿𝘆 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿 𝗦𝗵𝗼𝘂𝗹𝗱 𝗞𝗻𝗼𝘄 𝗔𝗯𝗼𝘂𝘁 𝗠𝗲𝗺𝗼𝗿𝘆
Check out this great manuscript by Ulrich Drepper, which delves deep into computer memory systems and their implications for software developers.
It talks about:
🔹 𝗖𝗣𝗨 𝗖𝗮𝗰𝗵𝗲𝘀
🔹
𝗪𝗵𝘆 𝗚𝗼𝗼𝗴𝗹𝗲 𝗦𝘁𝗼𝗿𝗲𝘀 𝗕𝗶𝗹𝗹𝗶𝗼𝗻𝘀 𝗼𝗳 𝗟𝗶𝗻𝗲𝘀 𝗼𝗳 𝗖𝗼𝗱𝗲 𝗶𝗻 𝗮 𝗦𝗶𝗻𝗴𝗹𝗲 𝗥𝗲𝗽𝗼𝘀𝗶𝘁𝗼𝗿𝘆
Google’s monolithic repository provides a common source of truth for tens of thousands of developers worldwide. They use it for 95% of their source code,
𝗛𝗼𝘄 𝗧𝗼 𝗢𝗽𝘁𝗶𝗺𝗶𝘇𝗲 𝗬𝗼𝘂𝗿 𝗦𝗤𝗟 𝗤𝘂𝗲𝗿𝗶𝗲𝘀?
To do this, you need first to understand the execution order of an SQL query.
SQL statements are executed in multiple steps:
𝟭. 𝗙𝗥𝗢𝗠 - tables are joined to get the base data.
𝟮. 𝗪𝗛𝗘𝗥𝗘 - the base data is
𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗮𝘀 𝗖𝗼𝗱𝗲
We’re seeing more tools enabling you to create software architecture and other diagrams as code. The main benefit of using this concept is that most of the diagrams as code tools can be scripted and integrated into a built pipeline to
𝗧𝗼𝗽 𝟮𝟬 𝗦𝗤𝗟 𝗤𝘂𝗲𝗿𝘆 𝗢𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗧𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀
Here is the list of the top 20 SQL query optimization techniques I found noteworthy:
1. Create an index on huge tables (>1.000.000) rows.
2. Use EXIST() instead of COUNT() to find an element in the
𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆 𝘃𝘀 𝗟𝗼𝗮𝗱 𝗕𝗮𝗹𝗮𝗻𝗰𝗲𝗿
Regarding a system design, we often need clarification about the roles of a Load Balancer and an API Gateway. Most of our resources are about their implementation rather than real-life use cases.
🔹 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆 sits
𝗪𝗲 𝗮𝗿𝗲 𝘀𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝘀, 𝗻𝗼𝘁 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀
What does this mean? This means that 𝘆𝗼𝘂𝗿 𝗷𝗼𝗯 𝗶𝘀 𝗻𝗼𝘁 𝘁𝗼 𝗰𝗼𝗱𝗲 𝗯𝘂𝘁 𝘁𝗼 𝘀𝗼𝗹𝘃𝗲 𝗽𝗿𝗼𝗯𝗹𝗲𝗺𝘀.
This includes:
🔹 Talking to customers
🔹 Do system design
🔹 Writing docs
🔹
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗖𝗿𝗼𝘀𝘀-𝗢𝗿𝗶𝗴𝗶𝗻 𝗥𝗲𝘀𝗼𝘂𝗿𝗰𝗲 𝗦𝗵𝗮𝗿𝗶𝗻𝗴 (𝗖𝗢𝗥𝗦)?
Browsers use CORS to prevent websites from requesting data from different URLs. A request from a browser includes an origin header in the request message. The browser allows it if it gets to the
𝗟𝗲𝗮𝗿𝗻 𝗳𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀 𝗻𝗼𝘁 𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸𝘀
We, as developers, like to learn new stuff and try it ASAP. That stuff consists mainly of new frameworks and tools (such as React, Angular, Spring, Web Forms, etc.). Yet, those frameworks usually have 𝗮 𝘀𝗵𝗼𝗿𝘁
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗮𝗻 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆?
An API management tool known as an 𝗔𝗣𝗜 𝗴𝗮𝘁𝗲𝘄𝗮𝘆 sits between a client and a group of backend services. It performs the function of a reverse proxy by accepting all application programming interface (API) calls, aggregating the
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗮𝗻 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆?
An API management tool known as an 𝗔𝗣𝗜 𝗴𝗮𝘁𝗲𝘄𝗮𝘆 sits between a client and a group of backend services. It performs the function of a reverse proxy by accepting all application programming interface (API) calls, aggregating the
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗮𝗻 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆?
An API management tool known as an 𝗔𝗣𝗜 𝗴𝗮𝘁𝗲𝘄𝗮𝘆 sits between a client and a group of backend services. It performs the function of a reverse proxy by accepting all application programming interface (API) calls, aggregating the
𝗪𝗵𝗮𝘁 𝗵𝗮𝗽𝗽𝗲𝗻𝘀 𝘄𝗵𝗲𝗻 𝘆𝗼𝘂 𝘁𝘆𝗽𝗲 𝗮 𝗨𝗥𝗟 𝗶𝗻𝘁𝗼 𝘆𝗼𝘂𝗿 𝗯𝗿𝗼𝘄𝘀𝗲𝗿?
The process involves the browser, your computer’s operating system, your internet service provider, the server where you host the site, and the services running on that server.
𝟭.
𝗪𝗵𝗮𝘁 𝗶𝘀 𝘁𝗵𝗲 𝗗𝗶𝗳𝗳𝗲𝗿𝗲𝗻𝗰𝗲 𝗕𝗲𝘁𝘄𝗲𝗲𝗻 𝗜𝗻𝗻𝗲𝗿, 𝗟𝗲𝗳𝘁, 𝗥𝗶𝗴𝗵𝘁, 𝗮𝗻𝗱 𝗙𝘂𝗹𝗹 𝗷𝗼𝗶𝗻?
🔹 (𝗜𝗡𝗡𝗘𝗥) 𝗝𝗢𝗜𝗡: return all rows with matching values in both tables.
🔹 𝗟𝗘𝗙𝗧 (𝗢𝗨𝗧𝗘𝗥) 𝗝𝗢𝗜𝗡: return all rows from the left table and those
𝗙𝗥𝗘𝗘 𝗘-𝗕𝗢𝗢𝗞: 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗮𝘁 𝗚𝗼𝗼𝗴𝗹𝗲
The Software Engineering at Google book is not about programming, per se, but about the engineering practices utilized at Google to make their codebase sustainable and healthy.
What you can learn
𝗪𝗵𝗮𝘁 𝗮𝗿𝗲 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
Deployment patterns are automated methods of introducing new application features to your users. Your ability to cut downtime depends on the deployment style you use. Some patterns also let you roll out extra functionality.
𝗕𝗼𝗼𝗸𝘀 𝗘𝘃𝗲𝗿𝘆 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 𝗠𝘂𝘀𝘁 𝗥𝗲𝗮𝗱 𝗶𝗻 𝟮𝟬𝟮𝟰.
You probably already noticed that I'm a big fan of reading. I usually read 3-4 books per month. There are two ways to learn from knowledgeable people: to work directly with them or to read
𝗦𝗼𝗺𝗲 𝗶𝗺𝗽𝗼𝗿𝘁𝗮𝗻𝘁 𝗹𝗲𝗮𝗿𝗻𝗶𝗻𝗴𝘀 𝗳𝗿𝗼𝗺 𝗺𝘆 𝟮𝟬 𝘆𝗲𝗮𝗿𝘀 𝗼𝗳 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗹𝗶𝗳𝗲
𝟭. 𝗗𝗼𝗻'𝘁 𝗱𝗼 𝗽𝗿𝗲𝗺𝗮𝘁𝘂𝗿𝗲 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻
You will not replace that component with another one in the future, so that you won't need an
𝗦𝗤𝗟 𝗤𝘂𝗲𝗿𝗶𝗲𝘀 𝗘𝘅𝗲𝗰𝘂𝘁𝗶𝗼𝗻 𝗢𝗿𝗱𝗲𝗿
We utilize SQL queries to access a collection of records stored in our database tables. Clauses are the building blocks of SQL queries. These clauses must be executed to get the proper outcomes. SQL query execution order is the
𝗗𝗼 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗔𝗹𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
The answer is no. Even though we have 23 design patterns, around 10 are mostly used in everyday development. Knowing which patterns exist overall is good, but you need to know these very well.
Design
𝗧𝗼𝗽 𝟭𝟬 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 is the process of designing the structure and behavior of a software system, which includes making decisions about components, modules, interfaces, and the system's organization.
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗖𝗿𝗼𝘀𝘀-𝗢𝗿𝗶𝗴𝗶𝗻 𝗥𝗲𝘀𝗼𝘂𝗿𝗰𝗲 𝗦𝗵𝗮𝗿𝗶𝗻𝗴 (𝗖𝗢𝗥𝗦)?
Browsers use CORS, a method, to prevent websites from requesting data from different URLs. A request from a browser includes an origin header in the request message. The browser allows it if it
𝗦𝘆𝘀𝘁𝗲𝗺 𝗗𝗲𝘀𝗶𝗴𝗻: 𝗛𝗼𝘄 𝘁𝗼 𝗗𝗲𝘀𝗶𝗴𝗻 𝗜𝗻𝘀𝘁𝗮𝗴𝗿𝗮𝗺
In this post, we continue with the system design series. Let's first discuss the requirements:
𝟭. 𝗥𝗲𝗾𝘂𝗶𝗿𝗲𝗺𝗲𝗻𝘁𝘀:
Functional requirements:
- Upload images from a mobile client
- Users follow
𝗗𝗼 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗔𝗹𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
The answer is no. Even though we have 23 design patterns, around 10 are mostly used in everyday development. Knowing which patterns exist overall is good, but you need to know these very well.
Design
𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱𝗶𝗻𝗴 𝗥𝗘𝗦𝗧 𝗛𝗲𝗮𝗱𝗲𝗿𝘀
The Hypertext Transfer Protocol (HTTP) header is a component of HTTP and transmits extra data during HTTP requests and responses. The server uses the HTTP header and the browser to share metadata about the document and the data
𝗛𝗼𝘄 𝗱𝗼 𝘄𝗲 𝗱𝗲𝗽𝗹𝗼𝘆 𝘀𝗮𝗳𝗲𝗹𝘆 𝗼𝗻 𝗙𝗿𝗶𝗱𝗮𝘆𝘀?
You probably saw the massive outage on Windows systems caused by one CrowdStrike module update. The question is how to prevent these things, and here are some patterns that can help you there.
Deployment patterns
𝗔 𝗩𝗶𝘀𝘂𝗮𝗹 𝗚𝘂𝗶𝗱𝗲 𝗢𝗻 𝗛𝗼𝘄 𝗧𝗼 𝗖𝗵𝗼𝗼𝘀𝗲 𝗧𝗵𝗲 𝗥𝗶𝗴𝗵𝘁 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲
Choosing the right data store can be confusing with so many options around. This diagram shows a selection choice for a datastore based on a use case (𝗦𝗤𝗟 𝘃𝘀 𝗡𝗼𝗦𝗤𝗟).
Data can
𝗪𝗵𝗮𝘁 𝗜 𝗟𝗲𝗮𝗿𝗻𝗲𝗱 𝗙𝗿𝗼𝗺 𝗧𝗵𝗲 𝗕𝗼𝗼𝗸 "𝗣𝗿𝗮𝗴𝗺𝗮𝘁𝗶𝗰 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿"
One book I always recommend to developers is "Pragmatic Programmer" by David Thomas and Andrew Hunt. Although it is not new, it builds on a foundation that is important today and will
𝗪𝗵𝗮𝘁 𝗶𝘀 𝘁𝗵𝗲 𝗧𝘄𝗲𝗹𝘃𝗲-𝗙𝗮𝗰𝘁𝗼𝗿 𝗔𝗽𝗽?
Describes many well-tested architectural patterns and best practices for software-as-a-service (SaaS) applications. When apps are deployed to the web, they can be created with portability and resilience thanks to these best
𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝘀𝗲𝗿𝘃𝗲𝗱 𝟭.𝟮𝟳 𝗠𝗶𝗹𝗹𝗶𝗼𝗻 𝗿𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗽𝗲𝗿 𝘀𝗲𝗰𝗼𝗻𝗱 𝗼𝗻 𝗮 𝗺𝗼𝗻𝗼𝗹𝗶𝘁𝗵
You probably think that such a large amount of requests can be only handled by some fancy microservices? The truth is a bit different.
Shopify uses a 𝗺𝗼𝗱𝘂𝗹𝗮𝗿
𝗛𝗼𝘄 𝘁𝗼 𝗱𝗼 𝗺𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗽𝗿𝗼𝗽𝗲𝗿𝗹𝘆?
𝗦𝗲𝗹𝗳-𝗰𝗼𝗻𝘁𝗮𝗶𝗻𝗲𝗱 𝗦𝘆𝘀𝘁𝗲𝗺𝘀 (𝗦𝗖𝗦) is a software architecture approach that prioritizes the decentralization of applications into independent systems, each with its domain
𝗕𝗼𝗼𝗸𝘀 𝗘𝘃𝗲𝗿𝘆 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 𝗠𝘂𝘀𝘁 𝗥𝗲𝗮𝗱 𝗶𝗻 𝟮𝟬𝟮𝟰.
You probably already noticed that I'm a big fan of reading. I usually read 3-4 books per month. There are two ways to learn from knowledgeable people: to work directly with them or to read
𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆 𝘃𝘀 𝗟𝗼𝗮𝗱 𝗕𝗮𝗹𝗮𝗻𝗰𝗲𝗿
Regarding a system design, we often see confusion about the roles of a Load Balancer and an API Gateway. Most of our resources are about their implementation but not their real-life use cases.
🔹 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆 sits
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗘𝗧𝗟?
Extract, Transform, Load (ETL) is a data integration process that involves:
𝟭. 𝗘𝘅𝘁𝗿𝗮𝗰𝘁: This step involves extracting data from various heterogeneous sources. These sources include databases, flat files, APIs, or other data storage mechanisms.
𝟮.
𝗬𝗼𝘂𝗿 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗜𝘀 𝗔𝗹𝘄𝗮𝘆𝘀 𝗖𝗼𝗺𝗽𝗹𝗲𝘅 𝗔𝘀 𝗬𝗼𝘂𝗿 𝗢𝗿𝗴𝗮𝗻𝗶𝘇𝗮𝘁𝗶𝗼𝗻
Have you heard about 𝗖𝗼𝗻𝘄𝗮𝘆'𝘀 𝗟𝗮𝘄? It is a theory created by computer scientist Melvin Conway in 1967. which says: "𝘖𝘳𝘨𝘢𝘯𝘪𝘻𝘢𝘵𝘪𝘰𝘯𝘴,
𝗛𝗼𝘄 𝘁𝗼 𝗹𝗲𝗮𝗿𝗻 𝗦𝗤𝗟?
Structured Query Language (SQL) is a domain-specific language used in programming and designed for managing data held in relational database management systems for many years now. It was developed at IBM in the early 1970s. As relational databases
𝗛𝗼𝘄 𝗗𝗡𝗦 𝗪𝗼𝗿𝗸𝘀?
I've just released the new issue of my 𝗻𝗲𝘄𝘀𝗹𝗲𝘁𝘁𝗲𝗿 to more than 13.000 addresses, talking about:
🔹 𝗪𝗵𝗮𝘁 𝗵𝗮𝗽𝗽𝗲𝗻𝘀 𝘄𝗵𝗲𝗻 𝘆𝗼𝘂 𝘁𝘆𝗽𝗲 𝗮 𝗨𝗥𝗟 𝗶𝗻𝘁𝗼 𝘆𝗼𝘂𝗿 𝗯𝗿𝗼𝘄𝘀𝗲𝗿?
🔹 𝗛𝗼𝘄 𝗗𝗡𝗦 𝘄𝗼𝗿𝗸𝘀?
🔹 𝗮𝗻𝗱
𝗗𝗲𝗳𝗶𝗻𝗶𝗻𝗴, 𝗠𝗲𝗮𝘀𝘂𝗿𝗶𝗻𝗴, 𝗮𝗻𝗱 𝗠𝗮𝗻𝗮𝗴𝗶𝗻𝗴 𝗧𝗲𝗰𝗵𝗻𝗶𝗰𝗮𝗹 𝗗𝗲𝗯𝘁 𝗯𝘆 𝗚𝗼𝗼𝗴𝗹𝗲
In the latest paper by Google Engineers, they researched how to define, measure, and manage Technical Debt. They use quarterly engineering satisfaction surveys to analyze
𝗛𝗼𝘄 𝗱𝗼𝗲𝘀 𝗦𝗶𝗻𝗴𝗹𝗲 𝗦𝗶𝗴𝗻-𝗢𝗻 (𝗦𝗦𝗢) 𝘄𝗼𝗿𝗸?
Single sign-on (SSO) is an authentication process that allows a user to access multiple applications with a single login. This is accomplished using a central authentication server that stores the user's credentials
𝗧𝗼𝗽 𝟭𝟬 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 is the process of designing the structure and behavior of a software system, which includes making decisions about components, modules, interfaces, and the system's organization.
𝗠𝗼𝘀𝘁 𝗖𝗼𝗺𝗺𝗼𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗦𝘁𝘆𝗹𝗲𝘀
Software architecture styles are the foundational blueprints for constructing various software systems, ensuring they meet specific requirements and quality attributes.
By adhering to a suitable
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗔𝗣𝗜?
"Application Programming Interface," or API, refers to a communication channel between various software services. Applications that transmit requests and responses are called clients and servers, respectively. In the honey bee illustration 🐝, the flower
𝗧𝗼𝗽 𝟮𝟬 𝗦𝗤𝗟 𝗾𝘂𝗲𝗿𝘆 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝘁𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀
Here is the list of the top 20 SQL query optimization techniques I found noteworthy:
1. Create an index on huge tables (>1.000.000) rows
2. Use EXIST() instead of COUNT() to find an element in the
𝗔 𝗩𝗶𝘀𝘂𝗮𝗹 𝗚𝘂𝗶𝗱𝗲 𝗢𝗻 𝗛𝗼𝘄 𝗧𝗼 𝗖𝗵𝗼𝗼𝘀𝗲 𝗧𝗵𝗲 𝗥𝗶𝗴𝗵𝘁 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲
Choosing the right data store can be confusing with so many options around. This diagram shows a selection choice for a datastore based on a use case (𝗦𝗤𝗟 𝘃𝘀 𝗡𝗼𝗦𝗤𝗟).
Data can
𝗪𝗵𝘆 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗥𝗲𝗱𝗶𝘀?
Redis is an open-source, in-memory data structure store used as a cache in front of another database. It supports various data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, and
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗖𝗜/𝗖𝗗 𝗣𝗶𝗽𝗲𝗹𝗶𝗻𝗲?
CI and CD stand for 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗼𝘂𝘀 𝗜𝗻𝘁𝗲𝗴𝗿𝗮𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗼𝘂𝘀 𝗗𝗲𝗹𝗶𝘃𝗲𝗿𝘆. In the simplest terms possible, Continuous Integration (CI) is a technique where incremental code changes are reliably and
𝗪𝗵𝘆 𝗶𝘀 𝘁𝗵𝗲 𝗧𝘄𝗲𝗹𝘃𝗲-𝗙𝗮𝗰𝘁𝗼𝗿 𝗔𝗽𝗽 𝗶𝗺𝗽𝗼𝗿𝘁𝗮𝗻𝘁?
It explains many well-tested architectural patterns and best practices that can be applied to software-as-a-service (SaaS) apps. These recommended practices allow apps to be developed with resilience and
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘀𝗶𝗴𝗻 𝗥𝗲𝗱 𝗙𝗹𝗮𝗴𝘀
In his now-famous software design book, "𝗔 𝗣𝗵𝗶𝗹𝗼𝘀𝗼𝗽𝗵𝘆 𝗢𝗳 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘀𝗶𝗴𝗻," professor John Ousterhout from Stanford University explained the rationale behind many good and bad practices in software design
𝗕𝗼𝗼𝗸𝘀 𝗘𝘃𝗲𝗿𝘆 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 𝗠𝘂𝘀𝘁 𝗥𝗲𝗮𝗱 𝗶𝗻 𝟮𝟬𝟮𝟰.
You probably already noticed that I'm a big fan of reading. I usually read 3 to 4 books monthly (not all from tech). There are two ways to learn from knowledgeable people: to work directly
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗗𝗼𝗺𝗮𝗶𝗻-𝗗𝗿𝗶𝘃𝗲𝗻 𝗗𝗲𝘀𝗶𝗴𝗻?
Domain-Driven Design (DDD) is the approach to software development that enables us to translate complex problem domains into rich, expressive, and evolving software. It's how we design applications when the needs of our users
𝗪𝗵𝗶𝗰𝗵 𝗰𝗹𝗼𝘂𝗱 𝗽𝗿𝗼𝘃𝗶𝗱𝗲𝗿 𝘀𝗵𝗼𝘂𝗹𝗱 𝗯𝗲 𝘂𝘀𝗲𝗱 𝘄𝗵𝗲𝗻 𝗯𝘂𝗶𝗹𝗱𝗶𝗻𝗴 𝗮 𝗯𝗶𝗴 𝗱𝗮𝘁𝗮 𝘀𝗼𝗹𝘂𝘁𝗶𝗼𝗻?
The diagram below illustrates the detailed comparison of AWS, Google Cloud, and Microsoft Azure, created by Satish Chandra Gupta.
They all use
𝗪𝗵𝗮𝘁 𝗶𝘀 𝗗𝗮𝘁𝗮 𝗣𝗹𝗮𝘁𝗳𝗼𝗿𝗺?
Data Platform is an analysis platform, where by using it, you will be able to ingest your data, transform it and finally extract value out of it. Everything starts from different data sources, which you can connect with the connectors'
𝗗𝗼 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗔𝗹𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀?
The answer is no. Even though we have 23 design patterns, around 10 are mostly used in everyday development. Knowing which patterns exist overall is good, but you need to know these very well.
Design
𝗧𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀 𝘁𝗼 𝗜𝗺𝗽𝗹𝗲𝗺𝗲𝗻𝘁 𝗥𝗲𝗮𝗹-𝘁𝗶𝗺𝗲 𝗖𝗹𝗶𝗲𝗻𝘁-𝗦𝗲𝗿𝘃𝗲𝗿 𝗖𝗼𝗺𝗺𝘂𝗻𝗶𝗰𝗮𝘁𝗶𝗼𝗻
Long Polling, WebSockets, and Server-Sent Events (SSE) are different techniques to implement real-time communication between a client (typically a web browser) and
𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗮𝘀 𝗖𝗼𝗱𝗲
One of the essential ways of communicating our software architectures is to create different kinds of diagrams for stakeholders. When we talk about architectural diagrams, we have mainly two types:
🔹 𝗗𝗶𝗮𝗴𝗿𝗮𝗺𝘀 - about visually
𝗠𝗶𝗰𝗿𝗼𝘀𝗼𝗳𝘁 𝗔𝘇𝘂𝗿𝗲 𝗖𝗲𝗿𝘁𝗶𝗳𝗶𝗰𝗮𝘁𝗶𝗼𝗻𝘀 𝗠𝗮𝗽
If you're interested in Azure certifications, this map could be worthwhile.
Here is how to read this map:
📌 𝗙𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀 𝗟𝗶𝗻𝗲𝘀 (𝗥𝗲𝗱). These are typically the first step in the journey. It
𝗚𝗶𝘁 𝗠𝗲𝗿𝗴𝗲 𝘃𝘀 𝗥𝗲𝗯𝗮𝘀𝗲
One of the most powerful Git features is branching. Yet, while working with it, we must integrate changes from one branch into another, and the way to do this can be different.
We have two ways to do it:
𝟭. 𝗠𝗲𝗿𝗴𝗲
When you merge
𝗪𝗵𝗮𝘁 𝗜 𝗹𝗲𝗮𝗿𝗻𝗲𝗱 𝗳𝗿𝗼𝗺 𝘁𝗵𝗲 𝗯𝗼𝗼𝗸 "𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗮𝘁 𝗚𝗼𝗼𝗴𝗹𝗲"
The Software Engineering at Google book is not about programming, per se, but about the engineering practices utilized at Google to make their codebase sustainable and
𝗙𝗼𝗰𝘂𝘀 𝗼𝗻 𝗪𝗵𝗮𝘁 𝗬𝗼𝘂 𝗖𝗮𝗻 𝗖𝗼𝗻𝘁𝗿𝗼𝗹
In the tech world, things change fast. Leaders often face unexpected challenges, be it a sudden change in client needs, new market trends, or internal team issues. It's easy to feel overwhelmed, but a simple idea can help a
𝗪𝗵𝗮𝘁 𝗵𝗮𝗽𝗽𝗲𝗻𝘀 𝘄𝗵𝗲𝗻 𝘆𝗼𝘂 𝘁𝘆𝗽𝗲 𝗮 𝗨𝗥𝗟 𝗶𝗻𝘁𝗼 𝘆𝗼𝘂𝗿 𝗯𝗿𝗼𝘄𝘀𝗲𝗿?
The process involves the browser, your computer's operating system, your internet service provider, the server where you host the site, and the services running on that server.
𝟭.
𝗠𝗮𝗶𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗿𝗶𝗻𝗰𝗶𝗽𝗹𝗲𝘀 𝗬𝗼𝘂 𝗦𝗵𝗼𝘂𝗹𝗱 𝗞𝗻𝗼𝘄
Software design principles guide developers in creating efficient, scalable, and maintainable software. Here's a list of some of the most essential software design principles:
𝟭.
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿 != 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿
Software Engineer == Problem Solver
Don't attack problems with code. Try first to understand them from a business perspective and then a technical perspective. When you do this, make a plan for how to solve it.
Try to
𝗪𝗵𝘆 𝗔𝗺𝗮𝘇𝗼𝗻 𝗔𝗯𝗮𝗻𝗱𝗼𝗻𝗲𝗱 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗶𝗻 𝗙𝗮𝘃𝗼𝗿 𝗢𝗳 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵?
In the latest post (check in the comments), a team that works on Prime Video explained their approach to ensuring that customers receive high-quality