I’m a software engineer and I tech mentor product managers.
If you're a non-technical product manager who struggles with feeling confident about your technical skills, taking a coding class won't make you feel more confident. In fact, it'll probably make you feel overwhelmed and confused.
Let me explain.
In the past decade, I've worked as a developer at numerous companies of varying sizes and industries including entertainment, pharmaceuticals, advertising, and finance. Before I became an entrepreneur dedicating myself full-time to making technical literacy more accessible to non-developers, I worked as a software engineer for 3.5 years at Amazon, first in display advertising and then on their internal tools team. Before that, I was a software engineer at a mid-sized personal finance startup.
Suffice to say, I have a decent amount of experience working with product managers building websites and software in various work environments. And one of the things that stood out to me is how common it is for a product manager to have stumbled into their role from an entirely unrelated background. This means many PMs don't have an engineering background or have never received any technical training.
While I've enjoyed working with the majority of product managers I've had the pleasure of being on a team with, as a software engineer I admittedly often find myself having difficulty communicating with product managers about the limitations of my work, why I can't deliver a feature/product within their ideal timeline, and get frustrated when user stories, mocks, and business requirements are not crafted in a way that enables me to do my best work (often even hindering it).
Communication and collaboration between PMs and engineers are notoriously tricky to navigate and while there are numerous contributing factors, a lack of shared common technical knowledge and understanding is almost certainly one of them.
It didn't dawn on me how common it was for product managers and other non-engineering roles to feel unconfident about their technical skills while feeling unable to ask questions for fear of looking "stupid" until one of the product managers I worked with at Amazon approached me and opened up about her struggles.
Wanting to help, I started "tech mentoring" her on fundamental terms and concepts in technology and software and the technical ins-and-outs of our app. We met every 2 weeks for half an hour, but also on an as-needed basis, like before and after engineering-PM meetings to prep and/or debrief, and when she worked on business requirements and user stories.
Within 5 months of tech mentorship, not only was there a noticeable difference in the quality of her business requirements and user stories, but the team noticed the improvement in her ability to ask well-informed questions during meetings, and on occasion even offer solutions to technical problems!
Through the experience, I got an intimate understanding of what technical concepts were and weren't obvious to product managers. This includes concepts as ubiquitous as APIs, servers, data types, and even the difference between Git and GitHub.
Our working relationship also improved through our consistent bi-weekly meetings. I learned a lot about the product management discipline and perspective through our mentorship meetings and her vice versa with the engineering perspective.
Looking back, the mentorship experience was one of the most rewarding things I ever did in my career. It really opened my eyes to how we can bridge the communication and knowledge gap between product managers and engineers.
I'm sharing this story because I want to illustrate how as a product manager you can feel more confident about your technical skills without ever taking a coding class. The reason is simple but not obvious or talked about. And that is coding and being technically literate are two separate skills.
That's right. I've met plenty of junior engineers who can code, but ask them to evaluate different system architectural styles and they wouldn't be able to. Or ideas on how to improve latency and browsing speed time for an app, and they'd struggle to come up with viable options. Or even how scaling in cloud computing works and how we can leverage it in different business scenarios and they'd likely draw a blank. And these are the sorts of real conversations engineers discuss during meetings you sit in.
Engineers don't talk about how to assign a variable, or write a for-loop, or the difference between a hash map or a linked tree during meetings, but that's what you learn taking a coding class. In a coding class, you're learning how to code in a very specific programming language. But building great software involves so much more than just coding.
Plus as a PM, designer, customer success, sales professional, etc. your job is not to code. Your job is to understand enough about technology and software so that you can work with and communicate effectively and cohesively with engineers to create a feature or product that will delight customers (and leadership!).
So, if you don't come from a technical background and want to feel more confident in your technical abilities and/or work better with engineers, here are 3 tips to get you there:
1. Find a tech mentor
Similar to how I tech mentored the product manager I worked with, you can also find a tech mentor to personally help you on your journey to gaining confidence in your technical skills.
Tech mentorship is cross-functional mentorship with someone that possesses a technical background and experience – usually an experienced developer or technical product manager (TPM). If you're a current product manager, I recommend an engineer or TPM on your team as a tech mentor. This is the best option since the engineer or TPM has direct knowledge of the product, the business, the customers, and team/org culture. Only team members can answer questions about a specific product or use case. Having a member of your team as a tech mentor also helps with collaboration by building trust through consistent communication.
I suggest meeting regularly (i.e. once every other week) for 4-5 months and on an as-needed basis. After 4-5 months, you can choose to keep it going or switch to just an as-needed basis. Use technical resources as a facilitator during discussions (i.e. software diagrams, API documentation, tech docs, articles, playing around with the product). It's also important to ask open-ended questions during mentorship sessions (i.e. why certain decisions were made, alternative solutions, etc.).
2. Focus on acquiring broad knowledge across the following technical topics
Unless you work on a team where you need deep domain knowledge, I highly suggest focusing on building the fundamentals broadly across the most important verticals in software first. To make things simpler, I suggest focusing on learning the following topics and concepts:
- Client-side & Server-side (Frontend & Backend)
- APIs (and their components)
- How programming languages work (Compiling)
- Cloud Computing (Understand scaling)
- Architecture (Microservices & Monoliths)
- Data Structure, Databases & Database Schemas
- Software Development Lifecycle
- How software is deployed (CI/CD)
3. Get technical training through courses, newsletters, and cloud tutorials
It's a good idea to get some technical training to build a solid foundation in software fundamentals. There are a few ways to do it.
You can take a technical literacy course created specifically for product managers like Skiplevel and/or subscribe to newsletters that teach technical literacy in simple terms like Technically. Cloud computing companies also offer lots of beginner, intermediate, and advanced tutorials across many of the topics I noted above including in frontend and backend, data, APIs, infrastructure etc. Here are 4 beginner Cloud tutorials from popular cloud companies like AWS to get you started.
And most importantly, remember: with the right mindset, dedication, and resources, you can go a long way in building confidence in your technical skills and knowledge!