Finding your passive income idea

August 24, 2020

The Computer Science Book has reached version 1.0! It’s a complete introduction to computer science for bootcamp graduates and self-taught developers. My hope is that the book will:

  1. Inform and inspire future generations
  2. Demonstrate that I can do computer science
  3. Generate passive income

One of the recurring ideas in the book is that huge, seemingly impossibly complex things are easier to understand if you break down them into simpler things. The idea of earning money from writing a book was itself a huge, seemingly impossibly complex task before I went and actually wrote a book.

In this post I will break down how I developed the idea and in a subsequent post I’ll detail how I actually went about writing the book. My hope is that both posts will provide some encouragement and maybe help you achieve your own goal of passive income.

Passive income for fun and profit

The aim of passive income is to sever the link between your time and your income, thus making your income potentially unbounded. You set up or create some… thing and it generates income without requiring your constant attention. My personal goal is to build some kind of side business that won’t replace my day job but will add some extra income.

In January 2019 my wife and I were honeymooning in the Caribbean. Naturally, I was using this time to consider possible passive income sources. Our honeymoon was the first stop on a whole year’s travelling and I knew that there would be plenty of downtime when we weren’t walking round and looking at things. This year would be the perfect opportunity to come up with some kind of project. Also I distinctly remember reading on Reddit about western travellers who ran out of money and ended up begging outside Bangkok airport. I didn’t want to be like them.

So, what should be this magical thing? As far as I can tell there are two main ways of generating passive income: rent extraction or creating valuable content.

Passive rental income involves using existing capital to buy up assets and rent them to other people. Having spent nearly a decade renting in London, I was well aware how lucrative this could be but it seemed morally questionable at best. In any case I didn’t have the cash to buy myself a house, let alone buy more and rent them out.

First find your medium

That leaves creating valuable content. The question to ask yourself then becomes: what can you create of value? It’s easy to think “nothing, I’m average!” but I sincerely doubt that this is true. The trick is to zero in on your niche, or the unique set of skills, experience and perspectives you bring to the table.

Let’s begin with the medium. It’s important that what you create can be replicated infinitely. It’s cool that you can knit heritage alpaca sweaters but churning them out one by one isn’t really passive income. We ideally want digital content because it can be effortlessly replicated. We are fortunate to live in a time when it has never been easier to create and sell digital content online.

Video content is the obvious one these days. Rather than selling heritage alpaca sweaters, sell videos teaching how to knit heritage alpaca sweaters. A handy feature of video courses is that there seems to be no upper bound on pricing. People appear to be willing to pay far more for a video course than an equivalent book.

With that said, I personally think that videos are better suited to practical content (such as knitting heritage alpaca sweaters). I realise that I’m in an increasing minority here but I would rarely turn to a video course to learn something. Some people seem to get all of their information from YouTube videos. If that works for you, great!

I’m a software developer so I naturally thought about building some little software service. Get a few hundred or even thousand users, charge them $5 a month, something like that. Clearly this approach works for lots of people because I keep signing up to services for $5 a month. Perhaps you think this is stretching the definition of “digital content” but the main thing is that the marginal cost of adding an additional user is near zero.

The only problem I had is that I have literally never had a good start up idea. Sometimes I worry that I’m fundamentally uncreative but I think it’s really because I’m overly pessimistic. When I first heard about both iPads and Twitter I thought “that’s so pointless, it’ll never take off!”. Plus, dealing with potential outages, bugs and user queries seemed like they would be difficult to manage when I’m travelling around.

The other obvious medium is written content. Publishing and selling ebooks has never been easier. Starting a blog, gradually developing a following and then working everything up into a book also seems to be a relatively easy way of getting started. Personally, I’ve always enjoyed writing and in my weaker moments have even considered myself to be good at it. So writing was my medium of choice.

Another medium worth considering is podcasting, although they seem to be a real struggle to monetise. Isn’t it strange that people will pay for a pre-packaged collection of videos but expect to get new podcasts for free?

Then find your niche

Okay, you’ve found a medium that you’re comfortable with. I had decided I was going to write something. Now, what the hell should I write about? This is the most difficult question and you might grapple with it for some time. What worked for me was to think about my niche: what distinguished me and what I might write from what was already out there. Here’s what my thought process was roughly like:

