This question gets asked a lot: Do I need to learn to code to be a great product manager? My answer has been consistently no. However, having a basic understanding of technology (coding being one particular skill), can help you get shit done and increase your empathy when working with software engineers. But besides reading “how the internet works”, is there a practical, hands on way to learn technical skills besides learning a programming language?
Why learning to code isn’t a requirement for most PMs
Product delivery is only one part of product management. Within product delivery, software engineering is one specific skill that’s necessary when creating software products. In "Practical advice for PM working with software engineers”, I describe coding as only one component of software engineering. So arguing you must learn to code to be a successful product manager is similar to saying you must learn how to butcher meat to be a restaurant operator.
Product management
>> Product discovery & delivery
>>>> Product delivery
>>>>>> Building software products
>>>>>>>> Software engineering
>>>>>>>>>> Coding
There are product managers who don’t manage software products or work within product delivery and rarely interact with “coding”.
Okay, then why should I read on?
First, computers and the code that run on them help automate repetitive tasks. So learning some basic technical skills can help you do some parts of your job faster. Think of it like any other skill/tool to help you get shit done.
Second, learning basic technical skills helps you build empathy with working with others. Specifically, it increases your vocabulary and how you communicate with others. Many professions have their own terminology and software engineering is no different.
Third, software is being infused into every product. Even if you are managing physical or service products, it’s likely you’re going to be working on something “digital”. So, you might as well get familiar.
Three basic technical skills to learn
I’ll focusing on three technical tools. These are foundational, practical, and often more used than if you learned how to write a script that prints “Hello World” on your screen. Besides, if you want to learn coding, there’s no lack of resources online via a simple search.
1. Text input via the command-line
There are many different interfaces. You are used to two: touch and graphical (mouse/touchpad).
But there’s an older one: the command-line interface (i.e. keyboard only).
Let’s jump straight in.
Mac users:
⌘ (command) + spacebar opens Spotlight
Type
terminal
Profit
Windows users:
⊞ (windows) opens Start
Type
Power Shell
(alternative: TypeCommand Prompt
)Profit
You’ll be in slightly different “shells”, or computer programs that will take different text inputs as instructions. Two videos (< 5 minutes each) showing some basic commands.
Mac Terminal
PowerShell
To illustrate an example of similarities and differences:
In either Mac Terminal or Windows PowerShell , typing
ls
allows you to see a list of files in your current directory.However, if you are on Windows and opened Command Prompt instead of PowerShell, you’d type
dir
to do the same.
This is because the “shell” or program you are running is programmed to understand different text input.
Using the command line makes you aware of text input as a alternative way to interact with a computer. This isn’t coding. Instead, you are navigating and using a computer by text.
To apply this interaction, consider command-line console for your web browser. You can try this right now if you’re reading in a browser. Chrome users can press Ctrl + Shift + I and click on Console.
You’ll discover a nice little ASCII art. Drop a note if you found it.
2. Query relational database using SQL (Structured Query Language)
Once you have some comfort interacting with computers through text input, it’s time to learn about SQL. SQL is simply a specific language (i.e., set of terminology, text, structure) that allows you to manage a database.
For PMs, you’re likely use SQL to ask questions by “querying” the database. Here’s a 5 minute introduction to SQL.
Put those skills to the test by visiting https://sqliteonline.com/. No program to download or database to install.
Try to write a SQL query where you return results in the HINT column that has the values “table_name” and “col2”. Here’s a HINT.
SQL is used in many applications, especially analytics tool with graphical interfaces. When you are sorting, filtering, or set conditions on data using Looker, Metabase, or Tableau, there’s SQL running underneath and they all support writing or generating SQL queries.
Learning SQL is impractical in abstract so I strongly recommend you try it out with data you’re already have access and are familiar. Talk to your team to request read-only SQL access so you can practice and not accidentally delete data.
3. Making Web APIs calls with Postman
We’ve skimmed the command-line interface and text input. That allowed me to introduce SQL to ask questions about our data. Now, what if you wanted to ask questions and get results from another system rather than your own database? You probably talk about Web APIs all the time. Did you know you can try it out yourself using a tool called Postman? Here’s a 3 minute video.
The above example uses a POST API to send data. But you can also use a GET API retrieve data. Download Postman and configure this simple GET request for : https://api.agify.io?name=michael
This GET Web API returns the results of a person’s age based on the name provided. Try your changing “michael” to a different name.
BTW, you can use a command line interface rather than Postman to do the same thing.
Mac users:
Open up your Terminal
Type
curl ‘https://api.agify.io?name=michael’
Windows users:
Open up your Power Shell
Type
curl ‘https://api.agify.io?name=michael’
Postman has a feature called “Code” that generates code for different programming languages in making a Web API request.
And we’ve now come full circle, from command-line interface, to using SQL, a specific language to ask questions about data, to using Postman to interact with WEB APIs graphically and via command-line interface.
Additional Reading:
Freecodecamp > If you want to learn to code.
Excel to SQL > Why learn SQL
Getting starting with PostgresSQL > If you want to setup your own database to practice writing SQL.
What's the difference between a console, a terminal, and a shell? > If you want to learn more about terminals, shell, and console.