There’s a common idea that Project Managers and Software Engineers live in different worlds. One is obsessed with plans, the other with code. But in my experience, the best teams close that distance.

I’ve done both. I’ve shipped features as an engineer, and I’ve managed roadmaps as a PM. The lesson that stuck with me? Discipline is the shared language.

Scope is a technical problem

A feature that’s “almost done” but never merges is a technical risk as much as a schedule risk. As an engineer, I learned to spot the last 20% that takes 80% of the time. As a PM, I learned to ask what done actually means before anyone writes a line of code.

When I bring both mindsets to a plan, I’m not just stacking tasks. I’m making a plan that respects complexity, uncertainty, and the people doing the work.

The power of a good “no”

  • No to the last-minute feature that breaks the architecture.
  • No to the meeting that could have been a comment.
  • No to the scope creep that turns a two-week sprint into a two-month slog.

Saying no gracefully is one of the most useful skills in both roles. A senior engineer does it by protecting the system. A good PM does it by protecting the team.

A rhythm that works

Here’s the cadence I try to keep:

  1. Write the why before the what. Every feature gets a short brief, not a spec war.
  2. Ship small and often. Visibility beats perfection.
  3. Retrospect like you debug. Blameless, systematic, and honest.
  4. Keep the bus factor low. Documentation and pairing are insurance, not overhead.

The tools and languages change, but this discipline doesn’t. Project management and software engineering look like two jobs, but to me they’re one skill used in two directions.