Posts

Showing posts from May, 2025

The Elephant in the Room: AI, Developers, and Adaptability

Image
As the software development industry stands on the brink of an AI-driven transformation, there’s a question no one wants to talk openly about: What happens to developers who cannot—or will not—adapt to AI-generated code? Historically, technological shifts haven't been gentle to those who resist change. AI code generation is not just another trend; it's reshaping foundational assumptions about how software is built, maintained, and scaled. The skillsets developers have relied on for decades—meticulous hand-coding, complex debugging, and manual refactoring—are quickly becoming augmented, if not outright automated, by increasingly intelligent AI systems. Three Likely Outcomes for Developers Who Resist Adapting to AI: 1. Marginalization and Reduced Opportunities Developers who don't incorporate AI-assisted workflows into their process will find their roles shrinking. AI significantly enhances productivity, speed, and consistency. Organizations naturally gravitate toward e...

Scrum in the Era of Agentic Software Development

Image
 Agentic coding, where AI-driven agents autonomously write, test, debug, and refactor code, represents a significant shift that could substantially impact traditional Scrum practices. Far from a distant possibility, agentic coding is already being demonstrated today. For instance, GitHub Copilot can manage entire coding workflows autonomously: Create a dedicated branch. Analyze the existing codebase and the reported issue. Develop and apply a solution. Test the solution comprehensively. Generate new unit tests. Execute all unit tests. Create a Pull Request (PR). Validate the implemented fix. Assign the PR back to a human reviewer. For developers, this represents a significant shift. For software managers, it introduces both substantial opportunities and challenges. Scrum processes, in particular, will experience significant adaptation as AI becomes integral to software development. Impacts of Agentic Coding on Scrum Practices: Scrum Framework Impact ...

Vertical Slice Architecture: A Game-Changer for Modern Blazor Applications

Image
  Introduction As a senior C# developer and solution architect, I've explored numerous architectural patterns throughout my career. Today, I want to share insights on a pattern that has fundamentally transformed how I structure Blazor applications: Vertical Slice Architecture (VSA). Traditional layered architectures organize code according to technical concerns—controllers, services, repositories, models. This approach has served us well for decades, but as applications grow in complexity, this horizontal organization can create significant cognitive overhead. Enter Vertical Slice Architecture—an approach that organizes code around features rather than technical layers. The Problem with Traditional Layered Architecture Most of us are familiar with the standard n-tier approach: YourApp/ ├── Controllers/ ├── Services/ ├── Repositories/ ├── Models/ └── ViewModels/ While this organization seems logical at first glance, it creates several challenges: Feature Fragmentation : Work...

Organizing Service Registrations in ASP.NET Core Applications

Image
As ASP.NET Core applications grow, the list of registered services in your Program.cs or Startup.cs file can quickly become unwieldy. A mature enterprise application might easily have dozens or even hundreds of service registrations, making the code difficult to maintain and understand. The Problem: Service Registration Bloat Consider this common scenario in many enterprise applications: You open your Program.cs file and see a wall of service registrations that looks something like this: builder.Services.AddScoped<IAnalyticsService, AnalyticsService>(); builder.Services.AddScoped<ICacheService, CacheService>(); builder.Services.AddScoped<IDashboardService, DashboardService>(); builder.Services.AddScoped<ReportingService>(); builder.Services.AddScoped<IReportingService, ReportingService>(); // ... 30+ more service registrations This approach has several problems: Poor readability and maintainability Difficult to understand which services belong togethe...