7 Skills That Separate Great Product Managers From an "Ok" One

5 min read

thumbnail

As a technical product manager who leads software teams in my own company, I’ve worked with many product managers throughout my career. I’ve noticed a clear distinction between junior and senior PMs, and it often comes down to a few key skills and knowledge areas. In this post, I’ll share the seven essential things that great product managers know and do, which set them apart when working with software teams.

1. Understand System Constraints

Great product managers have a solid grasp of what a system can and cannot do. This knowledge is crucial for effective communication with both clients and development teams.

Let me explain this with a real example that happened just this morning:

A client asked if they could add multiple users to their store in our system. To illustrate why this wasn’t immediately possible, I created a simple database model:

db

In this model, a store belongs to a single user. To allow multiple users, we’d need to change the database structure, perhaps by adding a “membership” table to connect stores with multiple users.

db

Understanding these constraints allows PMs to:

  • Communicate clearly with clients about what’s possible
  • Make informed decisions about feature requests
  • Collaborate effectively with developers on system changes

Solution:

  • Familiarize yourself with basic database design concepts
  • Regularly discuss system architecture with your tech leads
  • When in doubt, consult with developers before promising features to clients

For more on this topic, check out my video on Database Design Tips for Faster and Better MVPs.

2. Recognize the Impact of Team Composition

The composition of your development team can significantly affect project outcomes. One crucial insight is that bottom performers can have a disproportionate impact on team productivity.

Here’s a quick comparison:

One senior developer working for 8 hours = 8 hours of effective work

One senior + one junior developer:

  • Senior: 6 hours of coding + 2 hours of reviews/support
  • Junior: 1 hour of effective work
  • Total: 7 hours of effective work

While it might seem counterintuitive, adding a junior developer can sometimes slow down the overall team productivity. However, it’s not always black and white. Junior developers are essential for building a strong team in the long run.

Solution:

  • Carefully consider team composition for critical projects
  • Balance the need for current productivity with long-term team growth
  • Provide adequate support and mentoring for junior team members

3. Be Aware of Brooks’ Law

Brooks’ Law, from the famous book “The Mythical Man-Month,” states that “adding manpower to a late software project makes it later.” This counterintuitive principle is something every PM should understand.

I’ve seen this many times in my career. When a project is running behind, the temptation is to add more developers. However, this often backfires due to the increased communication overhead and the time needed to bring new team members up to speed.

Solution:

  • Focus on optimizing current team productivity rather than adding members mid-project
  • If you must add team members, do so early in the project
  • Consider breaking the project into smaller, more manageable parts instead of expanding the team

4. Prioritize Alignment

Alignment between user needs, developer efforts, and business goals is crucial. Misalignment can lead to wasted effort and disappointing outcomes.

To achieve better alignment:

  • Clearly communicate the “why” behind product decisions to developers
  • Hold regular one-on-one meetings with team members
  • Use a structured approach for these meetings, such as:
    1. Discuss recent accomplishments
    2. Address any problems that have arisen
    3. Review priorities
    4. Ask for feedback and corrections

This approach ensures everyone is on the same page and working towards the same goals.

5. Learn to Read (Some) Code

While it’s controversial, I believe product managers can benefit from being able to read basic code. You don’t need to become a programmer, but understanding the basics can provide valuable insights.

Here’s what you can do:

  • Review merge requests in your version control system
  • Read commit messages and pull request descriptions
  • Look at the general structure of the code (even if you don’t understand all the details)

This practice helps you:

  • Understand the complexity of features
  • Appreciate the work your developers are doing
  • Spot potential issues or misalignments early

6. Expect and Plan for Failure

In software development, things will inevitably break. Great PMs understand this and plan accordingly.

Key considerations:

  • How will the system fail?
  • What backups and failsafes are in place?
  • Do we have proper error logging and monitoring?
  • Who is responsible for fixing issues when they arise?

By anticipating failures, you can minimize their impact and ensure faster recovery.

7. Master the Business Domain

This is the most critical skill for any product manager. If you take away only one thing from this post, let it be this: You must thoroughly understand your business domain.

This means:

  • Knowing exactly what you’re building
  • Understanding user needs in depth
  • Grasping the critical processes behind your product

For example, if you’re building a PDF scanning system, you should understand how PDF scanning works, its technical challenges, and what makes it valuable to users.

I’ve seen product managers who thought their job was just about moving tickets around and talking to clients. But without a deep understanding of the domain, you can’t make informed decisions or effectively guide your team.

These seven skills are what separate great product managers from the rest. By mastering system constraints, team dynamics, project management principles, alignment techniques, basic code reading, failure planning, and most importantly, your business domain, you’ll be well-equipped to lead software teams effectively.

Remember, being a successful product manager isn’t just about managing tasks—it’s about truly understanding your product, your users, and your team.

What skills have you found most valuable in your product management career? Share your thoughts in the comments here!

P.S. If you’re interested in learning hands-on how we develop software in our teams, send me an email or check out my video where I discuss this opportunity in more detail.

Available slides

  1. slides
  2. slides_social

Till Carlos

I'm Till, a senior developer who started a software company. I explain software concepts for people in leading roles.