Hi, I’m Panayiotis.
I write about the parts of software engineering that sit between code, people, and judgment - how we make decisions, weigh tradeoffs, and design things that hold up, whether that’s an architecture or a team.
A systematic approach to Technical Requirement Analysis
This article describes a methodical way of approaching Technical Requirement Analysis that includes a list of steps that help in clarifying ambiguity and preventing unexpected issues before an engineering team jumps into the design phase.
Outbox pattern - Why, How and Implementation Challenges
This article presents the outbox pattern, a communication/messaging pattern used in event-driven distributed systems that allows executing database operations and reliably publishing messages.
Designing functions that return potentially absent values in Go
This article presents a micro-level design pattern to indicate the absence of function return values idiomatically in Go.
Clean Architecture in Go [2024 Updated]
❇️ This post and the respective repository was updated in August 2024 to reflect a simplified infra layering approach and more accurate terminology
My Hello World
I have been thinking about starting a blog for a few years, and I feel this is now the right time.