How to build a basic Growth Model

I recently wrote a guest post for the guys at the Mobile Growth Stack. Check it out here.

It covers the basic rules of setting up a Growth Model and what to avoid, and you can download a sample .xls that includes everything in the article.

Head over to the Mobile Growth Stack to check it out. If you use the model effectively, I’d love to hear about it!

An Excel spreadsheet showing a Growth Model and MAU numbers

Early Growth: Look for “Pockets of Demand”

In the early days of launching a new product, it’s useful to think about your market in terms of “pockets of demand”.

A pocket of demand is of course another way of saying “target market”. It is essentially identifying a group, or niche, of potential customers who share a common problem that you can solve extremely well: people for whom your product is the greatest thing in the world.

The advantage of thinking in terms of a “pocket of demand” is that it encourages you to focus on that pocket, that core market, even when this is potentially to the detriment of the broader market.

But why is this a good thing? Because when you are trying to nail product market fit, thinking too much about the broader and adjacent markets can often lead to a tendency to want to solve too many problems at once. No market is completely homogenous, and you might start making too many compromises instead of focussing on what’s truly important for your core target market.

Knowing your pocket of demand can also help you optimise your go-to-market strategy to find exactly these customers, which can help lower your customer acquisition cost.

In Peter Thiel’s book Zero to One, Thiel talks about the early days of Paypal. Their first target segment – their initial pocket of demand – was Ebay “PowerSellers”. From the book:

“We set our sights on eBay auctions, where we found our first success. In late 1999, eBay had a few thousand “PowerSellers”, and after only three months of dedicated effort, we were serving 25% of them. It was much easier to reach a few thousand people who really needed our product than to try to compete for the attention of millions of scattered individuals.”

They zeroed in on the needs of that niche, and solved their problem – safe, cheap and fast online money transfers – and only after they had nailed that did they expand the value proposition to include broader slices of the market.

When it comes to growing your customer segment, you have two choices:

  1. Try to expand the penetration of your product within the pocket of demand you’ve identified, or
  2. Expand the offer to adjacent pockets of demand.

When Amazon started out, Jeff Bezos had a vision: to build the “Everything Store” – an online store far bigger, stocking more items, than any physical retail store ever could. But the first years of the company focused on a specific pocket of demand: readers. They spent a couple of years expanding their selection of books before expanding into other retail categories.

What is the pocket of demand that you are addressing?

Growth Product Managers: You should learn to code Python. Here’s why:

Python code

<tl/dr>

Growth Product Managers and Growth ‘Hackers’ should learn to code Python: it saves time by automating reporting and analysis, and it will make you a little less dependent on your data science team and a little more confident to go looking through your analytics data yourself.

I run Growth and Monetisation for HERE’s consumer app business. We have an Android and iOS app, a mobile web app and a desktop web product. We are collecting a ton of app usage and attribution analytics, but they are spread out across multiple places: mobile attributions in Adjust, mobile analytics in Amplitude, web analytics in SiteCatalyst, and so on.

The dashboards provided by the analytics tools are great, but I found myself logging into multiple web dashboards every morning, exporting CSV files and importing them into an excel file to get just the view of the data that I wanted. I was spending 30 minutes per day just cutting and moving data around to get the view I wanted, and I decided there must be a way to automate it.

There are a few options when it comes to scripting languages to let you easily pull and manipulate data sets. Your data science team probably uses R, but for Growth PMs a great place to start is Python. Python is a general-purpose interpreted scripting language that is both extremely versatile and easy to learn. It is inherently great at working with data sets, but there are also a ton of additional libraries available designed especially for data science that make fetching and analysing large data sets, like your app analytics, really easy.

Here are a handful of things you can build yourself with a bit of Python scripting knowledge:

  • Automate checking your dashboards and compiling data in the way you want to see it.
  • Save time manually exporting CSV files from different sources and creating an Excel file to see the data how you want to see it: use python to pull all the data sources automatically and crunch them into the right format.
  • Perform basic analysis automatically at regular intervals and email yourself and your team the results.
  • Create an automated ‘early warning’ system: if any of your key metrics start changing (going up or down) at a certain rate, create an alert email. This is a script that could run automatically a few times per day to monitor key stats and email you and your team when any key metric starts changing drastically.

Example
As an example, I uploaded one of my basic scripts to GitHub. Take a look here.
This basic script does a couple of things:

  • Allows you to specify a couple of frame variables at the top for how you want the data returned: you can specify the period, the channel grouping, and choose between active or new users.
  • Pulls app analytics data from Amplitude for an Android and iOS app sequentially.
  • Adds two columns to the end, one for the standard deviation and one for the % change between the last two complete periods.
  • The script prints out the channels that have gone up or down by more than 2%. (This variable is configurable at the top of the script as well, allowing you to adjust the sensitivity).
  • For data that is grouped by Country, it will also print the % change for a list of pre-defined ‘Key Markets’.

This is just one simple example for one particular analysis – but you could write a script to pull and combine data in any way you choose, depending on the analysis you want to perform/automate.
(This post is not intended as a ‘how-to’, but if you want help, you can contact me. Also there are some resources for getting started with Python at the bottom of this post.)

The best Growth PMs live and breathe their data. Learning to manipulate and analyse your product’s data with Python will save you time by allowing you to automate many reporting and analysis tasks. The act of working with your data at a raw level will also help you fully understand it.

Your data science team are of course the experts, and you’re not likely to become more competent in programmatic data science than they are – but you can learn enough to make yourself just self-sufficient enough to be able to answer your most burning questions immediately, and you don’t rely only on your data scientists and analysts to create the reports and dashboards you need.

Resources and getting started
There are a ton of great resources out there to help you learn Python. Some assume previous programming experience, and others are designed for absolute beginners. It really doesn’t matter if you’ve never programmed before (although, of course, it certainly helps). If you have a good understanding of data manipulation in Excel, for example, you should be able to pick up data analysis with Python with a bit of patience and practice.

Some resources to get you started:

  • datacamp.com is a great place to learn the basics of Python for Data Science. The basic python course is free, and $25 will get you access to the intermediate course, which covers the most important things you’ll need when using Python for data analysis.
  • A more general Python beginners course is available at codecademy.com.
  • The O’Reilly books are relatively expensive, but they’re the classics.
  • Of course, stackoverflow.com is a gold mine for budding and advanced programmers.

Note
Although I studied Computer Engineering I don’t consider myself a programmer. My scripts focus on simplicity and getting the job done, and in so doing break occasional rules and programming best practices (I use global variables a lot, my conventions are sloppy, etc). But that doesn’t matter. As Growth PMs, we’re not contributing to a large codebase with lots of other developers: we’re programming just for us. So don’t get caught up in conventions, unless they help you write code that you can understand.