Start Here
New to Optimal Coder? These articles cover the topics I write about most: ASP.NET Core APIs, software architecture, and AI-assisted software engineering.
Build Production APIs in .NET (Beginner → Advanced)
Learn how to build production-ready Web APIs with proper architecture, dependency injection, logging, exception handling, and versioning.
AI & Modern Software Engineering
Exploring how AI is changing software development, engineering practices, and developer productivity.
Clean Architecture in Real Systems
Practical approaches in C# to designing maintainable systems and writing software that can evolve over time.
More posts ...
Vibe Coding Traps and Delusions
For a long time, I am thinking about writing something on this topic, but since I was not sure about my thoughts and how to formulate them, I kept silent. The last few months things are getting clearer in my mind, so here I am to express my opinion on current AI development and its influence on software engineering industry and everyday tasks of one developer.I am writing this post in hope that my experience of more than one year actively using LLMs and agents in coding could help someone who is struggling with the entire idea behind. →
Why Soft Skills and Body Language Matter for Software Developers
When we think of software developers, we often imagine them focused only on the (messy) code. But in an usual collaborative work environment, technical skills alone are not enough. Body language does significantly influence how you are perceived, how you connect with your team, and how effectively you convey your ideas.We will try here in a few points to summarize why body language is important for developers and what we should pay attention to: →
ASP.NET Core Request Lifecycle Explained: From HTTP Request to Response
When you send a request to a .NET Core Web API, it goes thru series of steps before a response is returned. Understanding this lifecycle is important in order to built what we need and how to use some of the prebuild functionalities. In this post, we’ll break down the main steps of the .NET Core Web API request lifecycle. →
Premature Optimization in Software Development: Examples, Risks, and Best Practices
In software development, performance matters, but chasing it too early can lead you into dangerous territory. This is the pitfall of premature optimization, a term that has become a cautionary mantra among developers. As said by Donald Knuth, the phrase “premature optimization is the root of all evil” is not just a quip, it’s a hard-earned lesson from decades of building complex systems. →
Design Patterns: Adapter
The Adapter Pattern is a structural design pattern that allows objects with incompatible interfaces to work together. Rather than modifying existing code to fit a new system, the Adapter Pattern lets us wrap it with a new interface, acting as a bridge between mismatched parts of your application. →
ASP.NET Core Web API Versioning and Testing
In the previous post, we have paid attention on our project structure and organizing the code in multiple layers to achieve better readability and easier maintanence in the future. Now we can focus on long-term sustainability through versioning and testing. →
ASP.NET Core Web API Architecture: Service and Repository Pattern Best Practices
In the previous post, we added global error handling and logging using NLog. Now that we’ve made our API more resilient, it’s time to go forwards with cleaning up the architecture and separate concerns. →
Global Exception Handling and Logging in ASP.NET Core Web API with NLog
In the previous post, we set up a basic .NET 9 Web API project. Now it’s time to take things further by adding global error handling and logging to make our API more robust. →
ASP.NET Core Web API Setup with FluentMigrator: Complete Beginner Guide
Welcome to the first post in the “.NET Core Web API – Step-by-Step Best Practices” series. In this series, we’ll walk through building a modern, clean, and maintainable Web API using .NET 9. Each post will focus on a specific aspect—from project setup and architecture to testing, migrations, and deployment. →
State Machines in C#: Complete Guide with Practical Examples
State machines might sound like a complex topic, but at their core, they’re just a way to manage different states in a system and control how things transition from one state to another. →
