Advice for aspiring product managers: use a side project to build technical fluency

Advice for aspiring product managers: use a side project to build technical fluency

If you want to be a product manager, you'll need to be technically fluent even if you don't have a CS degree. A great way to build technical fluency is to select a simple side project, build it and learn the technical skills necessary along the way.

Many aspiring PMs think about teaching themselves a specific programming language to learn more technical skills. While there's nothing wrong with that, we believe that pursuing a side project (which will include learning a few languages) is a more effective learning mechanism for two reasons:

  1. End-to-end: You'll learn how programming languages fit together to deliver a full technology product
  2. Context: Instead of just learning concepts in a vacuum (e.g., declare an array), you'll learn how to apply the key concepts you need directly in the side project.

Side projects are an ideal way to build technical fluency

As a product manager, you won't spend all day coding. In fact, many product managers never write a single line of production code for their jobs! Thus, the goal in becoming technically fluent isn't to become the best Javascript programmer, a Python mastermind or leading MongoDB expert.

That might be a nice outcome (and a great bonus if it happens!), but the intent is to build working knowledge of how all the technical layers fit together (e.g., a front end, database, servers, etc.). Ultimately, product managers are responsible for how an overall product comes together, so putting one together yourself, even if it's on simple side, is an incredibly valuable exercise.

How to pick a good side project

Before we get into the types of things you'll need to learn to bring a side project to life, let's level set on how to pick a good side project.

Why? If you pick the wrong side project - say one that's too complicated - you will likely lose momentum and the project will stagnate. A simple, completed side project is worth a thousand complicated, partially completed projects.

Here are four tips to generate a good side project ideas:

  1. Find a pain point: Pick a simple pain point you have (e.g., remembering what groceries to pick up)
  2. Choose simple implementation: Think of the drop-dead, no frills simple way to solve it (e.g., a list of items I can add to)
  3. Look to store data: An app which requires saving information will have the best likelihood of teaching you about the full tech stack
  4. Give it an inscrutable codename: Give the project a mysterious codename that sounds badass and makes you feel important (e.g., ZeusCannon)

OK, we admit the fourth step isn't necessary... but it's fun. And who said side projects shouldn't also be a little bit fun?

Selecting a tech stack for your side project

Before you start building, you'll need to decide which programming languages and technologies you're going to use. In real production products, this stage would include a lot of real debate and weighing of pros and cons between product managers and engineering managers.

Here, we're going to skip that and propose a specific tech stack. Remember that the goal isn't to learn the sexiest new programming languages out there. Instead, we want a project we can complete, and in the process of completing it, will make us more technically fluent. Thus, our tech stack recommendation optimizes for two things:

  1. Online tutorials: A big library of available, high quality, cheap (and or free) tutorials for the languages we need to learn
  2. Integration points: Certain languages integrate very well with others (e.g., MySQL and PHP) and thus ease full-stack development

Given our criteria, the sample tech stack we propose below is called a LAMP stack, which stands for Linux, Apache, MySQL, and PHP.

Starting with a LAMP tech stack

Thanks to services like Amazon Web Services (AWS) and Google Cloud, setting up your stack on a server is easier than it's ever been before. Both of those providers will provide a lot of flexibility and if you wanted to utilize something different than a LAMP setup, you certainly could.

However, for our purposes, we're going to stick with LAMP for the aforementioned criteria we set out. In addition, you'll also need to pick up a little front-end web programming languages to build your side project. At a minimum, you'll need to know HTML. If you want to add bells and whistles down the line, you might use some CSS and Javascript, but as we note at the end of this post, we recommend saving that for last.

Based on our recommendation, your side project tech stack would look like this:

  • Linux: Operating system
  • Apache: Serving technology
  • MySQL: Database system
  • PHP: Back-end language
  • HTML (with optional Javascript and CSS): Front-end language(s)

How to start learning the required technical skills necessary

As we've mentioned, learning a programming language in a vacuum usually isn't that useful. Before you jump in, we've got a key piece of advice: try to anticipate what you'll need to do in code before you start learning. This has two benefits: 1) it will increase your recall when and 2)

Learning with a purpose in mind

The time you spend in online tutorials and courses will be 10x more valuable if you map out what key tasks your side project will need to accommodate.

For example, if you did end up building the aforementioned grocery to-do app, you might note that you'll need to do a few things:

  • Collect items as input from the user
  • Save the items so a user can retrieve the list as needed
  • Allow the user to mark an item as completed

