-
A Deadline Is a Constraint, Not a Threat
A deadline appears from somewhere above. The scope is already fixed. The complexity is underestimated. The team is told that it is “empowered”, which somehow means that it is now responsible for making the impossible possible. Quality becomes the thing everyone still talks about, but nobody has time to protect. People start cutting corners, but quietly, because admitting reality has become more expensive than pretending.
This is especially true when the date, scope, quality, and uncertainty are all treated as unchangeable facts. The damage starts when people pretend that a fixed date also means everything else must stay fixed.
-
The Responsibility of Engineers in the Age of AI
Lately I’ve been thinking a lot about what it means to grow as an engineer, in a world where AI tools are becoming increasingly powerful.
At first glance, it’s tempting to think we can just lean into automation. Why spend time writing boilerplate or struggling through implementation details when an assistant can generate a near-complete solution in seconds?
However, what happens to learning when the struggle disappears?
Today, a Machine Can Write Code, But It Can’t Think For You
Let’s be honest, engineers today have access to tools that many of us could only dream of when we started. You can scaffold a service, debug a weird API response, or generate a working test in seconds. That’s incredible. But it can also be misleading because completing a dedicated task doesn’t necessarily mean the tool also teaches you. In fact, those tools help you to skip ahead.
-
Scaling Starts with Simplicity
In many engineering organizations, especially those that are small to mid-sized, the topic of technology governance can feel like overhead, something for larger enterprises with dedicated architecture boards. But in reality, governance isn’t about control. Done right, it’s about enabling engineers to move faster, collaborate better, and solve meaningful problems without unnecessary friction.
A good example of this is technology stack alignment.
Imagine a backend team of 10 - 20 engineers working across multiple services. Over time, they’ve accumulated three primary stacks, e.g. Go, Java, and Node.js. Each language has its strengths, and in isolation, all of them are great choices.