Architecture Weekly #157 - 11th December 2023
Welcome to the new week!
I’m feeling like a surgeon in recent days. And that may also happen to you! Who knew that changing the connection management in the storage library would be a delicate thing to do? I did, but it’s still an intriguing feeling.
I did a short brain dump with my thoughts on the challenges of migrating the storage library. It's based on my ongoing Npgsql migration, but the thoughts are broader, as such changes may also happen in regular application development.
Event Sourcing is hard, complicated and impractical. At least, so they say. I think that's the contrary. It can be straightforward, practical and helpful. Ok, but who's right?
You may find out in my recent webinar:
I showed how to build a simple but close to real-world application, explaining the foundational aspects of Event Sourcing one by one. I used C# and Marten as an example, but I tried to make it accessible even if you’re not a .NET developer.
If you’re interested in the more advanced stuff, check out an excellent write-up on the bi-temporal aspects of looking at the events’ timeline.
It shows nicely and practically how to analyse data from the perspective of where it happened and when it became effective. This is critical for business reports like budgeting and analysing the state of the systems as in, as of, etc.
As architects, we also need to include a lot of bi-temporal thinking into our considerations. We need to learn from the past, observe current trends and make predictions. I brought you some food for thought for all those aspects.
I like Werner Vogels’ takes; they are usually nuanced, and even if he tries to convey his agenda, it’s balanced by explaining his biases. He predicts that:
Generative AI becomes culturally aware - (…) As LLMs interact and learn from each other, they will gain more nuanced understandings of complex societal challenges informed by diverse cultural lenses. These advances will also ensure that models provide more robust and technically accurate responses across a broad range of topics in areas such as tech. The effects will be profound and felt across geographic regions, communities, and generations to come.
FemTech finally takes off - (…) We’ll finally see women’s care move from the fringes to the forefront. And since women-led teams are more inclined than those made up of just men to solve a broad range of health issues, we’ll see FemTech not only benefit those who identify as women, but lift the entire healthcare system.
AI assistants redefine developer productivity - (…) Unburdened by the undifferentiated heavy lifting of tasks like upgrading Java versions, developers can focus on the creative work that drives innovation.
In the coming years, engineering teams will become more productive, develop higher quality systems, and shorten software release lifecycles as AI assistants move from novelty to necessity across the entire software industry.
Education evolves to match the speed of tech innovation - (…)None of this means that traditional degrees are going away. This is not an “either/or” situation—it’s about choice. There will still be areas in tech where this type of academic learning is critical. But there will be many industries where the impact of technology outpaces traditional educational systems. To meet the demands of business, we will see a new era of industry-led educational opportunities that can’t be ignored.
Read the whole article to get a nuanced view.
I’m happy that Werner Vogels, one of our industry thought leaders, is so optimistic about upcoming changes. Still, I’m not so positive. Yet, it’s good that one person who makes the strategic impact sees FemTech, cultural differences and education evolution as important aspects. It might not improve upcoming tech changes, but we already have too many tech bros, ignoring those crucial aspects. So the more people think about that, the more likely some positive change will happen.
Check also a talk by Trond Hjorteland showing why we should centre our system design around humans:
I’m showing a lot of case studies in the newsletter releases, as I believe it’s important to know how far we can go. I’m trying to show case studies both from Big Techs and smaller companies. Knowing how big tech are solving their issues gives us a horizon, smaller, something to relate to and build our paths.
We need to remember that we will probably never get close to the scale that those Big Techs have. Thus, if we try to follow their practices blindly, we will probably end up with overengineering and too much ceremony.
Did you wear your older siblings' clothes? Did you like it? Nah?
That's how you will feel if you blindly try to apply best practices from big tech.
Still, it’s worth taking cautious inspiration. Read more on tech case studies:
Remember also that there are things that, even in big tech, are coming more from trends and financial practices than rationality.
For instance, their stock will increase when they hire, which means they’re growing. When laying people off, because they overhired, they’re also winning because they’re making necessary hard decisions. And their stocks will also increase:
Sometimes, they just make not aligned business decisions:
And those hard decisions, are usually not hard for decision-makers, but those that were laid off.
From the other topic, I loved Kent Beck's last article:
I’m against so-called emergent design. I haven’t seen yet a proper design emerge. I like that TDD is about a quick feedback loop about your design, crafting your API and seeing how it works.
Immediate feedback for interface design decisions. You still have to make those decisions. The design will only be as good as your decisions, but your pain will also be inversely proportional to the quality of your decisions.
Separation between interface design decisions & implementation design decisions. This was always recommended to me without anyone explaining how.
Once you've made & notated an interface decision as a test, you'll get immediate feedback whether or not your implementation design decisions pass the first, lowest bar--does the code work?
Read also an in-depth take on strategy for automated testing from Kamil Grzybek:
Check also other links!
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.