Getting to know your audience with Personas

Getting to know your audience is essential. Before you sell an app, or any product at all, you must figure out who your audience is. Everything you do hinges on your audience. The feature set that your app has, the look and feel, the design, the name, the marketing channels you use — everything depends on your audience. You can’t make any decisions when you don’t know who your audience is.

You need a structured way to think about your audience. If you are like most people, you only have a very vague idea about your audience. For example, I might say that the audience for Postico are PostgreSQL users who have a Mac. But I can’t go anywhere from here. This group is very large and diverse, and there’s nothing about “PostgreSQL users on a Mac” that helps me understand them or market to them. In order to reason about your audience, you need to split them into segments, and fill in as many details as you can.

Personas are a way to split your audience into segments. A Persona is an imaginary user that represents a part of your target audience. A Persona has a background, skills and needs. Personas make it easier to think about our audience, because we can think of them like a concrete person rather than an abstract audience. But most of all, Personas also allow us to reason about a diverse audience. Different Personas have different needs, and we no longer have to think about our audience as an amorphous blob of average users. You can give your Personas names, but you don’t have to.

Meet Kyle. Kyle is a web backend Ruby developer. He uses an ORM to talk to the database, doesn’t care too much about SQL, but occasionally wants to check the database to understand why a bug is happening. He works as part of a bigger team, so he doesn’t care about the details of running a database server, he just wants to use it. He likes Postico because he can use it productively right away without any training required.

The Kyle Persona is of course completely made up, but it allows me to think about my audience in a whole new way. Instead of thinking about my audience in an abstract way, I can think about Kyle. What would Kyle say about this feature? What’s holding him back from buying a license? How did Kyle learn about my app in the first place? How much would Kyle pay for my app?

But there’s also Karen. Karen is a growth hacker / business analyst at an ad tech company. She lives and breathes SQL. She connects to a data warehouse and performs elaborate queries in her neverending quest to squeeze yet a few more percentage points from some metric or another. Like Kyle, she doesn’t care about running the database server; there are people on her team that do that. She likes Postico because it doesn’t get in her way; there’s a decent editor for writing long SQL queries, and she can open multiple windows to run multiple long running queries at the same time.

Notice how these two Personas are very different: Karen loves SQL, but Kyle would rather just get back to writing Ruby. They use Postico for very different things. But there’s also significant overlap: Both of them value the clean and simple design of Postico. Neither of them have any need for database admin tools. I can use these insights to make actual decisions. I can reason how decisions will impact my audience by thinking about Kyle and Karen.

I have a few more Personas like those. These Personas represent my target audience. They are the people that I make Postico for. Now you might say that instead of Personas, I could think of real people that use my app. For every segment, I could pick an actual customer to represent it. But I think that in some ways, Personas are better than real people. For example, real people might object to me talking about them in blog posts. But real people also don’t tell me everything about their background, their eduction, or their problems with coworkers. With Personas I can just make up whatever I like. Some of my Personas are similar to real people, some of them are a mix of people, and some of them are entirely made up.

I try to make sure that most of my actual userbase is covered by one or more Personas. I want to know how any decisions I make affect my actual customers. But I also have Personas that represent users I’d like to have. These Personas don’t correspond to existing customers. Instead,  they represent future customers and potential new markets. I need these Personas so I can plan ahead. Rather than reacting to customer requests, I can be proactive and anticipate what customers might need, before they even know about it.

You can use Personas in every part of your business. I’ve come across the term “Persona” mostly in the field of user experience, but it is equally applicable to marketing, advertising, product design, pricing, etc. You can use Personas to find a good target audience, to determine which features to work on, to evaluate the visual design of your product and your corporate identity. You can use them to guide the pricing of your product, and your business model (ads? subscriptions? buy-once?). Should you offer phone support or is email the way to go? Think of your Personas, and you will know.

Software Resellers

As soon as I was somewhat successful, software resellers started to contact me. I was initially flattered and started dreaming of large corporations purchasing hundreds of licenses. That was not the case. Dealing with resellers quickly turned out to be a massive time sink. They asked dozens of questions about my software. They asked about return policies and about included support, and they asked about reseller discounts and quantity discounts. But at some point I was inevitably disappointed when they finally requested a quote for just a single license.

Software Resellers do not market your product for you. The reason that these resellers contact me is not because they want to start marketing my app and distribute it. They are asking for a license of my product because they have a customer that asked for it. Many large companies and government agencies do not directly buy software; they purchase from their trusted reseller instead.

