Stop thinking like a Software Engineer. Think like a Product Manager.

 

 

Blog post by Sean Stapleton (Computer Science | Class of 2022) Interning at Clinc Al in Ann Arbor.

In my first few weeks as a software engineering intern this summer, I have had the opportunity to work on a product that is used by millions of people to solve challenging, real-world problems, and learn from incredibly smart and talented co-workers. It is an exciting application of the engineering fundamentals I’ve learned in school – system design, algorithmic efficiency, logical reasoning – except I get to use these skills on groundbreaking products and technology.

But, the engineering aspect of a software role is often romanticized. In the past few weeks, most of the success I have found has not been due to my engineering ability but rather to another, often overlooked, skill: product sense.

Product sense is the ability to understand what is important in a product, what makes it great.

Consequently, the most important takeaway I have had from my experience so far is to occasionally forget the engineering mindset and instead, think like a product manager. Below, I outline the three key aspects of product management and why I’ve found success in each.

1. Communication

Great product managers need to be clear, concise and intentional about their communication. They deal with many different stakeholders and need to make sure everyone’s incentives and goals are aligned. On top of that, communicating their work to other managers or engineers can spark fruitful discussions that lead to more creative and informed ideas.

These principles apply to software engineering as well. Learning to communicate well will enable you to learn much faster by asking for help and advice when needed, come up with more creative ideas through active discussion, and most importantly help you convince your manager that the work you are doing is important. Communication skills are also relevant to good documentation, something every software company should have as a top priority.

2. Prioritization

As a product manager, you need to carefully weigh the importance of product features and decide what is best for a company to focus on. Not having a clear idea about what your top priorities are can lead to spending way too much time on tasks that don’t move the company forward.

In software engineering, it’s important to think the same way. Especially as an intern, you only have a set amount of time to absorb as much information as possible; aim to work on projects with the highest leverage and most returns. You want to find work where you can use your expertise to provide the most value to the company, but also learn new skills along the way. While it may be daunting, it is important to be transparent with your mentor or manager about your goals for the summer, and work with them to find the best possible projects for you and prioritize the tasks you work on.

3. Think customer first

Possibly the most important role of a product manager is to know the customer. Technology companies rely on PMs to allocate resources towards features and products that will spur the most growth for the company and create the largest possible impact. This can only be done with a thorough understanding of the company’s user base.

This is also the most important skill in software development. Knowing you user is not only useful to decide which features to build, but also how you build them. For example, let’s say you are responsible for developing a tool to help people analyze data. If your intended user is a developer, it might make sense to build this tool as a command-line interface. However, if your user is a non-programmer, you will definitely want some sort of UI or reporting tool.

Software engineering is a challenging role to navigate, but if done well can be incredibly rewarding and fun. This mindset has been very helpful to my own development as a software engineer, and I hope it can be of use to others as well.

Please let me know if you have any thoughts or comments – would love to chat! You can reach me at seancs@umich.edu.