The right tools will depend on the problem you are looking to solve. Now that you have your problem clearly defined it is time to look for existing solutions. Often times the problem you are looking to solve is already solved, in some way at least. As you search the web for solutions keep your problem in mind. Each technology will have its trade-offs, but because you can refer to your user stories, it will be easy to see which of these tradeoffs you can accept.
The best technologies make tradeoffs in areas that are irrelevant to your use case. For example, by using a modern operating system you make the trade-off that you cannot specify exactly where in memory you are going to store your data easily. Of course, this is irrelevant to you because all you want to do is watch videos on the internet and chat with your friends. Choosing a tech stack that you will use to solve your user's problem is the same. With each technology examine tradeoffs between
Performance + Scalability (how fast does the tool run)
Developer Experience (how simple, fast, and safe is the tool to use)
Security (how secure is the tool)
Cost (how expensive is the tool to use)
Interoperability (does this tool make it easy to connect to other technologies)
Below are some common tools for some common needs:
React + NextJS (NextJS lets you statically generate and SSR React)
Angular (starting to be eclipsed by React and NextJS)
When building software, the engineer needs somewhere to put everything together. They need a workbench. Usually, the engineer will have a computer or a laptop that is called their Local Environment. Eventually, the system they are building will run on far more powerful computers called the Production Environment. But for now, they will build the system locally. There are several tools that are helpful for local development.
VS Code (allows you to edit code, and input commands via an integrated terminal)
Docker (allows you to run a variety of images for things like databases, and slim operating systems in portable containers, in other words, it doesn't matter if you're on a Mac, PC, Linux machine)
Since our brains hold a finite amount of data, we rely on computers to store information on our behalf. You can find copies of these technologies that you can run on your own computer or on a cloud provider like AWS.
MySql (an open source SQL database)
Redis (in-memory database good for messages)
AWS S3 (a cost-effective way to store any file type of any size)
Locally, you can run your backend using node directly on your computer but most use cases require more performance to handle many users. In this case, you will deploy (upload) your code to a cloud provider (a company that rents you computers). Below is a list of a few providers that we use:
AWS Lambda functions (allows you to run code at near unlimited scale)
AWS EC2 (rent a powerful computer from Amazon)
Just as with databases, researchers have spent a huge amount of time, energy, and money that we can leverage to the advantage of our users. Instead of writing a NN from scratch, you can leverage the following libraries written in Python.