So it turns out that I should probably work with these resellers; but I also need to find a way to reduce the amount of time spent answering their requests.

Here’s how I’ve decided to deal with resellers:

  1. Do not offer any discounts. Companies that purchase software through resellers are usually not very price conscious — they usually worry more about convenience or regulatory compliance.
  2. Do not write quotes. Writing quotes takes time and is a pointless exercise when you don’t offer discounts. Resellers can just use your online store instead.
  3. Prepare a document with information for resellers. Don’t bother filling out questionaires. People will send you pages of irrelevant questions. Just send them a link instead. Here’s what my reseller link looks like. Don’t worry wheter the document actually answers all the questions. It turns out that when people send generic questionaires, they don’t really care about most of the answers.

This has drastically reduced the amount of time I spend dealing with resellers. When I get an inquiry, all I need to do is send them a link, and I’m done. At the same time, I am also saving time for the reseller. Instead of multiple emails going back and forth, they get all the info in a single document, and can order licenses immediately.

The key to understand is that Software Resellers help your users buy your software. If you deal with them correctly, they can potentially save you a bit of time by taking care of formalities that some customers require. But in general software resellers will not market your product. That is still your job.


My father seemed to know everything. He loved to explain things, and inconspicuous questions often triggered elaborate lectures. So one day, when I was maybe eight or nine years old, I asked him about taxes, and he started to talk.

I clearly remember the visceral reaction I had to this lecture. Most times I would get bored after a few minutes talking, but this time was different. I was outraged by the things I learned. When you earn money, my dad explained, you need to pay income tax. I couldn’t believe it. How deeply unjust this seemed. You earn money, and then they take it away from you! But the lecture didn’t end there. He continued to explain the Austrian V.A.T. (sales tax). So any time you buy something, you have to pay another 20%, after you already paid income tax. This was going from bad to worse. I couldn’t believe what a world we lived in.

My father tried to explain the purpose of taxes, but it took some time before I understood.

Today, I’m happy to pay taxes.

We have a very high standard of living in Austria. Our roads are well maintained and safe. Electricity, water and gas are highly reliable. In a medical emergency, an ambulance or a helicopter arrives within 15 minutes to take you to a well equipped hospital. Crime rates are low. There are very few homeless people, and we have shelters for most of them. Public schools are so good that only the most uptight conservatives feel the need to send their offspring to a private school.

All this is very expensive. We can afford it because we all pitch in and contribute. We pay income tax, capital gains tax, we have mandatory health insurance and unemployment insurance, value added tax, and so on. It’s a significant chunk of our income that we have to give away.

So naturally, a lot of people are complaining that we are paying too much taxes. Many people say that taxes should be lowered. Working more should pay off more. We should be able to spend our hard earned money ourselves. It seems that many of us still feel the outrage I felt as a kid, and never learned to appreciate the good things that our taxes make possible.

Of course, some of our tax money is spent in questionable ways. Why Austria needs to spend billions on fighter jets to guard our tiny air space is beyond me. Others worry that we spend too much money on refugees, or that the public sector pays too much for employees that work too little. There is also some level of fraud and corruption everywhere, ranging from individuals lying on their tax forms to politicians pocketing millions from public funds.

However, that is no excuse not to pay taxes, and it’s not a reason that taxes should be lowered. Sure, the system is imperfect, but destroying it would make it worse. We can’t have all the good things without paying taxes.

If you are unhappy with the ways our money is spent, please do something! If you think too much of our money is spent on the wrong things, complain about it! Petition your local government, write to the ministry, start a movement!

But don’t ask for lower taxes. Lowering taxes will not prevent the bad things. We’d lose the good things first.


Subscription Pricing is for Stagnating Products

I make desktop apps, and sell them for a one time fee. It’s a really simple business model, and my customers seem to like it. After you bought one of my apps, you can use it as long as you like. I believe this is a good deal for my customers, it’s a good deal for me, and it’s how it should be.

However, a lot of software publishers have been switching to subscription pricing lately. Usually the argument is that modern apps aren’t static; developers continuously work on bugfixes and new features; and if people keep using a piece of software it’s only fair if they keep paying for it. Allegedly it’s not sustainable to deliver free updates to people who only paid once.

But how come I can make a living with buy-once apps?

The secret is growth. As long as my app gains new users every day, new people will buy my app. And it doesn’t cost me any money to give updates to existing users.

