Start simple. Ship fast. Get feedback.
Then evolve.
This repo shows how:
github.com/evolutionary...
Simple scales. Complexity fails.
Start simple. Ship fast. Get feedback.
Then evolve.
This repo shows how:
github.com/evolutionary...
Simple scales. Complexity fails.
Debugging hell.
13+ years in .NET, and I keep seeing this pattern:
Teams add layers to solve problems they don’t have.
Change one rule = go 5 layers deep.
Fix a bug = 7 files open.
Good abstractions hide complexity.
Bad ones ARE the complexity.
Debugging hell.
13+ years in .NET, and I keep seeing this pattern:
Teams add layers to solve problems they don’t have.
Change one rule = go 5 layers deep.
Fix a bug = 7 files open.
Good abstractions hide complexity.
Bad ones ARE the complexity.
Want to avoid painful bugs, security holes, and spaghetti code?
Here are 10 silent killers I see over and over - even in "enterprise" apps:
#dotnet
Want to avoid painful bugs, security holes, and spaghetti code?
Here are 10 silent killers I see over and over - even in "enterprise" apps:
#dotnet
But they add pain early on:
– Debugging hell
– Infra overhead
– CI/CD complexity
Most apps don't need that upfront.
Start with (modular) monolith:
Clean boundaries, fast loops, easier debugging.
It's a launchpad. Not legacy.
#dotnet
But they add pain early on:
– Debugging hell
– Infra overhead
– CI/CD complexity
Most apps don't need that upfront.
Start with (modular) monolith:
Clean boundaries, fast loops, easier debugging.
It's a launchpad. Not legacy.
#dotnet
But it makes debugging 10x easier.
Instead of {Namespace.ObjectName}, you can show:
Order ORD-2025-001: Alice Smith - 249.99
The trick?
Add [DebuggerDisplay] to your class.
Next time you're confused in the watch window, remember: it can be readable.
#dotnet
But it makes debugging 10x easier.
Instead of {Namespace.ObjectName}, you can show:
Order ORD-2025-001: Alice Smith - 249.99
The trick?
Add [DebuggerDisplay] to your class.
Next time you're confused in the watch window, remember: it can be readable.
#dotnet
- Skim in 3 seconds
- Start coding
- Ask AI when stuck
- Finish without understanding
- Spend 3 days fixing bugs
What it should be:
- Read the task
- Think through solutions
- Code, test, refactor
If you write code you can’t explain,
Customers will complain.
- Skim in 3 seconds
- Start coding
- Ask AI when stuck
- Finish without understanding
- Spend 3 days fixing bugs
What it should be:
- Read the task
- Think through solutions
- Code, test, refactor
If you write code you can’t explain,
Customers will complain.
No Clean Arch, no CI/CD, no minimal APIs?
Start where you are.
Write one SRP class.
Decouple one method.
Rename one thing.
You can’t choose the codebase.
But you can choose how you improve it.
No Clean Arch, no CI/CD, no minimal APIs?
Start where you are.
Write one SRP class.
Decouple one method.
Rename one thing.
You can’t choose the codebase.
But you can choose how you improve it.
Developers don't have time to write unit tests.
But they have time to fix bugs that the tests would have prevented.
#dotnet
Developers don't have time to write unit tests.
But they have time to fix bugs that the tests would have prevented.
#dotnet
That’s a lie.
🚩 Successful teams use Feature Flags:
- Deploy early
- Avoid merge conflicts
- Hide unfinished features from users
Ditch the long-lived branches.
Shorten and simplify your dev process.
#dotnet
That’s a lie.
🚩 Successful teams use Feature Flags:
- Deploy early
- Avoid merge conflicts
- Hide unfinished features from users
Ditch the long-lived branches.
Shorten and simplify your dev process.
#dotnet
Know these 3 cloud types:
☁ IAAS – You manage apps & data; the provider handles hardware & networking.
☁ PAAS – The provider manages infra & OS; you focus on code.
☁ SAAS – Fully built apps; least flexible but easiest to use.
#dotnet
Know these 3 cloud types:
☁ IAAS – You manage apps & data; the provider handles hardware & networking.
☁ PAAS – The provider manages infra & OS; you focus on code.
☁ SAAS – Fully built apps; least flexible but easiest to use.
#dotnet
Estimations and software projects in a nutshell
#dotnet
Estimations and software projects in a nutshell
#dotnet
7 code tips to have better code in 2025
1) Unit testing
2) Refactor every day
3) Eliminate dead code
4) Use the DRY principle
5) Eliminate God classes
6) Minimize using null references
7) Always have in mind that you are writing code for humans
Anything else?
7 code tips to have better code in 2025
1) Unit testing
2) Refactor every day
3) Eliminate dead code
4) Use the DRY principle
5) Eliminate God classes
6) Minimize using null references
7) Always have in mind that you are writing code for humans
Anything else?
(that I recently discovered)
Create multiple classes at once in Visual Studio 2022.
How to do it?
In the "Add New Item" window, type multiple class names separated by a comma.
P.S. See the below video of this in action.
#dotnet
(that I recently discovered)
Create multiple classes at once in Visual Studio 2022.
How to do it?
In the "Add New Item" window, type multiple class names separated by a comma.
P.S. See the below video of this in action.
#dotnet
You don't need more complexity.
You need more simplicity.
If you want to learn how to evolve .NET projects, here's a useful GitHub repository:
https://buff.ly/3CzSE2u
Start simple.
Evolve as needed.
#dotnet
You don't need more complexity.
You need more simplicity.
If you want to learn how to evolve .NET projects, here's a useful GitHub repository:
https://buff.ly/3CzSE2u
Start simple.
Evolve as needed.
#dotnet
A → when you release 10 lines to production.
B → when you release 1000 lines to production.
If your answer is A, why are you still doing B?
A → when you release 10 lines to production.
B → when you release 1000 lines to production.
If your answer is A, why are you still doing B?
Here's why...
Junior (8h): Makes the change.
Senior (16h): Makes the changes, writes tests, improves the code.
RESULT
Junior: Fixing 3 bugs.
Senior: Happy customers.
To ship fast, you go slow.
Here's why...
Junior (8h): Makes the change.
Senior (16h): Makes the changes, writes tests, improves the code.
RESULT
Junior: Fixing 3 bugs.
Senior: Happy customers.
To ship fast, you go slow.
- Kubernetes
- Microservices
- Separate read/write DBs
Things you need:
- Unit tests
- CI/CD pipeline
- Healthy coding habits
- Monolith architecture to start with
Lack of simplicity, not lack of time, is a true enemy in every software project.
- Kubernetes
- Microservices
- Separate read/write DBs
Things you need:
- Unit tests
- CI/CD pipeline
- Healthy coding habits
- Monolith architecture to start with
Lack of simplicity, not lack of time, is a true enemy in every software project.
Instead, it's the ability to think SMALL.
The SIZE of a problem you are trying to solve without TDD:
- Implement the complete login functionality.
The SIZE of a problem you are trying to solve with TDD:
⬇️ ⬇️ ⬇️
Instead, it's the ability to think SMALL.
The SIZE of a problem you are trying to solve without TDD:
- Implement the complete login functionality.
The SIZE of a problem you are trying to solve with TDD:
⬇️ ⬇️ ⬇️
Do this:
1. Create a new class.
2. The properties on the class are the same as method parameters.
3. Replace the parameters with the new class.
4. Update the method calls.
This will quickly improve the maintainability of your code.
Do this:
1. Create a new class.
2. The properties on the class are the same as method parameters.
3. Replace the parameters with the new class.
4. Update the method calls.
This will quickly improve the maintainability of your code.
1000 lines changed = 0 comments, LGTM (looks good to me)
Code reviews in a nutshell
1000 lines changed = 0 comments, LGTM (looks good to me)
Code reviews in a nutshell