Raul Junco Profile picture
Jul 7 9 tweets 3 min read Twitter logo Read on Twitter
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.

Follow me @RaulJuncoV if you like to hear more. 👊

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Raul Junco

Raul Junco Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @RaulJuncoV

Jul 5
Seasoned developers have a cheat sheet with common problems and their solutions; they secretly call it Design Patterns!

5 Patterns you need to know.
Factory Pattern
Object creation can get messy. The Factory pattern comes to the rescue!

It encapsulates object creation logic, providing a central place to create instances.

It promotes loose coupling and allows you to create objects without specifying their concrete classes.
Observer Pattern
Want to build event-driven systems? The Observer pattern is your friend.

It establishes a relationship between objects, where a subject maintains a list of dependents (observers) and notifies them of state changes.
Read 8 tweets
Jun 29
They asked me this question in a nerve-wracking interview, and I did not know the answer.

What's the difference between mutex and semaphore?
Mutexes and semaphores are synchronization mechanisms used in concurrent programming.

They are designed to coordinate access to shared resources and protect them from simultaneous access by multiple threads or processes.

However, there are some key differences between the two:
A mutex, short for mutual exclusion, is like a lock that safeguards shared resources.

It ensures that only one thread or process can access the resource at any given time.

It provides mutual exclusion, preventing data inconsistency and race conditions.
Read 10 tweets
Jun 26
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.
Read 7 tweets
Jun 23
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.

More 👇
Read 13 tweets
Jun 22
Data management is the core of 99% of software!

And yet people try to use the wrong persistence mechanism to solve the wrong problem.

5 building blocks every software engineer must know to manage data correctly.
1. Databases

It is the simplest way if you need to store data that your application or a different application will read/update/delete later.

There are different flavors; you can pick between:
- SQL
- NoSQL
- NewSQL
- In-memory
- Time-series
- Spatial
- Graph
2. Cache

Caching involves storing the results of expensive operations in a fast-access storage system.

Caches improve application performance by allowing reads to be served from the cache.

Some of them:
- Redis
- Memcached
- Apache Ignite
Read 10 tweets
Jun 20
It’s not the diagramming tool; it’s the visual thinking that matters.

5 diagrams you must know and when to use them.
1. Flow diagrams
They are the starting point for any architect.

They map out the steps in a process or system and provide a high-level view. Useful for identifying bottlenecks and opportunities for improvement.

When? Generally technical, architecture board.
2. Persona diagrams
Focus on the actors in a particular workflow.

They're useful for showing how different personas interact with the system and help prove that the architecture solves the business problem.

When? Business individuals and POs.
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(