Becoming a more technical product manager

I have been working with teams on digital products & services for 15 years in a combination of product, program and delivery manager roles. Throughout that time, I have always been a bit frustrated by how little I know about the underlying technologies that power the web. I don’t come from a computer science background, and despite many aborted attempts to learn to code, historically I have struggled to make as much progress as I would like.

However, over the past few years, I have started to succeed a bit more in my goal of becoming a more technical product manager. In this blog post, I talk about why I am trying to improve my technical knowledge and the ways of learning that have worked best for me.

Why does a product manager need technical knowledge?

Technical knowledge isn’t a must-have for most product managers. A little knowledge can even be a dangerous thing if used incorrectly. Product managers who overconfidently try to make technical decisions on behalf of their engineers risk both making the wrong decision and disempowering their team at the same time.

That said, I think becoming more technical has made me a better product manager.

As a PM, I need to balance user/business value, usability and technical viability when I make decisions. Understanding the domain helps me make better decisions, faster.

As a PM, I need to work with engineers every day. Sometimes I even manage products that engineers use. Building my technical skillset helps me to better empathise with engineers and data scientists, both as colleagues and users. For me, there is a big difference between knowing something in theory and knowing it because I’ve done it a bit myself. Things like Jupyter Notebooks, APIs and HuggingFacedoing are much easier to understand now that I have used them.

As a PM, I need to understand our data: both product/user metrics and the data that we present to users in our products. Better understanding my team’s data and how to work with data in general has given me a much richer understanding of the products I manage, and the role of the data scientists, analysts and engineers I work with.

My technical background

Despite my Father’s best efforts to get me into building software as a kid, it never really stuck. I remember trying to follow tutorials on Visual Basic back in the 90s and finding it far less accessible and certainly less interesting than football and video games. I studied economics, politics and international relations at school and university, and my technical skills didn’t extend far beyond spreadsheets and trying to get PC games to work properly.

Before University I started to get into graphic design and email marketing. After leaving University, I found myself working with a charity in Cambodia. I started learning web design there when I built a basic static charity website using HTML and CSS. This opened up quite a few doors for me, and I built quite a few other basic sites myself over the next couple of years. However, the advent of content management systems like WordPress and my move into more of a digital team management role meant I didn’t write any code for a while.

Ways of learning that have worked for me

Blogs I Follow

One of the best blogs I have found is Technically. They describe themselves as “a knowledge base for learning about software concepts”. It is aimed at product managers and other non-technical roles who want to understand software and work better with developers. To date, I have been too cheap to pay the $8 per month subscription, but I am signed up to the mailing list and have found some of the free articles on topics like “What’s web scraping” and “What’s a data science notebook” very informative. In some very theoretical future non-busy month, I imagine myself paying for a one-month subscription and reading everything I can.

Other than technically, I tend to just research specific topics as and when they come up as something I need to understand. I would have done that in previous years by Googling or searching for a Reddit thread where users recommend the best learning resources. But nowadays, I tend to start by asking ChatGPT or Gemini.

Online courses

In recent years, there has been an explosion in resources that help people learn computer science. With time, these have become noticeably more accessible.

Two of the courses I have found most useful are:

CS50: Introduction to Computer Science by Harvard. I audited this course a few years ago. The lectures gave me a good overview of computer science, and the exercises gave me a chance to explore a wide variety of languages and learn about different levels of abstraction in software.

Data Scientist: NLP Specialist Career Path by CodeAcademy. I started doing this course when I joined Climate Policy Radar (a climate tech startup that works with AI, NLP and data science). It took almost 18 months to complete. It gave me a very broad introduction to the tools and techniques that data scientists and analysts use.

The big benefit of doing these courses is that I am much more capable of keeping up with technical conversations and can make more informed decisions with my team. There is obviously still a huge gap in capability between me and even the most junior data scientist or software engineer.

Codeacademy certificate
This certificate licenses me to make jokes with the data scientists about being one of them now

Use it or lose it

These aren’t the only courses I have done. In years gone by, I have on multiple occasions spent months doing online coding courses, only to completely ignore the topic for months or years when work gets busy or something else comes up in life.

Part of the reason I have found these most recent courses more useful is that the courses are getting better. But the main reason why I have stuck with it is that I have turned technical learning into a regular habit. When it comes to learning and retaining things, I have found you need to use it or lose it.

This has been made much easier by us introducing a 4-day work week at work, which gave me the space to complete the course. Since I finished, I have been using a chunk of what word have been my 5th work day to focus on my hobby projects.

Doing projects that help my team

Doing projects is a great way to learn a new skill. I have taken on a couple of projects for my team in the past year:

  • exploring our data quality metrics. When we first got access to data on the quality of our parsed text data, I spent a week exploring it myself and shared the findings at show & tell. Since then, the real data scientists have taken it over, thrown away my work and built something a whole lot better. However, the initial learnings were useful, both for me as a learning experience and for the insights I generated for the team
  • detecting potential duplicates in the dataset. This is a problem that one of our data partners raised with us. I spent a few half days exploring this one myself, developing a pretty reliable way of detecting potential duplicates and presenting them in a form that makes it easy for our admins to check

