Derek Comartin Profile Banner
Derek Comartin Profile
Derek Comartin

@codeopinion

11,135
Followers
226
Following
969
Media
11,388
Statuses

👑 Context is King 💻 Software Architecture & Design 📺

Canada
Joined November 2008
Don't wanna be here? Send us removal request.
Pinned Tweet
@codeopinion
Derek Comartin
1 year
Random reminder that I have a YouTube channel where I post videos about software architecture and design. Usually in the 10 min range trying be concise as possible. If you enjoy please share. Have suggestions? Please let me know.
7
21
143
@codeopinion
Derek Comartin
1 year
Comment of the Day
Tweet media one
25
39
582
@codeopinion
Derek Comartin
4 years
This weekend I'm going to work on my next video about how Microservices (or any size service) have absolutely nothing to do with Container/Docker/K8s. I can't deal with reading these articles anymore. Next to nobody mentions it's about logical separation and not physical.
16
23
201
@codeopinion
Derek Comartin
1 year
Developers can justify anything by saying it's "clean"
Tweet media one
27
26
185
@codeopinion
Derek Comartin
2 years
I'm creating a series of videos that will take an existing sample app and move a portion of it to be event sourced. Along the way, I'll be removing a bunch of layers and "services" which I think will give a better gist of Vertical Slices and how that plays with CQRS.
6
10
159
@codeopinion
Derek Comartin
3 years
Almost every HTTP API that I've consumed implements errors differently. Can we just agree to use Problem Details and be done with it?
13
19
146
@codeopinion
Derek Comartin
3 years
Blogged: When building Software as a Service (SaaS) you’ll often need to use a Multi-tenant Architecture. There are many different ways that you can segregate and share compute and data storage in a multi-tenant architecture.
5
30
147
@codeopinion
Derek Comartin
3 years
I really don't understand having the defined role of "Software Architect". The architecture will evolve by the team. Someone on the team can be leading that charge. Everyone on the team can have varying degrees of input but ultimately it should involve everyone.
33
16
135
@codeopinion
Derek Comartin
2 years
I love code. I love writing code. I love creating software. The challenging part in the software I write isn't writing the actual code. It's understanding the domain, really understanding. Then translating that to code, evolving the design and architecture over time.
4
17
126
@codeopinion
Derek Comartin
3 years
I'm really curious about the software industry's love for making language/framework/tools the top priority of knowledge and experience. Why isn't the type/domain of software you develop the most important thing? Ex, hiring C# developer vs. hiring a developer for insurance.
47
22
129
@codeopinion
Derek Comartin
2 years
Recently crossed the 50k subscribers mark. It's been a long road over the past few years. I try not to concern myself with the subscriber count, but it's hard not to notice. These videos aren't for everyone, but I appreciate everyone watching, liking, and commenting.
Tweet media one
13
8
131
@codeopinion
Derek Comartin
2 years
Friendly reminder that I have a YouTube channel that has over 100 videos about Software Architecture and Design. New content every week. If you enjoy my channel, please share!
1
37
116
@codeopinion
Derek Comartin
3 years
Blogged: Everyone creating HTTP APIs seems to implement error responses differently. Wouldn't it be great if HTTP API Errors had a standard? Well there is! It's called Problem Details.
5
35
115
@codeopinion
Derek Comartin
1 year
I finally read the Amazon AWS Lambda thing that was all the rage last week. Most of the takes I read were head-scratchers or just clickbait, I guess... It didn't help that the post stated it was moving from Microservices to a Monolith. From the post, they kept the logical
12
3
105
@codeopinion
Derek Comartin
2 years
Curious how many folks developing "microservices" but share a database and integrate at the DB level? Just a free for all.
32
10
99
@codeopinion
Derek Comartin
2 years
Some *interesting* replies. If you write CRUD-type systems primarily without "business logic" go talk to the people using it. The business logic is in their head. Watch their workflow and ask what they're actually doing and why. Guess what you'll discover, business logic.
@danielcranney
Daniel Cranney 🇬🇧
2 years
Confession: I don’t really know what business logic is.
43
6
130
7
20
97
@codeopinion
Derek Comartin
11 months
FirstOrDefault kills me. Why would it possibly be null? And if it is null, you're then going to do what? Throw an exception. No thanks.
17
11
101
@codeopinion
Derek Comartin
3 years
CRUD based apps leave workflows and processes up to the end user (in their head). Task based apps drive the user through workflow. Trying to shove business logic into CRUD driven "entity services" is recipe for a brittle system.
@Swizec
Swizec Teller
3 years
I wish more engineers thought of APIs as abstractions instead of pass-thru access to the database
22
90
787
4
28
93
@codeopinion
Derek Comartin
2 years
Why is clean architecture so popular? I believe people want and use it as a prescription. Unfortunately, not all contexts have the exact needs for various levels of abstraction and stability. Context is King.
3
17
101
@codeopinion
Derek Comartin
4 years
My continued .NET Core migration saga. We're running on 3.1 now in production. Anyone interested in a video of *my* entire saga (all aspects) of moving a large web app from .NET Framework to .NET Core 3? If so, any particular things you want answered?
17
7
95
@codeopinion
Derek Comartin
10 months
@davidfowl It's absurd. Completely absurd. I could do a whole talk on the absurdity of it "in practice". I digress.
8
1
97
@codeopinion
Derek Comartin
1 year
Curious if developers using C# forget there is a virtual keyword.
34
4
91
@codeopinion
Derek Comartin
1 year
What’s the biggest scam in tech that is deemed acceptable? Best practices. Everything has trade-offs and your context matters. Let me give various examples to get out of this dogma about best practices.
Tweet media one
7
14
89
@codeopinion
Derek Comartin
4 years
Well, I was not expecting to migrate a small WinForms app to .NET Core 3.1 today. I did not read the docs at all. I simply did a dotnet new winforms in a new folder, copied over all my existing files to the new folder, added appropriate package references. Bingo Bango, it runs.
4
12
91
@codeopinion
Derek Comartin
3 years
Can I mute all the one-sided conversations about Code Reviews, PR, and other nonsense? Can teams just figure out what works best for them that delivers the best working software and just do that. Can we start being pragmatic? Probably not but I still hold out hope.
12
6
87
@codeopinion
Derek Comartin
5 years
7 y/o built this as his first real wood project. Cut, varnished, and assembled himself.
Tweet media one
6
5
83
@codeopinion
Derek Comartin
2 years
I just changed my IDE theme from dark mode to light. Am I a bad person?
74
4
87
@codeopinion
Derek Comartin
6 years
Blogged: Is CQRS Complicated? CQRS is often referenced alongside other patterns that can make it seem difficult and complicated. Is CQRS complicated? No. CQRS is simple. Really simple.
6
28
87
@codeopinion
Derek Comartin
1 year
Developer: I'm writing this hacky code that's a turd pile because I'm getting pressure to get this done. Oh well. Same developer on a different existing project: Look at this crappy code. Who is the brutal developer that wrote this hot mess? What were they thinking?
9
8
90
@codeopinion
Derek Comartin
1 year
IApplicationDbContext that exposes a DbSet<T>. Amazing.
11
4
89
@codeopinion
Derek Comartin
1 year
Genuinely curious how people who do content "full time" don't lose touch with the reality of the industry? Meaning that if you're not in the trenches of production systems. I'm coming at this from my own angle: everything I post is based on experience in production systems.
11
2
86
@codeopinion
Derek Comartin
1 year
I'll keep yelling it. Logical boundaries aren't physical boundaries. When the industry finally acknowledges this, we can finally move on.
@jamesmh_dev
James Hickey 🇨🇦👨‍💻
1 year
2018: "How to split your monolith into microservices" 2023: "How to consolidate your microservices back into a monolith"
124
727
5K
5
18
82
@codeopinion
Derek Comartin
1 year
YouTube comments are enforcing the generalization that people using ORMs have no idea how SQL or databases work.
23
6
83
@codeopinion
Derek Comartin
4 years
Blogged: If you’re developing an HTTP API how does that fit alongside a Task-Based UI and CQRS? How can you create a REST API with CQRS? For starters, resources don’t need to map to Entities. Second, HTTP Methods don’t need to map to CRUD.
1
19
82
@codeopinion
Derek Comartin
3 years
Video: Want to see an example of how CQRS & Event Sourcing work together? Here's a code walk-through that illustrates CQRS, Event Sourcing, and Projections.
0
16
80
@codeopinion
Derek Comartin
2 years
Underrated skill (?): Critical Thinking. You'd think we as developers have this, but we seemingly lose all ability when something is "best practice", or it's "what we do" without thinking about our own context and if it serves us value.
8
5
78
@codeopinion
Derek Comartin
2 years
Why is Clean Architecture so popular? I guess people are tired of working or creating turd piles that are poorly structured with mixed concerns. Ultimately it addresses coupling. But what about cohesion?
9
14
77
@codeopinion
Derek Comartin
3 years
Slight adjustment: 99% of problems can be solved by a server-side rendered web app that queries an SQL database.
@CubicleApril
April King 🌀
3 years
99% of problems can be solved by a website with some JavaScript calling a Python REST API that queries an SQL database. Stop chasing the decisions of people with problems several orders of magnitude more complex than yours unless you understand why they did it.
47
257
2K
4
6
81
@codeopinion
Derek Comartin
2 years
Friendly reminder that I have a YouTube channel about Software Architecture and Design. Please share and spread the word if you find the videos helpful.
3
25
75
@codeopinion
Derek Comartin
3 years
Event Sourcing is seemingly constantly being confused with Event Driven Architecture. In this blog/video I'm clarifying the difference. You will introduce a whole set a problems if you conflate the two.
3
15
74
@codeopinion
Derek Comartin
2 years
Friendly reminder of my YouTube channel where I focus on Software Architecture and Design. Pretty good library now of videos with a new video every week! Please share if you find them helpful.
1
17
75
@codeopinion
Derek Comartin
1 year
Did you know you can write an HTML file. Yes, a file you end with a .html extension. Amazingly, you can create html without JavaScript. Crazy, I know!
18
6
77
@codeopinion
Derek Comartin
2 years
Just noticed that my YouTube channel passed 40k subscribers 🎉. For those that watch and subscribed, thank you! I'll continue to post my nonsense opinions 😂
5
2
70
@codeopinion
Derek Comartin
2 years
I don't create abstraction "in case the underlying implementation needs to change". I create them to simplify the API surface. If I don't need to do that, don't create more indirection. Abstraction or no abstraction, limit coupling and "in case it changes" becomes less relevant.
6
11
72
@codeopinion
Derek Comartin
1 year
Almost every video I watched about domain modeling started with creating data models and calling them entities. Very few of them talk about the actual domain concepts about how that data comes to be. As a whole, little has changed regarding modeling a domain in the past 20+
17
6
71
@codeopinion
Derek Comartin
4 years
I'm not sure why exactly, but I have almost zero interest in Blazor. And this coming from someone that thinks frontend JS ecosystem is a tire fire. You'd think I'd be excited about this yet... meh.
15
8
66
@codeopinion
Derek Comartin
1 year
Tweet media one
10
1
70
@codeopinion
Derek Comartin
2 years
Microservices vs monolith seems to be a thing I keep seeing more of. Once the larger dev community can figure out that logical boundaries aren't physical boundaries we'll be over this nonsense.
8
12
66
@codeopinion
Derek Comartin
2 years
False alarm; I switched back to dark mode. Experiment over.
10
0
67
@codeopinion
Derek Comartin
2 years
I'm somewhat convinced of you start with a task driven UI, you'll also end up with an event driven architecture.
8
6
66
@codeopinion
Derek Comartin
3 years
Synchronous request/response is tight coupling. It doesn't matter if it's in-process or RPC. Tossing HTTP calls between services doesn't make anything less coupled.
11
12
67
@codeopinion
Derek Comartin
2 years
Friendly reminder: I have a YouTube Channel and a lovely blog where I post about software architecture and design. If you enjoy it, please share!
0
31
64
@codeopinion
Derek Comartin
1 year
I knew this was the case that these videos are not for everyone, but it was interesting to get this comment.
Tweet media one
3
3
62
@codeopinion
Derek Comartin
5 years
Unpopular opinion: what most of us do is not engineering and the term software engineer is absurd.
12
3
61
@codeopinion
Derek Comartin
2 years
I'd argue more complexity has been created by people trying not to repeat themselves. I also don't call that technical debt.
5
6
64
@codeopinion
Derek Comartin
2 years
I learn and use new C# features via Rider.
12
6
61
@codeopinion
Derek Comartin
3 years
The most impressive developers in my experience are the ones that can transparently jump between code and talking with business folks.
@davidfowl
David Fowler
3 years
The most impressive engineers in my experience are ones that can transparently jump between the layers of the stack. Up to the UI and down to the assembly (ok maybe not that low...)
44
24
435
3
4
58
@codeopinion
Derek Comartin
2 years
I'm on a mission to create a video illustrating how useless an object model (aggregate) is with a bunch of SetPropertyThingy(value) methods. Serves absolutely no purpose. The template of WebAPI > AppLayer > Repository > Data Model with useless setters needs to die in a tire fire
8
5
59
@codeopinion
Derek Comartin
1 year
Comment of the Day.
Tweet media one
7
0
60
@codeopinion
Derek Comartin
2 years
McDonald's uses an event-driven architecture! I love it when companies have technical blog posts. I gave some of my thoughts and did a breakdown of what they posted.
2
9
62
@codeopinion
Derek Comartin
1 year
Fairly sure when you say "unit" tests, what most developers (in OO) really think are "class" tests. If more than one class involved they then equate that to integration.
24
5
56
@codeopinion
Derek Comartin
2 years
You often think of messages as fire and forget. Send a command to a queue, and the consumer handles it asynchronously. You don't know when the message was processed or the result. However, there is a solution!
Tweet media one
3
14
63
@codeopinion
Derek Comartin
2 years
Good to know people using JS aren't doing any domain modeling and bullshit.
Tweet media one
10
5
57
@codeopinion
Derek Comartin
3 years
I've noticed that "Software Developer" YouTube is much like "Fitness" YouTube. There's a ton of bad information and the overwhelming majority of it is targeted at beginners.
7
5
55
@codeopinion
Derek Comartin
1 year
Separation of concerns, principles, yadda yadda, yet I see over and over a data model also being used as a domain model. What's more amusing is "persistence ignorance" as a driver and it's absolutely affecting your design. Even if you didn't want to use event sourcing, I think if
11
5
60
@codeopinion
Derek Comartin
3 years
Value Objects don't need an IValueObject or a ValueObject abstract base class. I'm looking at you almost every example.
7
8
54
@codeopinion
Derek Comartin
2 years
Tweet media one
5
1
56
@codeopinion
Derek Comartin
4 years
Inconsistent and poorly formatted code bothers me. Bad indentation, missing whitespace, casing, braces... It really bothers me. There, I said it.
13
3
59
@codeopinion
Derek Comartin
2 years
You can think I'm an idiot, and my opinion is nonsense. I'm giving my opinion based on my experience. You don't have to agree with it.
Tweet media one
28
0
60
@codeopinion
Derek Comartin
2 years
After 20+ years, I'd suspect my code is closer to the earlier years than around the ~10 year mark. Earlier years were simpler but naive. Middle years were "flow a crap ton of patterns because reasons". I hope that blog/videos can help others with that middle part to be pragmatic.
4
6
54
@codeopinion
Derek Comartin
2 years
Comparing Kafka and RabbitMQ is like comparing a distributed Log and a Queue. Wat? Exactly, they're different things.
8
7
58
@codeopinion
Derek Comartin
1 year
“Clean Architecture” and indirection. No thanks. I reviewed a video that was trying to apply the query side of CQRS by adding a whole lot of useless indirection. Please don't do this.
2
7
60
@codeopinion
Derek Comartin
2 years
You don't need an interface for everything! You can design and use different abstractions where appropriate. Not everything needs an interface and mocking to be deterministic.
1
12
58
@codeopinion
Derek Comartin
2 years
Based on YouTube comments, I get the feeling there are many people with "Sr. Developer" titles that should be "Sr. Hot Mess Maker." Reading some of these comments makes me feel bad for Jr. devs trying to sort through it and likely being shot down for suggesting it's too complex.
5
8
56
@codeopinion
Derek Comartin
4 years
Can we get a C# build task that rips out tests from an assembly for release builds. I'm really tired of separate projects.
20
3
49
@codeopinion
Derek Comartin
2 years
I'll never convince some folks that useless abstractions and indirection add no value (net negative). Just because you're not abstracting dependencies does not mean you're going to be stuck with them and have technical debt. Define boundaries (cohesion). Control coupling. Period.
3
2
54
@codeopinion
Derek Comartin
1 year
One of the building blocks of messaging is, you guessed it, messages! But there are different kinds of messages: Commands and Events. So what's the difference? They have distinct purposes, usage, naming, ownership, and more!
Tweet media one
1
17
57
@codeopinion
Derek Comartin
2 years
Generally, I find anything that's implicit to be a trap. I'd rather things be more explicit even of it's more verbose.
11
7
52
@codeopinion
Derek Comartin
1 year
Does anyone know of a Roslyn analyzer to help me in this situation?
Tweet media one
12
2
57
@codeopinion
Derek Comartin
4 years
"I'm a software developer who got promoted to management". To some, that's not called a promotion.
6
5
52
@codeopinion
Derek Comartin
1 year
Anything new in the .NET space? Seems kinda quiet. 😂
7
2
52
@codeopinion
Derek Comartin
2 years
Consistency is critical when working with an event-driven architecture. You must ensure that when you make state changes to your database, the relevant events you want to publish are published. You can’t fail to publish events.
1
12
54
@codeopinion
Derek Comartin
2 years
Sometimes I just need to reply, especially after a long day of traveling.
Tweet media one
7
0
47
@codeopinion
Derek Comartin
2 years
SOLID Principles, Clean Architecture. Meh. I rarely think of them but rather just coupling and cohesion from higher to lower levels.
4
6
52
@codeopinion
Derek Comartin
3 years
Just passed 14k subscribers on my YouTube channel. Goal at the beginning of the year was 15k. Although total subs means nothing, I do think I've got a pretty engaged community happening. I appreciate all the comments, views, and likes.
9
2
54
@codeopinion
Derek Comartin
1 year
Can someone explain why many developers won't pay for crap? "That library is great but it's got extension features that are paid and I'm not buying it". Are they afraid to ask their manager/procurement? I get people working in all kinds of orgs that make it difficult, but it's
54
5
52
@codeopinion
Derek Comartin
4 years
Holy crap. I passed 8k subscribers on my YouTube channel and I have no idea when. Onwards and upwards!
7
0
52
@codeopinion
Derek Comartin
3 years
After reading some puzzling comments on Reddit, I'm creating a video on DDD. Stop caring so much about the structural/pattern nonsense and start caring about the domain, modeling, language, and boundaries.
0
0
52
@codeopinion
Derek Comartin
3 years
@ardalis @TheCodeJunkie I was once given the advice to ask someone the downsides/pain/problems/tradeoffs of something they say they know deeply. It's a pretty good indicator of how deep their knowledge really runs. Doing so I've concluded a lot of folks' opinions are just the opinions of others.
1
2
45
@codeopinion
Derek Comartin
2 years
You'd be surprised how far you can scale a monolith. There are a lot of options you have before you start to decompose into separate physical boundaries.
2
7
52
@codeopinion
Derek Comartin
1 year
I've found there's a common path developer take once they get over only thinking about database schemas. Commands, Task based UIs, and Events.
2
11
50
@codeopinion
Derek Comartin
2 years
Coupling and Cohesion go hand in hand. Yet, cohesion is often left out of the conversation, and we focus on coupling. Then we organize our code based on coupling of technical concerns. Add cohesion to the forefront and start organizing code around it.
4
9
50
@codeopinion
Derek Comartin
10 months
Domain-Driven Design sample/reference applications do more harm than good. In a vacuum, they’re a net negative. It isn’t easy to convey the complexity and trade-offs made using trivial code examples. They're the wrong starting point.
2
6
53
@codeopinion
Derek Comartin
1 year
I'm convinced sample/reference applications do more harm than good for beginners. As in, they are overall a net negative. It isn't easy to illustrate why something is done when you're fabricating the context and scope of the problem.
15
3
48
@codeopinion
Derek Comartin
2 years
This is my problem with CDC in the form of "EDA". I struggled to express it, but thankfully @ylorph pointed it out. It's no different than this.
Tweet media one
6
12
49
@codeopinion
Derek Comartin
2 years
So dotnet 7 is out and I have no clue what's new. Blazor likely something or other.
20
1
47
@codeopinion
Derek Comartin
1 year
IEverythingIsAService 🤡💩
@sfeldman
Sean Feldman
1 year
I still can't understand why .NET developers insist on having an interface for every single class.
156
21
326
15
3
49
@codeopinion
Derek Comartin
3 years
I'd be happier with exhaustive pattern matching and an option type rather than nullable reference types in C#. Be done with all this nullable nonsense and move forward.
5
3
45