I originally posted this on LinkedIn / BlueSky but I've found that it's nearly impossible to find (searching for "AI is the new offshoring" or "genAI is the new offshoring" both fail to find it) so I'm cross-posting here and adding a bit more context. Twenty years ago, the internet and improved communications led to a massive push in US corporate enterprises to outsource IT and dev efforts to far…
Keep Reading →
Generative AI tools have greatly improved in their ability to generate large amounts of code, quickly, to support software development tasks. They're fast, confident, and in some cases even creative. But they're also fallible, occasionally destructive, and always somewhat unpredictable. If you've ever used GenAI to bang out a prototype in hours instead of days, you've seen the upside. If you've…
Keep Reading →
A new major version of the Ardalis Specification library has been released. This library is used to create and compose specifications for querying data from repositories. It's a key part of the Ardalis Clean Architecture libraries and is used in many applications to help simplify querying logic and make it more testable. If your application suffers from LINQ pollution, with query logic spread…
Keep Reading →
Better late than never, as I'm writing this in late February 2025... First, here's a few links to past years in review: My 2017 Year in Review My 2018 Year in Review My 2019 Year in Review My 2020 Year in Review My 2021 Year in Review My 2022 Year in Review My 2022 Year in Review My Year in Review Post Checklist Now on to the various categories... Blogging ✍️ Blogging continues its slide into…
Keep Reading →
A developer manager recently reached out with a concern: their new QA team member was finding too many bugs, leading to frustration among developers. Overall velocity of the dev team (in terms of features being shipped) was rapidly falling. The question was, how can they reduce the number of issues being kicked back from QA without discouraging the testers from doing their job well? QA Isn't the…
Keep Reading →
This post is part of the C# Advent Calendar 2024 - check out all of the C# articles from this year! C# events are a powerful feature of the language, providing a simple mechanism for building publish-subscribe communication patterns. However, when used in ASP.NET Core applications, events can lead to subtle, hard-to-diagnose issues that can harm the reliability and scalability of your application…
Keep Reading →
When working with software development, especially in object-oriented or component-based systems, understanding the distinction between interfaces and implementations is crucial. The two terms often come up in conversations about architecture, design patterns, and coding best practices, but what do they really mean? In this post, we'll break down the difference and why it matters. YouTube What is…
Keep Reading →
As a software developer, you might spend most of your time immersed in code, solving problems, and building innovative solutions. But have you ever considered starting a blog? If you haven't, let me give you some compelling reasons why you should. This is advice I frequently give to members of my developer group coaching program at devBetter.com. Watch the Video 1. Sharpen Your Skills One of the…
Keep Reading →
What do you do when you find yourself in microservice hell? How do you keep the gains you (hopefully) made in breaking up your legacy ball of mud, without having to constantly contend with a massively distributed system? Migrate to a modular monolith. Microservices Microservices have been all the rage for the past several years. They offer a way to break up large, monolithic applications into…
Keep Reading →
One of the key challenges in developing a modular monolith is managing the communication between different modules, especially when it comes to handling data dependencies across module boundaries. Recently, I received an interesting question from one of the students of my modular monoliths course, which I thought others might appreciate. Student Query Modular Monolith course question (EFCore…
Keep Reading →