Doing projects that are useful to my team has three main benefits:

  • it helps me learn about our data and technology. Whilst doing both of these projects, I spotted issues with our data and user experience, which have found their way onto our backlog as problems we need to solve. Structured data users are one of our main user groups, so I have also gained a first-hand experience of the journey they go on in trying to use our data
  • it’s useful to others, which gives me a sense of purpose and makes it easier to stay motivated. Presenting findings at Show & Tell that others find insightful and providing a partner with a tool which makes their life easier were both good experiences
  • it means the team take a bit of an interest in what I am doing. They give me feedback on my approach, review my code and help me out when I get stuck. Working with other people is more fun than being on your own, and it helps me get better

Next up for me is:

  • using all the various NLP and ML techniques I have learnt in some data analysis projects on our corpus. I need to go back and use some of the techniques I learnt from CodeAcademy in real life, otherwise, I am going to forget them
  • be able to make basic content changes to our app. This has the double benefit of helping me understand our deployment process, and not having to waste our developer’s time on small text changes
  • to learn to build and deploy a basic app using FastAPI. This is the main Python framework we use. I think this project will give me a deeper understanding of how our backend works. It’ll also mitigate the risk of engineers getting jealous about the amount of quality time I’m spending learning data science 😉

Learning something = being able to explain it to someone

A few weeks ago I went on a week-long work trip about generative AI. On the outbound flight, our lead data scientist explained to me what retrieval augmented generation was. I wrote up some notes, explained it back to him, and he corrected me where I wasn’t quite right. In the 72 hours that followed, I explained retrieval augmented generation to other people about 20 times per day.

This example neatly illustrates the 3 step process I go through when trying to learn technical concepts:

  1. try to understand the thing. I either go and read a bunch of articles, watch some YouTube videos or ask an engineer to explain it to me. Asking engineers to explain things is one of my favourite methods. Asking engineers to show me how the data pipeline runs or walk me through how they deploy a simple feature end-to-end has both been hugely educational and helped me understand the product value in improving and automating those processes
  2. explain it to someone who knows what it is. This might be in a conversation or in writing. I sometimes write glossary entries in our internal wiki for technical concepts I am trying to learn, then ask one of the tech leads to mark my work. Another technique I am increasingly using is trying to draw things. I find that if I can draw a little diagram to explain a thing, then it’s not only easier to communicate, but I feel like my understanding of the concept is stronger
  3. find excuses to repeat myself. As the person who keeps multiple teams and partners in sync, I am usually not short of opportunities to practice explaining things. My very patient girlfriend is also kind enough to listen to me from time to time. If I understand something well enough to explain it to someone, and can still remember how to explain it again a few weeks later, then I will probably remember it

Assistance from AI assistants

I find it much easier to understand code that others have written than I do to create code from scratch. I find it much easier to explain the steps needed to make an algorithm work in plain English than I do to implement that in code.

I use Cursor as my IDE (integrated development environment. This is an app that techies like me use for writing code). Cursor markets themselves as “… the IDE of the future, built for pair-programming with Powerful AI.” I use my GPT4 API key in Cursor. It helps me in two main areas:

  • I can ask it to write code for me based on natural language prompts
  • I can ask it to review the code I have written and suggest improvements or solutions to bugs

If my ambition was to become a full-time engineer, I would be more wary about relying on AI assistance as a beginner. As a professional, it’s important to have an excellent grasp of your trade from the basics upwards.

But despite some friendly banter with the team about me becoming a data scientist, my goal isn’t to be a technologist full-time. Product management is my thing. I am learning more about data and software out of personal and professional curiosity, and so that I can better communicate with technical teams and empathise with technical users.

As someone who can only commit to doing this for less than 10 hours per week (a lot less when the sun is shining), if I tried to do this the hard way, I would make very slow progress. My progress might be so slow that I become bored or disheartened, and give up on the whole enterprise. Using Cursor has helped me make progress faster, which has kept everything interesting, meaning that I have kept up the habit and covered a wide variety of areas in a short space of time. And I have got a lot better at prompt engineering – one of the biggest technical skills everyone will need for the future.

Tools like ChatGPT are only getting better as time goes on, so as long as I keep making an effort to understand the solutions that AI assistants suggest, I think the benefits far out way the costs.

Was this all worth it?

I am pretty chuffed with the progress I have made this past couple of years, and not just because it has made me a better product manager. It has also been quite fun to learn more about the technologies that I have been working with for pretty much all of my working life. It is nice that I know a bit more about how things work, and to be more capable of solving problems myself when the need arises. I’m excited to think about what I might be capable of in a couple of years if I keep up the habit, which is something I have every intention of doing.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *