Learning software architecture

Serious-looking blue bird at a chalk board with some gibberish.

How can you grow in your career as a software engineer? One way is strengthening your technical background and learning software architecture. Software architecture is about designing and building systems. For example, imagine building a site like Netflix or Facebook from scratch.

Software architecture can be daunting. There are lots of components and concepts to understand. In this post, I'll break down how to learn software architecture so it's clearer and more approachable.

To start, it's okay to be confused about architecture. Your level of understanding will increase as you progress in your career. When I was in college, I took a web programming course, and they explained how to build a website. It was my first time learning about web technologies, and it didn't make that much sense. As I got my hands dirty and built my own websites, I got a better sense of how things worked and fit together.

To learn how to build a big system, start small. As you grow more experienced, you'll work on larger and larger projects. Before working on software architecture, it's helpful to first make smaller changes. This helps you understand individual components in more detail and develop your technical skills. For example:

  1. A starter task is a friendly introduction to a codebase. You may change the color of a button or tweak some text on a page.
  2. The next step up is building a small piece of functionality. This helps you understand a component in more detail. You may build a signup form or add the logic for creating new users.
  3. Owning a project end to end helps you understand how pieces fit together. Instead of working on pieces of the signup flow, you may own the whole project from start to finish.

Owning a project teaches you a lot.

Many software architecture concepts are more obvious when you work at a company. For example:

Reading helps fill in gaps in your knowledge and learn concepts in more depth. Technical reading feels different from reading for fun. It's brain-intensive and slow-going. While reading a technical book, I find it helpful to take notes. For instance, after you read a paragraph, try to summarize it in your own words. That helps you check your understanding and prevents you from zoning off.

Two books I recommend are:

To improve accountability, you can start a book club. Unlike a recreational book club, you'll want more frequent check-ins. For instance, you can read a chapter (or part of a chapter) every week or two.

Learning software architecture takes time and patience. Through working, owning projects, and technical reading, you can learn the skill bit by bit. This will help you decode buzzwords, design systems, and ultimately expand your influence as a software engineer.