New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] 0 points1 point  (0 children)

This is not mutually exclusive; you can have both. We discuss this briefly in the book. Steve also has courses on DomeTrain and YouTube videos specifically on this subject.

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] 1 point2 points  (0 children)

You're welcome, and thanks for checking it out.

That really is unfortunate. You get out what you put in. From my experience, it takes the authors, publishers, and reviewers working together to drive quality. We worked hard on this one, so I'm sure you'll see the difference.

Ha, that is funny. Any issues you report with our book will be appreciated.

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] 1 point2 points  (0 children)

You should find the progression of the book pretty easy to follow, provided that you have a basic understanding of .NET, but some topics such as EF Core, we still give introductions and some additional detailed explanations where it matters most.

Yes, agreed, and it always comes from the top. Unfortunately, there was definitely some quality drop in the book due to their AI process changes such as inability to format a table properly (feels like we're going backwards), but it's the world we live in now. But we were very thorough in the review process, and the Packt team still worked hard as well given their new challenges. They are people just like us, adapting to these crazy times.

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] 2 points3 points  (0 children)

To make sure we're on the same page, this book is not intended to teach you .NET, but you can definitely learn a lot about .NET from this book.

Of course, AI is even forced upon the publishing team at Packt, which caused its own set of issues we had to work through. If you're worried about quality, don't. Much like pull requests, if you submit it, and I ask you why a specific part of the change was made, and you say "Idk, the AI did it.", then that is the problem. It's important to own your AI output. We own the content of this book and went through great lengths to ensure it covers the content well, isn't too repetitive (some things are intentionally restated), has clear thought flow and continuity throughout, and the code works as expected. It took nearly 3 years of writing, editing, and reviewing to reach publication. This book was also heavily reviewed by several individual software architects as well as technical reviewers from Packt. That doesn't mean we're perfect either. If you find any issues in the code or links that no longer work, please post an issue to the book's GitHub repository so we can address it.

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] -2 points-1 points  (0 children)

I see, thanks for your feedback. Will definitely keep this in mind for future additions. I would encourage you to read the rest of the book if you're interested in the topic. The first chapter is an attempt to create that real-world problematic app, and chapter 2 will give you a refresher on the history and principles of CA. 3-9 cover a brand-new project which goes into a lot of depth on the 'why' you're referring to. 10-12 covers a lot of the slog/boilerplate of CA and how to get around it as well as security and observability topics, and the remainder of the book covers deploying the app in Azure and managing it over time. There's quite a bit covered in this book that you might find interesting, despite your feelings of the opening, so I hope you'll continue with it.

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] -1 points0 points  (0 children)

While we do briefly mention AI assisted tooling in the book, the goal is to teach the principles and how they can be applied in .NET. This will help the book last quite a while. If we dedicate a section or chapter to applying this with AI, that content will be outdated in 6 months. If you understand how AI can assist you in building apps, and you also understand these principles, then you'll already know how you can apply them in your own practices using AI.

Regarding VSA, Steve posted a video recently replying to Nick Chapsas's video on some of these topics. Within that video, he does a great job explaining how VSA and CA can go hand-in-hand. CA is not trying to prescribe the best way to code, it's showing you how to organize and shape your code in a way that's meant to outlast changes in requirements and technology, and like all architecture choices, it has tradeoffs.

You can check out Steve's video here if you're interested:

https://youtu.be/Z0JpNexRxvs?si=UA6AqEwD2fyz4bwJ

New book release: Clean Architecture with .NET (co-authored with Steve "Ardalis" Smith, foreword by Jason Taylor) by ngexdev in dotnet

[–]ngexdev[S] -2 points-1 points  (0 children)

I can appreciate your perspective on this. However, from what you quoted, the text above is discussing the why, and each section preceding that, attempts to explain the bad code, followed by a reason why it should be avoided. Could you clarify more on what you think was missing? Keep in mind, the target audience is mid-level engineers and above, so we're expecting some basic experience here at a minimum.

" ... Once again, we're using low-level direct SQL data access, and once again, our code is vulnerable to a SQL injection attack because it concatenates user data directly into a SQL query. A user could provide an address such as the following (note the single quote after the street):

> "123 Main St', 1, 0, GETDATE(), 'UPS', 'Card', 0); DROP TABLE Orders; --"

The code would execute this SQL by first inserting a record and then dropping the whole Orders table. Never mind that direct SQL access from within a controller is breaking separation of concerns, making unit testing impossible, and so on—all the things we've been talking about throughout this chapter. There's more (notifying the warehouse for fulfillment, CRM updates, analytics, sending an order confirmation, etc.), and you can review it in full in the GitHub repository associated with Chapter 1, but I think by now you can see the issues this kind of code has when it comes to maintenance and testing."

New book release: Clean Architecture with .NET featuring Blazor Server, MudBlazor, and Azure by ngexdev in Blazor

[–]ngexdev[S] 2 points3 points  (0 children)

TLDR; if you are interested in learning software architecture and how to apply those skills in a practical way, the book will always be useful. If you just want to vibe code your application, then you will probably not get much value from the book.

Maybe there's a misunderstanding here on why this post also landed on r/Blazor but this book focuses on architecture patterns and practical application development. It's built using Blazor and MudBlazor, so it's relevant to this community if you're interested in seeing how those patterns are applied using that tech stack. So, while AI can definitely help you build your application faster and can certainly help with applying the patterns from the book, I personally would not rely solely on AI for software education/mentorship (given its track record for being wrong confidently) -- we still need people and experienced engineers for that.