If you're brand new to programming, you might have absolutely no idea how to accomplish any of the tasks above in code. That's totally fine! But now that you've got a sense of what types of tasks you'll need your code to accomplish, you can keep an eye out for how to accomplish those as you start learning.

This is extremely helpful way to learn programming because your brain won't be trying to store a disparate series of facts. Instead, it will be looking for tools and systems to help solve a problem you have (e.g., how to build your side project tasks).

Recommended tutorials to start learning

There are a million different tutorials, courses, books and learning tools available. And many of them are fantastic!

Our list below is optimized to 1) fit together well (e.g., the MySQL tutorial assumes you'll use PHP, the server setup is designed for PHP and MySQL, etc) and 2) be relatively low cost (all of it together would be $35 / month or less).

Finally, we've listed the content in our recommended order of consumption. In fact, you really don't even need to broach steps three and four until you're ready to start writing your own code.

  1. Treehouse beginner PHP: A solid PHP course that will cover the fundamentals and teach you the basic HTML you'll need to know for a simple web app
  2. MySQL tutorials with PHP examples: A comprehensive guide to setting up a MySQL database and querying it. It pairs well with the above PHP course because the tutorials focus on interacting with MySQL using PHP
  3. Create an AWS instance: The definitive step-by-step guide from Amazon on how to provision a cloud server from them. This will be jargon heavy but don't worry - you don't need to know it all immediately and if you follow the steps, it'll work
  4. Set up a server on AWS: Another definitive guide on how to set up your newly provisioned server as a LAMP stack. Again, it will be jargon heavy, but if you follow the steps as listed, you'll be able to set it up quickly

Filling in the gaps

When you first transition from learning a few of the languages to writing code for your side project, it's going to feel like there are lots of gaps. That's OK. It's normal. Figuring out how to navigate between the basics of a language and building a real product is a core part of the learning experience as you become more technically fluent.

There are plenty of great resources online (e.g, tutorials, courses, Q&A sites, etc.) and we've highlighted a few below. But also, don't forget that simply Googling "How do I do [FILL IN THE BLANK]" is incredibly effective as well. Thousands of newbie programmers have traversed these grounds ahead of you, and Google can find you great answers from someone who navigated it before you.

Helpful resources

  • Stack overflow: a Q&A site for developers that has an extensive database of questions and detailed answers. A great source of content and also a place where you can ask your own questions if necessary
  • W3 schools: A great resource that covers core parts of popular programming languages and has simple tutorials. If you're looking for a reminder on a specific PHP function, HTML tag or MySQL command, it's perfect for that.
  • A text editor: To write code, you'll need a basic text editor. You could use something simple like Notepad (really!) but most people will opt for one of the decent free options (like Notepad++) or a relatively cheap option (like Sublime Text).

Good sample side projects

If you're angling to become a product manager, you're probably itching to build a million different things so generating ideas shouldn't be tough.

However, remember that you don't want to pick something too complicated that will require advanced programming knowledge, an inordinate amount of time, etc. You should pick something that you have a high likelihood of being able to finish.

With that in mind, here are a few good sample side projects to consider:

  • A grocery list app that lets a user store items to purchase and mark them as purchased
  • A goal tracking app that lets a user enter a goal and track progress toward it
  • A birthday app that allows a user to save friends' birthdays and will send each friend an email with a birthday note

Side projects start functional, not fancy

When you start building your side project, there will be a strong temptation to make it look and feel "legitimate." For example, if you end up building a simple grocery list app, you'll likely have mental images of various to-do apps you've used in the past.

It will also be tempting to make it pretty. Don't get bogged down with this - remember, your goal is figure out how technical layers fit together to build a product. If you end up loving your side project and find it super useful, you can always improve the design, usability, and look and feel of it later.

Focus on the technical building blocks, not the bells and whistles. Bells and whistles like fancy design and great layout (which CSS will help with) or dynamic elements like menus that slide open on click (which Javascript will help with) can come later.

Summary

Embarking on a side project is a good amount of work. If you've made it to here, give yourself a little pat of the back for not throwing up your arms and saying, "This is too much!" Especially for someone new to programming, the topics outlined above might seem a bit overwhelming.

But there is good news! Building a side project is an incredibly powerful way to learn core technical concepts that PMs need to know. Your confidence in discussing databases, front ends, backends, etc with technical colleagues will increase dramatically. If you stick it out, we guarantee you won't regret it. On top of that, you'll come out the other side with a new product that helps solve a pain point you have.