Modern software management practices have evolved two distinct skillsets for navigating the problems of team coordination around complex software delivery. These two areas are product management and software engineering management.
Product management centers around areas like market positioning, product strategy, and customer-focused iterative development. The product manager determines the “what” (what are we building), aligns the team around the “why” (why build this), and acts as a liaison to users and the wider market. He has the focus on the users and owns the product road-map.
Software engineering management focuses on the practice of coordinating teams of programmers in the delivery of high-quality shipped software. The engineering manager sets the “how” (how will we build it) the “when” (when it will be ready), and the “who” (who will build it) as well as the art of making informed engineering tradeoffs, e.g. as relates to time-to-market, performance, quality, and cost. He has the focus on the development team and is in charge of making sure that main tasks and engineering responsibilites are completed.
A strong “project manager” and “engineering manager” partnership is at the heart of all high-achieving software development teams. .
Summing-up: Product manager’s head is on checking if users do not use the product. Engineering Manager’s head is on the line if the product does not do was promised, and what was promised is not delivered on time.