Hi, I'm Panayiotis.
This is the space where I share my experiences and evolving thoughts on the craft of software engineering and the art of leading teams.
Welcome. Feel free to explore my writing.
8 Tips for Pragmatic Technical Decision-Making in Fast-Paced Environments
This blog post explores the engineering decision-making challenges in fast-paced development environments, the importance of maintaining technical agility, and presents a framework to make balanced technical decisions that enable consistent velocity and quality.
Feedback loops in software engineering
In this blog post, I write about the power of feedback loops and the essential characteristics of the ideal feedback loop.
Implementing a simple, generic mediator pattern in go
This article presents a simple implementation of a generic mediator in Go.
Software Documentation - Value, Misconceptions, Common Pitfalls, and Essentials
This article explores the value of software documentation, a few misconceptions about the need for documentation, and some common pitfalls we fall into when we document software.
Implementing the Outbox pattern in go
This article presents the design and implementation of the outbox pattern in go.
Software Engineering Philosophy: Tradeoffs and Quality
This post talks about software engineering philosophy; the list and priorities of the fundamental values we, software engineers, use to decide how to approach tradeoffs in software engineering problems.
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.