So why are other companies so eager to switch to subscription pricing? I believe the answer is that they are stagnating.

Microsoft and Adobe are a perfect example of this case. Both companies completely dominate their market. They have little perspective to grow, since everyone who needs their software is already using it anyway. Paid upgrades won’t help. Many designers would be happy with a version of Illustrator that is a couple of years old, and the typical office worker is probably even opposed to upgrading their good old copy of Word. Thus, the only way to increase their revenue is to charge their existing users more. Hence, subscription pricing.

As a small independent developer, I’m in the opposite position. I’m far away from market dominance, my user base is growing every day, and I don’t need to charge recurrent fees for users of my software. And it works out just well.

The one thing I don’t understand is why smaller companies are also trying to switch to subscriptions? Are they also suffering from a stagnating user base, and hoping to increase their bottom line? If that is the case, they are doomed — subscription pricing will only diminish their user base even faster, and won’t fix the underlying problems that led to a lack of growth in the first place.

My Very Own Office

I had a private office for some time at university. Most students were offered a desk in a shared office, but due to the smouldering turf wars at the institute it was decided that I should work in an unused assistant professor office. I was a placeholder, to make sure no other research group could claim the space. I didn’t care too much about office politics, but I quickly grew fond of my very own work space. I had a large old desk with drawers and a spacious filing cabinet. When I closed the door, there was nothing but a slight hum from my workstation. Peace and quiet, only interrupted by the occasional faint sound of footsteps down the hall.

I did like the company of my colleagues. I bought a small Kenwood espresso machine and some cups, which quickly made my office a popular location for occasional coffee breaks. A bit of office gossip was a welcome distraction after hours of staring at the same formulas, waiting for an elusive epiphany.

Of course all that abruptly changed once the new assistant professor arrived. I had to remove the espresso machine. Workers carried out the old desk and filing cabinet, painted the walls, and brought a new desk for the new owner.

I haven’t had the luxury of my own office ever since. I’ve worked out of shared offices, from home, and from co-working spaces. Working conditions varied wildly; sometimes it was pretty quiet, but sometimes it was impossible to work. Especially at home, after my first kid was born, it slowly became impossible to concentrate.

Around the summer of 2015, my newest app Postico really started to gain traction. My efforts to become an individual software developer were now starting to pay off financially as well. Across all my apps, I had reached around 5000€ of monthly revenue. I decided that was enough to afford a real office for myself, so I started looking for office space.

It turns out that small offices are neither cheap nor readily available. There were plenty of ads for large offices, but almost nothing that was suitable for a solo developer. The offers I got were either windowless or otherwise uninviting; not a place where you’d like to spend your workday. One realtor showed me a small office in a commercial building. There was a shared break room, with the filthiest coffee maker I’ve ever seen. The kitchen sink looked like it belonged in some industrial complex, and in a corner of the room there was a small toilet, separated from the rest of the room with thin dividers. And it wasn’t even cheap!

When my initial search didn’t pan out, I started to look at small apartments — and I quickly found what is now my very own office. It’s 50 square meters, has a nice kitchen and bathroom. It’s right in the center of Linz, in one of its typical old town houses. It has a very high ceiling and large windows. The building has a beautiful facade, and a door made from wrought iron and glass.


For the past few months I have now been working from this office. It’s wonderful. Most of the time, I work completely alone. Occasionally, I do miss the socialising aspect of a shared office, but once I’m “in the zone,” I forget everything else and enjoy the distraction-free work environment. Whenever I’ve had to work in a shared environment, I felt a bit tense. It made me ever so slightly uneasy, when there was someone potentially watching me. But when I’m alone, I can relax. I can dive into my work undistracted. And when I get off-track and end up surfing the web aimlessly, it’s nice to know there’s nobody here to judge me but myself.

Customer Support

It should be trivial to contact customer support. The best way is to have an email address like prominently visible on every page of your website. Don’t use web forms and don’t make people select arbitrary options before contacting support. Under no circumstances expect customers to create an account on your website before they can contact you.

This should be obvious if you have any sympathy at all for your customers. It would seem spiteful to require a customer, desperate enough to contact customer support, to jump through hoops just to contact you. Plain old decency towards your fellow coinhabitants on this little planet should make you understand that.

