Software Architecture Fundamentals -01




No I'm not a Software Architect to talk about the fundamentals. I'm just a Software Engineer who has almost 8 years of experience in developing scalable applications. I'm also learning the key fundamentals of Software Architecture.

Reference : 
https://www.linkedin.com/learning/software-architecture-foundations/what-is-software-architecture

This blog series is where I summarize my knowledge I gain from the above mentioned course. 

Why Software Architecture is important? 


Software Architecture provide structured approach to design systems.

Below are the main key points building a good architecture is important. 

  • Scalability: Good architecture ensures that your system can handle growth in users, data, and transactions.
  • Agility: It helps your team develop and adapt more quickly to changes, making it easier to implement new features and fix issues.
  • Maintainability: A well-architected system is easier to maintain, reducing the time and cost of making changes.
  • Quality: It helps in building robust and reliable applications by addressing potential issues early in the design process.

    But first, what is Software Architecture. 

    🏗️ What Is Software Architecture?

    When people hear "software architecture," they often imagine someone just connecting different tools or components. But it’s much deeper than that. Think of software architecture like designing a building, not putting in every nail, but deciding what the whole structure looks like.


    👷 Architect vs. Programmer: What's the Difference?

    • Architect: Designs the overall system.

    • Programmer: Fills in the technical details, writes the actual code.

    A software architect doesn’t write every line of code. Instead, they think about how the whole system fits together, just like how a building architect doesn’t lay the bricks but decides where the rooms and walls go.


    🧱 It's Not Just Plugging in LEGO Blocks

    Some people think software architecture is just about combining existing tools and components, like snapping together LEGO blocks. That’s a mistake.

    While it’s true you should reuse what you can (no point reinventing the wheel), real architecture is about structure, not just assembly.


    🧩 Example: Why LEGO Block Thinking Falls Short

    Imagine you’re building a house. You don’t design the whole building around a pre-made door or window. You figure out the house’s layout first, then choose doors and windows that fit.

    In software:

    • A database is like a pre-fab window.

    • You don’t design the whole app around it.

    • Instead, you decide what the system needs first, then pick tools that fit.


    🧠 Architecture Starts with the Customer

    Good architecture doesn’t begin with a programming language or a specific tool. It starts with understanding what problem you're trying to solve.

    🏡 Example: Designing a Home for the Way You Live

    If you’re designing a house for someone who loves cooking:

    • You make the kitchen the center.

    • Place appliances for easy access.

    • Adjust counter height to match the user.

    Same goes for software:

    • You tailor the system to the user's needs and how they work.

    • It’s all about making the system efficient, useful, and enjoyable.


    🎨 It’s About Structure and Aesthetics

    Great architecture isn’t just functional, it’s also elegant. Clean, well-structured systems are easier to understand, maintain, and extend.

    🧑‍🎨 Example: The Beauty in Simplicity

    Just like a beautiful house isn’t just walls and windows but how they flow together, a great software system feels “right.” That sense of balance takes years of programming experience to develop.





Comments

Popular posts from this blog

SQL Query and performance tuning - Indexing in depth

Apache Kafka - The basics

Spring: How to deal with circular dependencies