Architecture Weekly #113 - 6th February 2023
Welcome to the new week!
Want to learn about 2nd-day issues of using Event-Driven projections and read models? Great! Last Thursday, we did the next webinar for paid subscribers community.
It’s almost 2 hours of practical knowledge on how to deal with challenges like eventual consistency, idempotency, testing, rebuilds, etc. Watch it here 👇
Validation is a thriving concept. It enables incredible creativity in developers implementing it in various ways.
In ASP.NET, the validation is often conflated with parsing and model binding. Historically, .NET devs got accustomed to doing it all at once. It may sound like a brilliant idea, but it's also a pit of performance issues and nasty production bugs to debug.
It all goes well until we remember the conventions and follow them precisely. Yet, the number of permutations we may find makes it hard to tame.
It doesn't have to be like that. In my recent article, I explained how explicit validation and the latest .NET improvements could help with that:
Observability, resiliency and dealing with unknowns in the colourful distributed systems are challenges. The only thing we can be sure of is that we cannot be sure about anything. Thus, understanding the patterns, tooling, and learning from others’ approaches is critical nowadays. Check more in extensive resources:
We can be also sure following laws and principles:
Mel Coway’s Law: “Organizations, who design systems, are constrained to produce designs which are copies of the communication structures of these organizations”.
W. Edwards Deming quote: “A Bad System Will Beat a Good Person Every Time”.
Peter Principle: “An employee continues to receive promotions to work in higher ranks up to that point where he reaches a level of incompetence”.
Gerald Weinberg: “It's always a people problem”.
At least, in my opinion, solving technical challenges is much easier than organisational ones. I’m not trying to deprecate the importance of technical execution, yet much more often, they fail because people cannot deal with each other than technology failing.
I’m happy that this, together with empathy, is something that we finally hear louder. Check more in:
James Lewis - Team Topologies, Software Architecture & Complexity
Andy Hunt - Why Are There So Many Misconceptions Around Agile?
I'm trying to notify you that the fight has been ongoing in my resources since the Russian Invasion of Ukraine started. I feel that it’s my responsibility to explain that to others as I live in this part of Europe. Yet, Ukraine is not the only country fighting for its freedom.
Many Iranians want to live in a country where they can make their own decisions. They’re fighting with an oppressive regime. And yes, the regime also uses IT tooling to spy and infiltrate people. Check more in the Citizen Lab report:
I mentioned empathy in the previous paragraph. We should work more also on ethics and responsibility in our industry. Tech is and will be used not only for a good cause, and we need to learn how to behave when we face such dilemmas.
Check, also other links!
Cheers
Oskar
p.s. I invite you to join the paid version of Architecture Weekly. It already contains the exclusive Discord channel for subscribers (and my GitHub sponsors), monthly webinars, etc. It is a vibrant space for knowledge sharing. Don’t wait to be a part of it!
p.s.2. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, and putting pressure on your local government or companies. You can also support Ukraine by donating, e.g. to the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.
Architecture
James Lewis - Team Topologies, Software Architecture & Complexity
Rob Smallshire - Predictive Models of Development Teams and the Systems They Build
Isaac Abraham - Domain modelling made simple: Functions and Values
DevOps
Databases
Frontend
Testing
Azure
JVM
Node.js
.NET
David Masters - Entity Framework Core 7: Strongly Typed Ids Together With Auto-Increment Columns
Steven Giesel - No, No, No - Tasks are not threads and they are not for performance!
WebAssembly
Coding Life
Management
Andy Hunt - Why Are There So Many Misconceptions Around Agile?
Strategic and Heuristic IT Management - One-way and Two-way Door Decisions