This is the point where most people will say something like “but we don’t have the capacities to deal with all those emails from our customers. We must put some obstacles in their way to avoid them from flooding our inbox.” And at first that sounds absolutely reasonable. Now, in my opinion you should just hire more people to deal with support if you can’t handle the volume. However I understand this is not possible if your business model requires you to serve large amounts of customers with limited staff. But reducing the number of support request by making contact harder does not solve the problem, it merely hides the issue. The problems of people that can’t find a way to contact you don’t magically disappear. These people will probably get angry, they might abandon your product, and you’d be none the wiser because they can’t contact you!

The most dangerous part of this is that you have no control over which customers you turn down. Requiring user accounts or filling web forms with half a dozen required forms will make many people change their mind about contacting you. But you have absolutely no way of controlling who will get through. Do you prevent people who waste your time from contacting you? Or do you risk losing your most loyal customers because they can’t get help once they need it after happily paying you for years?

I’d like to draw your attention to a very significant group of users that you are sure to scare away: potential new users. Often, when people first try a product, they will run into bugs or issues because they will use your product in unexpected ways. These potential customers usually do not care the slightest about your product. They’re just evaluating it and they will happily conclude that your entire product is crap if they run into the tiniest flaw during initial testing. It is essential that these people get help as quickly and simple as possible, or you lose your possibly only chance to make them your customers.

Note that I’m only talking about making it easy for customers to contact you. I didn’t say that you need to actually provide support for every issue. It’s absolutely reasonable to tell a customer that their request is too complex or too specific to be handled by customer support. You may tell them that they need to get paid support to answer their specific question. I’d even go as far as to say that you don’t even need to answer every request; for example if someone sends you an insulting email, there’s absolutely no reason for you to respond.

The important part is that it is now your decision which customers to help. If you are overwhelmed, you get to pick and choose which support requests are important enough to follow up on. If you scare customers away with pointless bureaucracy before they contact you, you have no say in which support requests you end up with. You’ll probably end up with only obnoxious people contacting you. But if you filter requests after people contact you, you’re in control. You can make active decisions.

The reason why it’s so important to let customers contact you is simple: it’s the most direct way of customer feedback. No amount of usability testing or customer surveys are going to tell you about how customers use your software in the real world. You’ll only get a glimpse of real problems by listening to customer support requests. Support requests are the quickest way to discover rough edges and pain points. In my experience, most support requests deal with the same topics again and again. This means that dealing with them is pretty simple; you can prepare responses to most common queries and don’t need to spend a lot of time per request.

But the real opportunity is of course to fix the common pain points underlying the most common support topics. For example, I often got support requests from customers asking how to activate their license. The answer was simple; just double click the license file. I added instructions to the purchase confirmation email, I added instructions on my website and in the documentation. People still asked me. Nobody seemed to get this intuitive way of activating my app. So finally, I put a button labelled “Activate” in a prominent position. It seemed inelegant, but after that, I was never asked about activation again. By paying attention to customer support, I was able to remove a pain point for many users, that would never have occurred to me on my own. I had thought it was completely obvious how to activate my app.

If you fix enough of those pain points, customer support requests will go down; not because people don’t contact you, but because people don’t have any problems anymore!

Work time and productivity

When you’re self-employed, you can choose how many hours to work. Many people end up working even more than employees — you feel guilty when you’re not spending every waking moment working on your business. I fall into that trap too, sometimes, but I’ve realised working long hours isn’t necessary for making a living.

Currently I work about 20 hours a week. I take my two boys to daycare at eight, and pick them up at noon. This gives me four hours of uninterrupted work time, five days a week. Sometimes I wish I had more time to work, but on the rare occasion that I do work longer hours, I’m not really more productive. Limiting my work time somehow encourages me to make use of the little time I’ve got.

When you’re working on a project that takes a long time to develop, it doesn’t make sense to rush anything. It’s more important to be persistent. I try to work on my product every day, and every little bit I add makes my product a little better. My customers don’t care if it took me a week or a month to implement a feature. They only care if it works.

I work slowly. I don’t subscribe to the ideas of “rapid iteration” and I don’t think you should “fail fast”. Instead, I try to work at a slow but steady pace. I try to make sure I get closer to my goals every day, without burning out on the way to get there.

There’s a nice side effect of working slowly: You have lots of time to think about things you are doing. When you work 4 hours per day, there is a lot of time left for your mind to reconsider your solutions, and to come up with smarter or more elegant ways to solve the problems you encountered. I think this is especially important when working on a large project. When you’re banging out code 10 hours per day, you won’t have time to reconsider any of the dozens of decisions you made that day.