Agile: An iterative and incremental approach that prioritizes flexibility and collaboration. Teams work in sprints, which are short development cycles, allowing for quick adjustments based on feedback.
Scrum: A framework within the Agile methodology that organizes work into sprints, with defined roles (Scrum Master, Product Owner, and the development team)
and events like daily stand-ups and sprint reviews.
2. Architectural Principles
SOLID
A series of design principles aimed at making systems more understandable and easier to maintain. It includes principles like Single Responsibility, Open/Closed, and Liskov Substitution.
Domain-Driven Design (DDD)
An approach that focuses on collaboration between domain experts and developers to create models that reflect business complexity. It includes concepts like subdomains, bounded contexts, entities, value objects, aggregates, repositories, services, domain events, and factories.
Microservices
An architecture that divides applications into small, independent services, each implementing a specific functionality. This allows for scalability, ease of maintenance, and the ability to use different technologies for each service.
3. Frameworks and Technologies
Engineering Techniques
TDD (Test-Driven Development): is a software development practice that emphasizes creating automated tests before implementing the code. The process involves three main steps: writing a test that defines a new functionality (which will initially fail), implementing the necessary code to pass that test, and then refactoring the code to improve its structure without changing its behavior. This approach helps ensure that the code meets the specified requirements, improves software quality, and facilitates long-term maintenance, promoting a more test-oriented development culture.
Protocols
HTTP: HTTP (Hypertext Transfer Protocol) is a communication protocol used on the web for transferring information between clients (like browsers) and servers. It operates on a client-server model, where clients make requests using methods like GET, POST, PUT, and DELETE. HTTP is a stateless protocol, meaning each request is independent, and its secure version, HTTPS, uses encryption to protect communication. Additionally, HTTP messages can include headers that provide additional information about the request or response, playing a fundamental role in the operation of web applications and APIs.
Frontend
Next.js: A framework for React that enables server-side rendering (SSR) and static site generation, facilitating the construction of fast and optimized user interfaces.
React: A JavaScript library for building user interfaces, allowing the creation of reusable components and efficient management of the application's state.
Backend
Spring Boot: A Java framework that simplifies the configuration and development of applications, allowing for the rapid creation of robust and scalable services.
Express: A minimalist framework for Node.js that facilitates the creation of web applications and APIs, providing a flexible set of features.
FastAPI: A modern framework for building APIs with Python, offering high performance and support for automatic data validation.
4. Development Tools
Docker
A platform that allows the creation, deployment, and execution of applications in containers. This ensures that applications run consistently across different environments, from development to production.
Maven
A project management tool for Java that facilitates the building, dependency management, and overall management of projects. Maven uses a POM (Project Object Model) file to describe the project's structure and its dependencies.
npm
The default package manager for Node.js, which allows the installation and management of libraries and dependencies needed for JavaScript projects.
Jest
A JavaScript testing framework that focuses on simplicity and efficiency, allowing for easy and fast unit and integration testing.