webjs-tech / personal-development-plan

This repository helps to cover tech gaps
2 stars 0 forks source link

Database #23

Open Security2431 opened 11 months ago

Security2431 commented 11 months ago

Good to know:

Image

Image

Image

TODO:

Security2431 commented 10 months ago

How can you verify that your architecture is correct?

I've recently received this question from someone who reached out about career coaching and since I've received this question many times before - I thought I'd share some insights here.

Often, as software engineers and architects, we build systems in a certain way when there really are multiple ways to do so.

For example, you're building an SaaS customer management system with a bunch of externally facing APIs for third parties to plug into. You have a choice of how to structure your API, how to process requests on the backend, and what client-facing protocols to use.

Let's say you choose GraphQL (over HTTP) for the client-facing contract. Why GraphQL? Why not REST? Why over HTTP 1.1? Why not gRPC over HTTP 2?

You also selected a decoupled architecture on the backend by mimicking distributed transactions with an Outbox pattern, message brokering, and sagas. Why no 2-phase commit?

How do you verify that you made the right decisions? To make things harder - how do you do so without having previous experience? What if this is the first such system you are designing end to end?

⭕ Does experience help? Definitely ⭕ Does running it by others in your team help? Absolutely. ⭕ Reading use cases of similar applications online and reference architectures? Of course!

However, the key is to break your decision making process into granular and organized set of questions and to answer these questions independently.

⭕ What are the pros of each choice/technology/alternative? ⭕ What are the cons of each choice/technology/alternative? ⭕ What are the risks associated with each? ⭕ What is the cost associated? ⭕ Are there any long term implications? ⭕ What is the impact on the user? ⭕ What is the impact on your team? ⭕ What is the cost/benefit ratio of each option?

Asking all of that, documenting, and comparing between the different options across these dimensions will provide clarity and reassurance.

More importantly, going through with this exercise will expose some of the "unknown unknowns" because some of the answer will be - "I don't know". In that case, you'll know exactly which areas require you to seek the guidance from others.

Image

Security2431 commented 9 months ago

Image

Security2431 commented 9 months ago

How to learn sql: What is the best way to learn SQL? . . In 1986, SQL (Structured Query Language) became a standard. Over the next 40 years, it became the dominant language for relational database management systems. Reading the latest standard (ANSI SQL 2016) can be time-consuming. How can I learn it?

There are 5 components of the SQL language:

For a backend engineer, you may need to know most of it. As a data analyst, you may need to have a good understanding of DQL. Select the topics that are most relevant to you.

Over to you: What does this SQL statement do in PostgreSQL: “select payload->ids->0 from events”?

Image

Security2431 commented 4 months ago

image