Skip to content

Author: Benedict

Shared dependencies: Avoiding this micro antipattern

Teams use microservices and microfrontends to reduce mental load, decrease accidental coupling of unrelated code, to deploy independently, for fast feedback loops and CI runs, to isolate issues or to scale with team size. In a microservice architecture, you should avoid shared dependencies or a common core library. To be more precise, don’t share libraries that increase coupling.

As IT professionals, we know that. However, despite our best intentions, shared dependencies sometimes creep in and cause issues. From what I’ve seen, here are the most frequent occurrences in the backend:

Leave a Comment

The perfect consultant: A tale of printers

Printer

For every problem, there is a multitude of solutions. Helping clients to find the ideal solution for their issues, is what a consultant does. In this article, I’ll tell the tale of a very German printing problem, that may or may not have really happened. I’ll present three possible solutions, one of them I consider worthy of the ‘perfect consultant’.

Printing…? Like most IT professionals I have a love-hate-relationship regarding printers. These machines seem expensive, loud, slow and often unnecessary, on the other hand, finding a solution to the arcane art of printing (article in German), is always fascinating.

Leave a Comment

Decision logs: A powerful tool to prevent costly mistakes

While working on an IT project, thousands of decisions are made. One of the most important tools to handle the project, are decision logs. Most articles praising the benefits of decision logs focus on how they help to make, remember or fine-tune a decision. The biggest value I see however is, that decision logs can prevent repeating costly mistakes. Consider them as a safety net as powerful as 100% automated test coverage. In order for that to work though, you need to write proper decision logs. I’ll tell you how.

There’s an old saying in Tennessee — I know it’s in Texas, probably in Tennessee — that says, fool me once, shame on — shame on you. Fool me — you can’t get fooled again.

Georg W. Bush
Leave a Comment

Vertical Slices: Let’s treat cars, houses and muesli like software

As a software developer, I’m used to the concept of vertical slices. They allow to be able to deliver value earlier, to iterate faster, or to create a proof-of-concept for evaluation/presentation. In software vertical slices are superior to horizontal ones (feel free to prove me wrong in the comments).

In other industries, this is not necessarily the case. Imagine pouring the foundation for a living room first, then building its walls, electricity etc. After everything is done you’d do the same for the kitchen. This would not only be ridiculously expensive, but also dangerous during earthquakes.

Despite building foundations though, there must be cases where the vertical slices make sense for non-digital industries, right? And with “make sense”, I mean

  1. valuable for customers
  2. valuable enough so that they’d actually be willing to pay extra for it*

* because these small slices create overhead and therefore may be costly

Let’s look at some fun thought experiments. The following examples are from industries I have honestly no clue about, so feel free to correct me in the comments:

Leave a Comment

Symfony Guard component without using the whole framework

Implementing authentication in Symfony can be quite complicated. Even more so, if you attempt to use only the Security component without the whole framework. In this post I’ll show you, how you can use the Symfony Guard component with a form login and a logout link. So here’s what you can expect from implementing the code from this blog entry

  • Login with username and password by form
  • Stay logged in by using a session
  • Logout via Hyperlink “/logout”

My aim is to use as little components from Symfony as possible in this tutorial. Every project is different and I don’t know which components you might want to use.

3 Comments