Ten years ago, you only needed to know GoF patterns, and you could call yourself a good developer.
That's not true anymore. If you want to build Hight Quality software, you need architectural knowledge.
4 basic architecture to start.
N-Layered Architecture
This architecture organizes applications into horizontal layers, each responsible for specific tasks.
- Presentation
- Business logic
- Data access
These layers promote separation of concerns and modularity.
Hexagonal Architecture
Also known as Ports and Adapters, Hexagonal Architecture isolates the core application from external dependencies.
The core defines ports/interfaces, while adapters implement them.
This architecture promotes flexibility and testability by decoupling the application from frameworks and technologies.
Onion Architecture
Building on the principles of Hexagonal Architecture, Onion Architecture establishes a clear separation between the core/domain and infrastructure.
Layers wrap around the core, with the inner layers representing abstract business concerns and the outer layers dealing with technical details and frameworks.
Clean Architecture
Proposed by Uncle Bob, Clean Architecture emphasizes the separation of concerns and the independence of business rules from external frameworks.
A clear boundary between layers ensures scalability, maintainability, and alignment with the project's needs.
These architectures provide different approaches to designing software systems, each with strengths and weaknesses.
But ultimately, the choice of architecture depends on your project's specific requirements!
Have you used any of these?
Every week I write about my experiences and challenges as Software Engineer.
Tweets and threads break down complex tech into simple terms.
99% of Software developers think simplifying their system is about building less functionality.
They are wrong; making your system simpler is about reducing accidental complexity.
3 techniques to reduce Complexity!
Accidental Complexity refers to the unnecessary complexities that occur during the development process but are not inherent to the problem being solved.
What are those?
- Complicated design
- Redundant features
- Convoluted implementation choices
This is how you solve it.
1. Modularization
Breaking down a complex system into smaller, manageable modules can greatly reduce Complexity.
Each module focuses on a specific task, making it easier to understand and maintain.
Get complexity is isolated and made more manageable.
RESTful APIs are the backbone of modern web development.
A CheatSheet For Junior Software Engineers.
HTTP Methods/Verbs:
- GET retrieves a resource
- POST creates a new resource
- PUT updates an existing resource
- PATCH updates part of a resource
- DELETE removes a resource
Status Codes:
- 200 OK: Successful GET request.
- 201 Created: Successful POST request, a resource created.
- 204 No Content: Successful DELETE request, no response body.
- 400 Bad Request: Invalid request data or parameters.