I’m a software developer and know more about programming and computers than approximately 99.99% of the population (citation needed) so that’s an obvious place to start. But there are already billions of introductory programming courses and books. I don’t think I can really add anything special.

Okay, think further. I’m a software developer but what else? Well, after graduating from a bootcamp I spent a lot of time reading computer science textbooks because I wanted to better understand the foundations of computing. And actually, that was pretty hard because although there are lots of resources they’re usually aimed at computer science undergraduates. When your focus is on being a better web developer it’s hard to work through a 1,000 page textbook and identify what’s relevant.

Cool! Some kind of book about computer science aimed at people who aren’t computer science students sounds like it could be useful. Thinking about my own experience helped me identify a more niche product.

At this point I had a crisis of confidence. Who was I to write a book about computer science? Normally these books are written by academics or at least someone with twenty years’ experience at a FAANG (where they reimplemented the Internet as a side project). I’m just someone who graduated from a bootcamp and really wanted to understand computer science. Why would anyone buy a book from a nobody like me?

My major insight was this: do not shy away from your specific experience. Rather than seeing my lack of computer science credentials as a shameful hindrance, I realised that it was part of my experience. My book about computer science is different to all those other computer science books because it’s not written by an academic. It’s written by someone who’s gone through the process of teaching themselves. It synthesises information from lots of different sources and focuses on what I found I needed to be a good software developer. A computer science professor does not write with that perspective and so their books have different goals and suit different audiences. That is fine. There’s room for both.

Don’t set yourself impossible targets

Perhaps you would love to make a video course teaching people how to knit heritage alpaca sweaters but you’re just not sure that your knitting is good enough. That doesn’t matter! When you make a mistake you’re probably making the kind of mistakes that your audience will make. Showing how you identify and correct your mistakes is valuable content in itself. Acknowledging your missteps along the way makes you more accessible.

The danger otherwise is that you expect from yourself an impossibly high skill level and never produce anything.

Being open about your limitations is not easy. Julia Evans has been a huge inspiration for me here. If you go back to her early posts you’ll see that she started blogging while attending the Recurse Center in New York, which seems to be some kind of high-end coding commune.

People who write blogs are usually doing it in the hope of a job / self-promotion / money and so they want to present themselves at their best. That makes it really hard for newcomers because they see some blogger writing “I had this annoying error so I wrote a little tool to analyse the disassembled binary and that led me to a bug in the kernel and oh by the way look here’s the patch I had accepted by Linus who said it was ‘great’”. It’s really easy to think that everyone around you is some crazy genius because what they don’t write about are the days, weeks or months of confusion, failed attempts, frantic googling and stupid mistakes that actually led up to the solution.

I still remember how encouraging it was to read Julia enthusiastically write about something she’d done and say “here’s this cool thing I did! It doesn’t work in 64-bit and I have no idea why!”. Not knowing is okay!

Of course, if you sell a sweater knitting course you need to be able to produce a sweater by the end of it. No-one wants to spend $30 on a book about computers and open it to see “processors? I just don’t really know lol ¯\_(ツ)_/¯”. But quality content doesn’t have to be flawless.

In The Computer Science Book I worried that people would think I’ve missed out some crushingly important part of computer science or made some egregious error. No-one’s returned it yet, so I must be doing something right, but in any case everyone has those worries, no matter who they are. Patterson and Hennessy, authors of Computer Organisation and Design (the canonical textbook on computer architecture) talk about finding significant errors in the first edition even after it had been reviewed multiple times.

Remember not to hold yourself to a standard that you wouldn’t expect from anyone else. Don’t set yourself impossible targets. It’s a recipe for inaction. And if you do find a mistake in The Computer Science Book, please let me know and I’ll happily correct it and give you an acknowledgement.


Creating valuable content that other people will pay for is not an easy path to riches. It is difficult and time consuming, yes, but it’s not impossible. Break it down into the smaller tasks of developing a good idea and then incrementally implementing it.

To find a good idea, think about what you can do, what you like to do and how you got there. You might be surprised at the interesting intersection of skills, experience and capabilities you have without even realising. Don’t let self-doubt or fear of rejection hold you back from making a start.

In the next post I’ll go into more technical detail about how I physically wrote The Computer Science Book. It’ll be a whirlwind!