Should Product Managers know how to code?
In this article, I discuss the benefits I have discovered as a Product Manager, after learning to code. I have broken down what I have learned down into two main areas. Those that improve my product team management skills through the first hand experience of having built something, and, secondly, those skills I have learned that help me work with a team to craft a better product, together.
In this case, “a better product” is contextual to the situation - it could be simpler, more appropriate, legal, compliant, more secure, quicker to market etc. and often includes making compromises.
Product Team Management
At the end of last summer, I gave a talk at The KonferenSE (Klarna’s internal Product, Design and Engineering conference) entitled “Leading Through Doing - The Power of Side Projects”.
Preparing for the talk itself was a journey of self discovery. I had to find a topic I was passionate about, learn how to talk to a crowd of 1,700 people and stay on track for 5 minutes, with 20 auto-advancing slides. I decided to talk about some of the key things I learned through coding, that help me be a more effective Product Leader.
The learnings I discussed in the talk, that I gained through coding, came down to three core topics. Each of these combined helped to improve the pace at which we built product, and brought value to our users.
Removing distractions
Through learning React and working on side projects involving multiple complex API’s and frontend components, I started to scratch the surface of how complex an app can be. Trying to concentrate on solving individual complex tasks, as well as remembering how props move through multiple different components, helped me understand how important it is to be able to focus.
From this, I work to ensure the team has the maker time they need to complete tasks, ensure they are empowered to skip meetings, as well as generally reducing the amount of time spent in meetings.
Staying Focused
I started working on lots of different tutorials (The Free Code Camp: Data Structures and Algorithms course was a particular pivotal moment for me), but it wasn’t until I set a goal that things became real and I had something clear to work towards, and bigger and more complex challenges to solve.
I learned that it is really important to set goals, clearly and concisely. Once we’re clear, I need to facilitate the communication and bring the team together to ensure the solution we’re working towards is realised successfully.
Plan for the Unplanned
Many times during the process of creating a side project, I have approached a problem in a particular way, only to find it doesn’t work with my set up or the next step / last step in the process of creating the website / app etc. I’ve learned that having flexibility in our approaches is so important. I need to be prepared for changes to how we approach something, and be OK with it.
As a team, we need to focus on where we’re adding value, not always how we accomplish that. I need to allow for changes, and we need to de-risk work with detailed proofs of concept, ensuring we’re prepared for what comes next.
Overall, I continue to develop a new found respect for the work my team has to accomplish - whether it’s engineering, QA, data analytics or design. As a Product Manager it’s often easy to forget that our jobs often involve jumping from pillar to post between multiple different tasks. Flow state for us can be moving through a large amount of small tasks. That’s usually not the case for our teams.
Crafting Better Products
I believe that, as a Product Manager, having a strong understanding of how data models, infrastructure, api’s and frontend technologies work and co-exist together, I am better able to contribute to solutions and problem solve with the team in order to define how we approach solutions, as well as sense check plans and troubleshoot issues. This is especially true for nurturing products from 0 to 1.
Whilst I originally learned the basics of coding around 20 years ago, I picked it up again around 5 years ago, jumping into Swift and then JavaScript. I’ve since learned React, Node, a little bit of Next and am completely obsessed by Tailwind. I’ve build one full app from the ground up and am in the process of building another.
There are continued benefits from having a strong understanding of how the technical side of things come together. The hard skills of understanding technology and code, help to reinforce the softer skills around those particular skills and improve overall effectiveness.
Hard Skills
How data is stored and managed
This is a foundation of learning how the technical side of things work. It’s an essential part of storing and retrieving data. In particular what a data model is, how it’s defined and how to store structured data. Starting with inspecting API calls, and building up to creating API’s with Create, Read, Update and Delete (CRUD) actions on a set of data.
This really helps build an understanding of the fundamentals of data storage and transmission, and how to work with the data. For example: user flags, arrays of data.
How systems connect to each other
Learning how API’s work and allow different parts of a product to connect with each other really helps to improve the understanding of why things might need to be done in a particular order or for a particular reason. Having to call one API, which retrieves data to allow another API to be called builds a better picture of the whole system.
Building apps that need to connect to external services with some kind of authorisation also helps to improve our understanding of connected services and systems.
Infrastructure Opportunities and Limitations
Following along from understanding how data is stored and managed, and how that data connects from one system to another, it’s logical to start to understand how those different systems build up infrastructure across multiple different parts of a product.
Learning more about bigger systems and infrastructure allows you to get involved in more conversations about it. You can also start to understand dependencies on different systems, problem solve issues and look out for opportunities to add to the infrastructure with different external vendor systems.
Reading and writing technical documentation
Ever wondered whether a library, service, product or app is something that you can use or not? Learning how to read code, and technical documentation that comes with that, opens up a whole new world of being able to do some quick research on whether that particular library, service, product or app is worth investigating further.
Data analysis
Finally, understanding how data is stored, managed and transmitted can really help in data analysis. I have found an increased understanding particularly useful when it comes to reviewing product feeds from merchants to see if it’s in the correct format. I’ve used it when mutating data from one form to another (json, csv etc.) ready to do some basic data analysis. This also really helps when understanding how tracking and events work in your product, ensuring you’re capturing the correct events, at the correct time, and with the most useful attributes.
Soft Skills
Whilst having the hard skills above isn’t always very obvious. All the soft skills are improved by understanding different components Problem solving, creativity, communication, stakeholder management.
Join the conversation
The first thing these hard skills allow you to do is to start joining in with the conversation. At first it will be listening, as your confidence and the teams awareness of your knowledge grows. Then it will be joining in with practical solutions for problem solving and creatively exploring solutions.
Stakeholder Engagement
One of the most useful and immediate benefits that will come from understanding the technical side of things will be to help communicate different scenarios, problems, ideas and solutions to stakeholders. Instead of saying “I’ll ask the team” or “Let me find out for you”, because you’re already in the conversation, you can explain much more easily. You may also develop different analogies for things as you are discussing them. This also helps stakeholders build trust in you as an individual as well.
Understanding how to code, as a Product Manager, also helps to form a base understanding of when ideas might be met with technical challenges, take a long time or be problematic for various reasons, and stop or mould those before they interrupt the team with extensive investigations.
Creative Problem Solving
One of my favourite parts of understanding a bit more about coding, data and infrastructures is how I can still use the Product Manager card. When problem solving, I often simply say “I’m not an expert, but what about…” as a way of me asking for permission to contribute, reframing the problem as I understand it, and then taking the opportunity to suggest something that might not have been thought of.
Conclusion
Learning to code takes time, so pace yourself. Not everyone has the ability to drop everything to learn to code in a few months. Free Code Camp is a great place to start.
It also takes time to build that trust and confidence with your team to be brought into and earn permission to be a part of the conversation. You’ll start again with each new team.
Learning how to code, as a Product Manager, has allowed me to understand how to create a better working environment within which to do their work. It’s allowed me to understand the type of work they are doing, and get more involved. It’s also allowed me to better communicate our progress, freeing up more time from their daily work. The more I learn, the more each part in the process benefits the others.
I highly recommend anyone interested in participating more in the product creation process to consider doing the same.