Mohammed Manssour

Software Architecture: What, Why & How

Software Engineering
Software Architecture: What, Why & How

Anyone can build a product that lasts a week, a month, or even a year. But if you want to build something that lasts for years, you need to think differently. If your product will be the foundation for other people's work, you need software architecture.

This brings us to an important question: what is software architecture?

What is Software Architecture?

Don't jump straight into coding when you start a project. First, understand what you need to build. Then design it properly. The design step happens between understanding your requirements and building the product. This is where software architecture comes in.

Software architecture is about designing your code with clear goals. You want code that is flexible, reusable, and easy to maintain. Your design should also be easy to understand. Both users and developers should be able to discuss it using common terms.

In simple terms, software architecture is doing the right things to build the right product in the right way. Building the product itself is software development.

Software engineering says you need architecture before development. This leads us to why hiring a software architect is important.

Why You Need Software Architecture

I have three facts that show why software architecture and architects are important.

Fact #1: Engineering is About Smart Choices

Engineering means building the right thing the right way. You want to use the least resources in the shortest time. In a perfect world, this would be easy. But we don't live in a perfect world. You have to make tradeoffs. Someone needs to make these decisions.

Fact #2: UML is Just One Tool

UML is a famous technique that helps with code design. Many software engineers think architecture is just about drawing UML diagrams. But that's not true. Software architecture includes UML but goes far beyond it. There's much more to do when designing the right code.

Fact #3: Design Approaches Keep Evolving

Design is so important in software engineering that many approaches have been developed over time. These approaches make the process easier and clearer.

The answer to why you need software architecture is simple. You need someone with the right expertise to choose the right approach. This person should understand the tradeoffs for your specific project.

In my opinion, a software architect makes sure decisions are made for the long run. They don't just solve today's problem. They think about the future.

How to Become a Software Architect

Here's my mini roadmap for becoming a good software architect. Please note that these books and courses are not the official path. This is just what I'm following.

Software Architecture Volume 1 & 2: These books are comprehensive. They won't give you everything you need, but they'll introduce you to the important concepts.

Patterns of Enterprise Application Architecture: This book is relatively old, but it has some important foundations. I think it's required reading for software architects.

Coursera Specializations

Coursera has three specializations that I recommend:

  1. Software Design and Architecture Specialization
  2. Secure Software Design Specialization
  3. Software Development Lifecycle

Learn Different Patterns

Read about different software patterns like microservices and Domain-Driven Design (DDD).

Important Note

These books will give you the knowledge you need to become a software architect. But you still need experience. That comes with time.

Until then, happy learning!

Crafted with love by Mohammed Manssour