My personal blog where I talk about software development and some of my experiences

Meeting smells in your own notes

Meeting smells in your own notes

Some meetings are bad, others are useless, some of them are helpful. One thing that I discovered over time is that if you have a good template for notes, you can use them to take the temperature and discover smells.

It is not a tip you can use just after one meeting, it is something that you should analyze over time. And of course, it is different for each company and person, so you may apply at your own discretion. In my case, I use the Quadrant Method, but it could work with other templates as long as they keep different sections separated.

Continue reading →

Domain Storytelling

Domain Storytelling

Some time ago, more than a year probably, a friend recommended me the Domain Storytelling technique. At first, it looks quite simple, and you could say that watching a few pages and examples you will dominate it. Not the case for me, it wasn’t until I read the book from Stefan Hofer and Henning Schwentner that I really understood it.

But before talking about the book, I would like to explain what it is in a nutshell.

Continue reading →

Hexagonal Architecture: Too much boilerplate?

Hexagonal Architecture: Too much boilerplate?

I am currently working on a pet project to refresh Java tech-stack knowledge, and I got to this class.

public class RecipesController {
    private RecipesCatalog recipesCatalog;

    public RecipesController(RecipesCatalog recipesCatalog) {
        this.recipesCatalog = recipesCatalog;
    }

    public List<RecipeResponse> getRecipes(
            @RequestParam(defaultValue = "1") int page,
            @RequestParam(defaultValue = "10") int size) {
        var recipes = recipesCatalog.getRecipes(page, size);
        return recipes.stream().map(RecipesController::asRecipeResponse).toList();
    }

    private static RecipeResponse asRecipeResponse(Recipe recipe) {
        return new RecipeResponse(recipe.id(), recipe.name(), recipe.recap());
    }
}

It reminded me of the main complaint people tell me about Hexagonal Architecture, the need for boilerplate. Do you see the RecipesController::asRecipeResponse reference? Why not returning just a list of Recipe? Why using mappers all the time? Well, there are a few reasons to do that.

Continue reading →