Software solutions do not start with code
I can move from idea to code faster with AI, but the real work still starts before that: asking better questions, spotting constraints, and building the right mental model.
I can move from idea to code faster with AI, but the real work still starts before that: asking better questions, spotting constraints, and building the right mental model.
As AI takes over more of the mechanical work, engineers at every level need to learn how to direct, verify, and own what gets shipped. This article reflects on why that mindset should start early, not only at senior level.
Snowflake rolls out semantic and breaking changes through behavior change bundles. Before a bundle becomes the default, there is a window to test how those changes might affect your workloads. In this article, I show how I used Codex and later Cortex Code Desktop to assess the risks, identify likely breakpoints in our Airflow and dbt pipeline, and map out likely fixes before the bundle lands.
A practical YAGNI story from data engineering: keeping a CI workflow intentionally narrow until the second real use case appeared.
Why AI makes engineering fundamentals more important, not less, and why I am starting a series on the principles that still shape real production decisions.
A reflection on turning one AI-generated Python prototype into reusable coding-agent guidance: clearer implementation boundaries, stronger quality expectations, and a shared quality bar before prototypes become real tools.
A reflection on invisible work in platform and data engineering teams: why success often looks like silence, why the work-speaks-for-itself instinct breaks at the senior-to-staff transition, and what I have tried to make my work more legible to people I don't sit next to.
Running multiple coding agents in parallel feels like a speed win until the bottleneck becomes the person trying to supervise all of them.
A reflection on meeting overload: why every invitation deserves real scrutiny, why three to four meetings a day make focused engineering work much harder, and why leaving the room when I cannot contribute can be the responsible move.
A practical walkthrough of setting up Claude Code agent teams with clear roles, task ownership, communication rules, review steps, and lightweight output contracts.
A hands-on case study of using Codex subagents to coordinate data collection, preparation, and Slidev report generation in parallel.
I wanted Python repository health checks without flooding the main Codex thread with raw `uv`, `ruff`, `pytest`, and `ty` output. So I built a subagent-backed skill that inspects the repo, runs the usual commands, and returns a compact report with clear pass, warn, and fail signals.
A reflection on knowledge silos in engineering teams: why they often start as responsibility rather than ego, and what helps spread context before one person becomes the queue.
A practical guide to what the planner actually sees, why context is more than the prompt, and why better context selection matters more than simply adding more tokens.
I already had reusable `uv`-first instructions for Claude Code and Codex. I have now added the Cursor path too: generate a rule from the same source guidance so Cursor stays on the same Python workflow.
The second part of a series on engineering effectiveness anti-patterns, focused on what happens when we keep postponing system health in favor of short-term feature delivery.
A practical guide to what agents are, what they are not, and how to reason about them in terms of context, tools, host loops, and runtime constraints instead of hype.
I kept noticing coding agents drifting into `pip install`, raw `python`, and hand-edited dependency files in Python projects. So I built a small repo with reusable `CLAUDE.md` and `AGENTS.md` guidelines that push both Claude and Codex toward a consistent `uv` workflow.
The first part of a series on engineering effectiveness anti-patterns, focused on how constant context switching quietly erodes focus, depth, and overall effectiveness in day-to-day engineering work.
A reflection on territorial behavior in engineering teams: why it shows up, why it hurts collaboration, and how to catch it in yourself before it damages trust.
The show must go on in the AI era. The responsibility - and the opportunity - for experienced software engineers to help grow the next generation is still here. Sharing knowledge and supporting early-career talent is something AI did not and could not change.
A talk on understanding and using functions in Python — what they are, why they matter, and how to start writing your own — at PyLadies Budapest.
Listening to Boris Cherny talk about “coding being largely solved” felt familiar — it describes a shift many of us are already living, even if we don’t always name it.
Anthropic just shipped native git worktree support in Claude Code CLI. Last week I wrote about a hub-and-spoke worktree setup for parallel AI agents --- now it's getting baked right into the tool.
Git worktrees let you run multiple AI agents in parallel — each on its own branch, in its own directory, without stepping on each other. Here's how I use this when I've got a few features cooking at once.
If you've been using Claude Code for a while, you already know **subagents**. They're the workhorses behind the `Task` tool — you send one off to research something, it comes back with results, and you move on. Simple, effective, and cheap on tokens.
Career growth isn't just about moving faster or working harder. At some point, the real risk shifts: climbing efficiently in the wrong direction. As I think more seriously about moving beyond Senior, I've realized that focus — not ambition — is the constraint most of us underestimate.
As 2025 wraps up, I've been thinking about what actually helped me grow this year. Not everything—just the resources that stuck with me on my journey.
Over the last five years, as a Senior Data Engineer on the EM / Staff trajectory, and at times leading teams directly, I’ve learned that one of the most rewarding challenges isn’t just delivering results…
Many people still think that not knowing something is a weakness — that admitting it might make them look less competent. And in tech, this belief is even stronger.
Critical thinking is your most valuable asset in the age of AI-assisted development. Why judgment still matters when building with AI.
Still relying on print statements to debug your Python code? There’s a much better way: clean, structured, multi-destination, non-blocking logging.
A talk on practical Python data structures — tuples, sets, and the collections module — at PyLadies Budapest.