16 of my favorite software architecture resources for .NET developers


When starting out as a developer, you are not expected to do much other than write code and complete tasks.

But as you progress in your career, you will get a chance to:

  • Be involved in making decisions that impact the whole application architecture.
  • Design and implement a whole feature within the app.
  • Create a brand-new solution from scratch.

To be able to do that, you need to learn from:

  • Experience - Doing is the best way to learn.
  • Practice - Complete side projects or practice katas (more on this at the end).
  • Code examples - Learn from articles with code examples or GitHub repositories.
  • Books - There are thousands of developers who experienced the problems you have right now. Luckily, a few of them have written a book about the solutions.

The most important thing to become better at anything is experience.

The same is true for software architecture.

I can’t give you the experience you need throughout this email.

But what I can give you is a collection of books, code examples, and ways to practice.

So you get better at software architecture.

Let’s dive into resources.

Books

“Sleep is good, he said, and books are better.”

- George R. R. Martin

Here are some software architecture books that you will find helpful:

  1. Software Architecture for Developers - In an easy-to-read manner, it explains what is the role of a software architect in a team and how it differs from a software developer.
  2. Head First Software Architecture - If you have read other Head First books, you’ll love this one. It’s full of illustrations, images, and exercises.
  3. Fundamentals of Software Architecture: An Engineering Approach​ - The focus is on architectural principles that are language/framework agnostic.
  4. ​Software Architecture: The Hard Parts​ - This is a sequence to the previous book. The authors cover the parts that are left out from the first book.
  5. System Design Interview – An insider's guide​ - It explains in a practical way how to design large systems and what to consider in terms of requirements. Covers how to design popular services, such as YouTube, Google Drive, URL Shortener, and Notification system. Fun fact: I used this as one of the resources to design a notification system in one of the previous projects.
  6. System Design Interview – An Insider's Guide: Volume 2 - Second part of the system design interview questions. It covers some more scenarios.
  7. Designing Data-Intensive Applications​ - I haven’t read it yet. But from what I read all over the internet, this is a Bible for backend developers. Many people claim it’s the best book to read to become a better backend developer.

Code Examples (GitHub Repositories)

Some people collect watches. Some people collect NFTs.

I collect useful GitHub repositories for .NET developers.

If you want to improve your architecture skills, here are 7 you're gonna love:

  1. Evolutionary architecture by example - It shows how to evolve an application from a simple solution to advanced microservices.
  2. Modular monolith application with DDD - Full modular monolith application with Domain Driven Design approach.
  3. .NET 8 starter kit with multitenancy support - .NET 8 Starter Kit (Web API + Blazor Client) with Multitenancy Support.
  4. eCommerce microservice .NET application - a microservices .NET application implementing an eCommerce site.
  5. Vertical slice architecture example - Sample application showing how to implement vertical slice architecture.
  6. Clean architecture template for .NET apps - Clean architecture solution template for ASP.NET Core.
  7. Hexagonal application example - Combines clean and hexagonal architecture to implement a sample application. I haven’t investigated in depth, but this could be my favorite pick from what I have seen.

Practice

You need to practice in real-world scenarios to improve system design and software architecture.

But what can you do when you don’t have a chance to do it at work?

You can use Software Architecture katas. Katas are software development exercises that help developers improve their skills through practice and repetition.

The site contains a list of many application scenarios that you need to design.

Another great resource is KataLog, a collection of katas solved by winners and finalists from the O'Reilly Software Architecture Kata competition.

Now, you might have some questions after reading this.

If one of the below is your question, click on the link and let me know.

I can expand on the topic in one of the future newsletters.

If you have other questions, hit reply and let me know.

Enjoy your weekend.

Kristijan

P.S. I would love to hear from you. If you enjoy the emails, please let me know here. Thanks!

Kristijan Kralj

Weekly newsletter packed with code-improving tips, tools, and strategies to become a better .NET developer.

Read more from Kristijan Kralj

Lately, I’ve been paying more attention to what’s happening in the AI space. Maybe because of all the hype that surrounds it. Maybe because of the anxiety of whether AI will take my software development job. That's why I’ve decided to spend some spare time during the Xmas holiday to explore the state of AI software development tools. This email combines: My 1+ years of experience using a paid version of GitHub Copilot. 5+ hours of YouTube videos I’ve consumed in the last 2 weeks. So, let’s...

Today's issue is brought to you by the C# 13 and .NET 9 – Modern Cross-Platform Development Fundamentals. Build confidence in creating professional and high-performance web applications using the latest technologies in C# 13 and .NET 9 by Mark Price. Find out more here: C# 13 and .NET 9 Yesterday, We had a company Xmas party. Before dinner at a restaurant, we went to the escape room event. If you are unfamiliar with escape rooms, they're interactive puzzle experiences where you and your...

2 weeks ago, .NET 9 was released. If you haven’t had time to read the official release docs, don’t worry. I spent 1 hour investigating what's new in .NET 9. So you don't have to. Here are the top 10 improvements for C#, ASP.NET Core, and EF Core. 1. LINQ Index LINQ has always been an extremely useful tool for .NET developers. However, with .NET 9, LINQ comes with 3 new methods. Let's begin with the LINQ Index. The Index method places every collection element against its position within that...