Hey, thanks for having me.
I was just watching a live YouTube cast that you did earlier this week, I think it was a couple of days ago. And you were trying to work on some CSS issue, putting together a website using your latest framework and it was really cool to watch because you had hundreds of people tuned in and they were really just learning by watching you learn.
They were watching you tinker with things and change your CSS to try to get your website to look exactly the way that you wanted it to look and it was pretty obvious that you were enthusiastic about all of this.
Do you think that being passionate about learning and really enjoying that process is required for being a good educator, or do you think it's good enough just to like the teaching side of things?
Good question. I think probably it helps to be excited about learning yourself, to be paying attention to the things that work for you. I've always been just a voracious learner my whole life.
Anytime I learn about some topic that interests me, I can't resist but to dive into every corner and find out every piece of information that exists about it on the entire internet. My personal obsession with learning definitely contributes to my ability to teach topics, for sure.
Well, you've obviously learned a lot because today you are selling these books and courses that people love and that helped many thousands of software engineers get better at their jobs. How did you first learn to code yourself?
I have a couple of different memories of what my first programming experience was, but maybe that just goes to show that I've just been exposed to it in a couple of different ways throughout my life. But when I was in school, I remember -- This is back in the era where all schools had Apple computers in the classrooms, you have the three Mac computers in the whole school or whatever.
We used to spend a lot of time messing around with HyperCard and HyperCard was probably one of the first environments that I learned how to make a computer do things. So even when I was in grade -- probably grade five, grade six, a couple of other kids that were in my class, I was in a gifted program, so I was surrounded by a lot of smart people who had different experiences with things.
But we'd be messing around with HyperCard trying to make little games where you'd be navigating, moving characters around with the arrow keys and opening doors with the space bar and learning how to do stuff that, and that was really fun. So that was one of my early experiences of programming.
Another was when I was a kid, I was super obsessed pro wrestling. And that was my whole life when I was eight, nine years old. I loved pro wrestling and I would download these wrestling emulator apps that weren't games. They were just text-based tools that would programmatically generate the outcomes of different matches that you would set up.
People used to use them to run online role-playing or wrestling simulator sites. I would always be trying out all these different tools. And one day I stumbled across a tutorial on how to build your own wrestling simulator with QBasic. So that got me down this path of learning QBasic. Eventually, I got obsessed with trying to learn how to build an RPG engine with QBasic because there's all these cool tutorials about building different tiling engines and stuff.
So I would learn about some of that stuff. Then, eventually, once I was in high school, we started actually having computer programming classes offered in high school. So I did a bunch of computer programming there too, learning some C. We did languages Turing and Pascal in different classes. Eventually we did some Java, one year it was web focused.
When I was in my early teens is when I got really excited about building stuff on the web versus compiling stuff with QBasic to make these little DOS-based programs and stuff. But that's when I started learning HTML and trying to make websites and stuff. Eventually, I went to university for computer science, but I actually only stayed for one semester and then dropped out because I just wanted to play in my band and wasn't really enjoying the academic environment.
Probably five or six years later, I rekindled my excitement for programming because I hadn't done it at all in a while. I opened a recording studio just out of my house, recording local bands, and the software that I used to record the band was called Reaper, which is made by the guy who made WinAmp back in the day. It's a really, really hacker friendly digital audio workstation.
So you could write your own plugins in Python or even in C++. I had a bunch of ideas for features that I wanted to add to the software to make my life easier as an audio engineer. Through IRC, I got hooked up with this guy who had been making plugins for it and was a really talented C++ developer. He helped me set up a project in C++ to start writing my own plugins and mentored me and answered my questions.
So I started making plugins to simplify drum editing or all sorts of interesting things with this tool. And when I was doing that, it rekindled my excitement for programming and reminded me how much I loved it because I hadn't done it in a few years and had forgotten how enjoyable it was.
And it got to a point where I was having more fun extending this tool than I was actually recording bands and working on music stuff. So, I went back to college for a two-year program in software engineering just so that I could get a co-op position so I could get some experience and be able to get a job. I did that when I was 25. Then I spent a couple of years working in agencies doing stuff and then I started working on my own products, and here we are today
It is a long, winding story to how you learned how to code, with on periods and off periods. A lot of tinkering, a lot of formal learning as well. What do you think was the most transformative period where you really learned the fastest or you learned the most?
I think probably in college, and not necessarily because of what we learned in college, although the program had a pretty good curriculum. It wasn't a computer science curriculum. We did do stuff with algorithms and data structures, but we also had courses on software quality and automated testing and lots of stuff that was a lot more practical building software and not just the math of computer science.
That's when I got really, really excited about software design because before college, it never really even dawned on me that making code good was a thing. It was just, "I have a computer, I want to make it do some things. These are the things I type that make it do that thing."
And yes, it's creative and yes, it's fun, but I never really noticed that there was an element of craftsmanship to it at all. I was just all about getting the computer to do what I want. And that was exciting enough. I didn't really think of any concept of refactoring, or keeping code clean, or design, trying to come up with solutions that were scalable or maintainable.
When I started to learn a little bit about some of those elements in school, that got me really excited and sent me down this path of reading a bunch of classic software design books. In my memory, that's the period where I remember really leveling up and getting better at this stuff, learning about TDD, reading Martin Fowler's refactoring book.
I think the first book that I read that really answered some questions for me and helped me was Agile Patterns, Principles and Practices in C# by Uncle Bob. That was a really exciting time that I remember, just devouring all this information, learning about polymorphism, and object-oriented design, and TDD.
I assume you're talking about your second stint in college because your first stint, you dropped out after only a semester. What was it like, making that decision? Was this you following your heart to pursue your passion being in a band, or what was going on?
I think the problem for me was, I was going to a university that was a 40-minute drive away, and I was living at home because I didn't want to accrue a bunch of debt living on campus. Because of that, I was driving to school, going to my classes, not really being around outside of class so I wasn't really meeting people or making friends, and I just had a hard time getting absorbed into that university environment.
It was very much a thing that I was doing on the side whereas my real group of friends were still at home. None of those people were in school. We were doing music stuff together. It was hard for me to let the university stuff take over my life and make me feel a university student. It just felt like this annoying chore on the side of my real life. I just didn't put in the effort to get into it. I also think the way the curriculum was structured was not really super fun either.
In Canada, at least, we use the university to talk about places where you go for a four-year degree, and college where you go for a two-year diploma. Our colleges, I think, are close to what you call community colleges in The States. The college curriculum was just so much more hands on and practical.
It was much more an apprenticeship than it was study. And that just resonated with me a lot more because it was so much more project based and making stuff. When I was in university, we had exams where I would have to write programs on paper with a pencil. Full programs. They were multiple pages long and they had to be right the first time.
It was just not really for me. I like tinkering, and watching the things actually happen on the computer, and getting to experience the fruits of my labor.
Who is that for? Why is that even a thing?
I don't know. I think education around teaching people to be software developers is pretty broken in a lot of ways in those institutions. I know there's a lot of improved versions of that. Lambda School is a really exciting initiative that I think is doing a good job teaching people to be developers in a practical and effective way.
But the old school university institutions, I don't think do a very good job preparing people to actually be developers. I feel, to learn to be a software developer should be treated much more like learning to be a carpenter or something. Something where you actually get to learn from other people and actually do the job.
Whereas universities tend to focus on a lot of the theoretical stuff that isn't necessarily preparing you for working in the field. They're preparing you for being a computer scientist, which is fine, but a lot of people go to university for computer science because that's the closest thing to anywhere that you can go to pay money to become a programmer, and the goals are a little bit misaligned I think.
That was me. I went to college to get a CS degree and I didn't really like the classes that much. I was much more excited about coding stuff on my own, meeting up with friends and other people who were getting CS degrees and working on our own online projects.
That's what really drove my education, I think. Anyway, you spent a long-time learning, and now you are a teacher. How do you think the time that you spent learning affected your approach to teaching others?
I feel like I'm still learning. I'm not really happy unless I'm learning, unless I have something that I'm excited about, that I'm diving into and trying to get better at. I can't say I have a really great answer for how I think being obsessed with learning specifically influences my ability to help other people learn other than that I have to believe that caring about learning and wanting to learn things myself must influence how I structure material to help things resonate for people that think the way I think, anyways.
The best I can do is try and design something that that makes sense for me in terms of how to teach something. Probably the common thread between all the educational stuff I've ever made has always been trying to make the learning resource that I wish I had when I was trying to learn a particular topic.
A lot of the stuff that I've worked on has been basically created from me learning a bunch of things from a scattered bunch of resources all over the place and trying to pull it all together into something that makes sense in a cohesive way. For me, when I was working on a test-driven development course for PHP developers, there wasn't really any good information out there specifically targeted at PHP developers or people who use Laravel, which is the framework I used as the example for everything.
But there was tons and tons of really good information in the Ruby and Rails communities and even in the Java communities, but a lot of people in my community won't make the journey to go and learn another language so that they can learn some principles to apply back to where they actually work.
Whereas me, I'm obsessed with getting to the bottom of things and learning every nook and cranny of everything, so I'll learn whatever I need to, to understand some book that's about Rails that I don't know anything about Rails or whatever. I'll learn Rails and I'll learn Ruby so I can learn the concepts and bring it back.
When I was really obsessed with powerlifting, I was reading Russian strength training manuals and translating it to English so I could find out what approaches people were using in different places. So I'll go to the ends of the earth to find the information that I want.
For a lot of other people, that's just not the way that they operate, so what I've done a pretty good job at and what's worked well for me, is to take that natural inclination that I have and use that to make things easier for other people by sailing across the ocean and getting the information and bringing it back.
So today, you are full time on your courses and your books. You make millions of dollars, actually, from selling those. Back in the day though, when you were into powerlifting, when you were in a band, how did you support yourself? Was your band actually paying you?
Oh no, that was never any good. I was young, right? So I was 16, 17, 18, 19 when I was really, really into playing music a lot. So I was just working part time-jobs while I was in high school. And then part-time jobs when I was in college too, just doing whatever.
I worked at a hardware store, I worked at a warehouse packing big skids of food shipments for grocery stores. Did that for a while. And my first real job that probably was enough to pay me enough money to live an adult was working in Fort McMurray, Alberta in the oil sands, which is super far north.
It's where they extract a bunch of oil from the sand and sell it all over the world, whatever. A really horrible, awful, frigid, cold place. But I worked in the office there, basically just doing data entry stuff because, actually the drummer in my band, his dad was running the project up there.
He got me the job up there. And then when I got into the powerlifting stuff, I was doing a lot of that while I was in college for Software Engineering and continued doing that during my first couple of jobs until a couple of injuries set back my progress there. And now it's not as big of a focus for me.
My first real career, I would say, would be software development, starting when I was 25, 26, when I got my first job. Before that it was just whatever was around that would pay me the most money so I could afford to live while I focused on the stuff that actually excited me.
So now I'm fortunate enough to be in a position in the software industry, I think a lot of the listeners are. Where you actually your job, which is pretty nice. You get to work on fun and interesting things, and you don't necessarily dread going into the office every Monday. Definitely a good place to be compared to those days.
I can imagine not really liking your job working in the oil sands of Alberta, but once you started getting software engineering jobs, I think that's it for a lot of people. Most people who love to code get a job that they like, and they are like, “Great, I get paid to do what I love. This is it for me." It wasn't for you. You eventually went on to become your own boss. Why do you think you never got stuck, so to speak, at any of these earlier jobs?
It was almost an accident in some ways, honestly. I don't think, even when I released my first book, that I really had aspirations to be a full-time author/course-creator person. The reason I created the book was mostly just out of a passion for making things and putting them on the internet.
My whole life I've always loved, even when I was doing the music stuff, I'd love working on a new mix and posting it on the forums where I used to hang out and get feedback from people, or get put up something I was really proud of and hopefully have other people see it and give me awesome feedback and that would make me feel really good.
Even when I was into powerlifting, I used to create all these really beautiful, fancy spreadsheets for different training programs, and I would publish those in the forums that I would hang out on for other people to use.
I've always been really obsessed with making things and making them to a really high level of polish, and just derived a lot of satisfaction out of putting things out there that are finished that I could put my stamp on and be like, "I made this."
So being into programming and being obsessed with learning and reading all these books and stuff and realizing that I was doing all this work to learn stuff because the resources didn't exist in the communities that I hung out in. I guess just one day, it sounded a good idea to make a book, because I was reading all these books and seeing -- I was buying eBooks on Leanpub and stuff that, that peers were making.
It's like, "I could do something like that. It would be really damn cool to write a book." That seems like a cool thing to be able to say I did. So I think that was probably really my initial motivation. Yeah, I could make a little bit of extra money, but I wasn't doing it as a way to escape the 9-5 or anything necessarily. That just happened.
Well, it's safe to say that you escaped the 9-5, regardless. Today, your courses and books have generated millions of dollars in sales in just a few years, and you get to keep all of that. You don't have a publisher, you don't have an agent. It's all yours. Has making all that money changed your ambitions or changed your motivations for why you do this?
In some ways. I think something that I never really thought too much about until I was in it was that your life is a lot different when you run your own business than it is when you have a job. And, in ways that I never really realized, I basically feel I'm retired now because I just get to work on the things that I want to work on.
I don't have anyone telling me what to do. I can work my own hours, whatever. All my income is basically not coupled to the amount of effort that I put in. So, I have a lot of freedom that I never really realized was possible. And that's only really possible, I think, when you have equity and some thing that makes money.
So, although I wasn't super obsessed with this thing before I started a business, now I realize, when I look back to being in school and stuff, it actually frustrates me that they don't teach you about these options. Like, "Hey, you don't actually have to get a job."
School is designed to prepare you to go work for somebody else. But it turns out that you can actually create your own job and make your own money doing your own things and there's all sorts of benefits to it.
And yes, it's hard in some ways that having a job isn't and maybe it's not something that necessarily everybody can succeed at, but I feel ripped off in a little sense because I wasn't really exposed to this thing.
A story I to tell is, I remember as a kid, I'd be in the car with my parents and my sister driving somewhere, and we'd go through some really nice neighborhood, and I would always be thinking to myself looking at these nice houses, "What jobs do these people have? Where could they possibly be working that someone's paying them enough of a salary to afford something this?"
And it wasn't until I started working for myself that it became clear to me, actually, those people own businesses. That's why they are able to afford these nice houses. You know what I mean? Because there aren't jobs that are going to pay you the amount of money that you can make working for yourself and scaling up a product business that isn't coupled to the amount of time that you work.
Exactly. If you're a founder, you get paid basically according to whatever customers feel you're worth paying. Whereas, if you've got a full time job, you've got a salary, you're getting paid for your time, you're really getting paid according to how easy you are to replace, and you're probably pretty easy to replace because you have a job title and other people have gone to school to do exactly what you do. There's a cap there, a cap on your salary, really. When did you decide to first start your company, Adam?
The very first time that I tried to get people to pay me directly for some service was probably when I was recording bands and running a local recording studio, and that was a total failure because bands don't have money or whatever, but that was my first attempt at working for myself.
Didn't really work out, didn't make enough money or really do anything with it, but, sure. Once I got into software engineering a lot more, the first time that I ever took money from anyone on the Internet was, I built a small SaaS application called Nitpick CI. That was just a tool for reviewing code style in pull requests and PHP projects on GitHub, and automatically commenting, "Hey, you're using four spaces, you should be using two.".
That sort of thing. To just help people avoid focusing on the wrong things in code review. And I built that, I think, I released that in November of 2016 or 2015, probably 2015 must have been 2015. I built that mostly as an exercise in taking a software project to completion because I had been working at agencies for a long time, and one of the downsides to working at an agency, in my experience anyways, is a lot of the time, you work on a project for a month or two.
The client runs out of money because it turns out their business was actually a bad idea, and the project basically gets put on hold, and so many projects never leave your local development environment. That was disheartening, and I really wanted to be able to build something from scratch, take it all the way to the finish line, and put it on the internet in a state that people could actually put in their credit card and pay me for it.
So, I built this tool, this SaaS app, not really as a means to start a business and make money on the Internet. Just really to prove to myself that I could build a product from start to finish. When I released that, it was the first thing that anyone ever gave me money for.
And it wasn't a lot of people because I didn't know anything about marketing or bootstrapping a business or trying to -- I did the classic developer "build-it-in-silence-and-then-one-day-launch-it", thinking that everyone's going to be excited about it and sign up for it on day one, which of course doesn't work.
But I didn't really think of it as a failure because that wasn't really my goal. But that would be the first time that I put something on the internet that people gave me money for.
How did it feel to actually see dollars in your bank account for something that you built yourself?
Exciting, but also completely terrifying. There's something really scary about strangers on the internet giving you money and feeling you're on the hook in some way to not disappoint them because, of course, you undervalue anything that you do yourself. You know what I mean?
It’s, "I built this thing myself. How good could it really be?" These people are used to paying Apple for things, and I'm just Adam in his basement, "Oh man, this is terrifying." But, pretty exciting in a lot of ways, too.
A lot of people have trouble staying focused enough to ship things, but that doesn't seem to be a problem with you. My advice for these people is usually to start small work on bite-sized things that you can release quickly before you get bored or distracted. How do you manage to stay so focused that you can take these projects to completion?
I think the answer to that is, I do not stay focused very well, and that's a challenge for me, too. So, I totally agree with you that the best thing you can do is work on something very achievable, try and design projects that are small enough that you can see the finish line from the beginning.
Other than that, I think it helps to create some accountability for yourself in some ways. So, for the last project, I worked on it with a partner, so I had no choice but to work on it because I would look like a real asshole if I just sat around doing nothing while he's expecting to get this thing done, and he's putting in his share, and I'm not putting in mine.
But when working on things in isolation, the best thing that's worked for me is trying to be accountable to my audience. So, making sure that I'm constantly posting updates about how far along I am on whatever the project is on Twitter as well as sending an email out to the list of people who have expressed interest in whatever I'm working on.
Trying to do that every week. So if I can send out an email a week, if a week goes by where I feel I don't have enough to email about, that stresses me out and makes feel, "Oh shit, I'm not keeping up with this". Especially because I know, from my own experience launching products, how important it is to be in constant contact with the people who have expressed interest in it.
If you actually want to have a successful launch, you never want to be that guy that creates a landing page, and then doesn't finish the thing for a year and a half and hasn't even talked to the people who signed up that entire time. And then someone gets an email a year and a half after they signed up on a landing page saying, "Hey, this thing's done that you totally forgot about."
There's no anticipation there, that's not going to go well, right? So, knowing internally that the only way this is going to be successful is if people are excited about, and there's hype around it and they really want to buy it. I'm screwing myself if I don't have an update to share with these people. So yeah, that creates anxiety for me, and that's what drives me to actually get the work done, I think, in a lot of ways.
It's a crazy trade-off because working for yourself, you have a lot of freedom, and when you have the freedom to spend your time however you want to, you're not going to do things that are boring or that are difficult or frustrating cause that's not what you want to do.
And so, I think it's good to have a little bit of that anxiety you were talking about, Adam, to exchange a little bit of that freedom to do what you want with some external pressure to force you to do the things that you need to do that you don't necessarily want to do.
Yeah. Even if it's feeling obligated to your wife so you can pay the mortgage, so she has somewhere to live, because once you stop making things, you stop making money. That's not necessarily true if you're working on something that has recurring revenue or whatever, but for the business that I run, everything is quite launch-focused.
That's where I make most of my money, at these big launches. I always have to have some idea for the next thing that I'm going to be working on, and until that thing comes out, sales are very, very slowly dropping for everything else, you know?
Yeah. So, your first business, Nitpick CI, was software. It was software as a service. It was a SaaS app. What made you decide to switch from building SaaS applications to releasing a book for your next project?
I had been reading a lot of books from other people in the community who had been self-publishing things, and that was really cool, and I had this idea in the back of my head before I ever even put out the SaaS app, that one day it would be cool to write a book about this topic, which, at the time, was test-driven development because I thought that a lot of the information out there was harmful in a sense.
And I wasted so much time doing things what I thought was the right way based on the advice I had read online, but in practice turned out to make me hate my code. And I wanted to share what I had learned with other people and try and set other people on a path that I thought was better, just because of how cheated I felt by the information that I had been trying to learn from.
But, because I was working full time, writing a book just seemed an overwhelming task, right? How am I going to have time to write a book when I'm working a full-time job? How do I even get started? I don't even know anything about it.
And then I noticed that a friend of mine who had actually been a mentor of mine when I was in the audio engineering stuff who used to run a studio, and I interned at that studio just to learn the ropes, and how to do stuff. He had started getting into creating courses, teaching other people music production.
One day. I wish I could remember how it even came up, but we just met up for coffee one day after not really being in contact for a couple of years. And I was just asking him about how it was going and learning more about it and mentioned to him that I'd been thinking about doing a book.
And it just been an idea sitting in the back of my mind, but not really something I was really excited to necessarily get into. He convinced me to think about it a little bit more seriously. I told him my concerns, "It sounds a really ambitious project. I don't know how I'm going to find time for it."
And he said, "Why don't you start with a 'trip wire product'?" He called it, which I think is a term that other people in that internet-marketer space would probably be familiar with, where you just make something really, really small that you can charge 10 bucks for and use that as an opportunity to get your feet wet, and get a win, and feel like, "Okay, I made something that's for sale on the Internet."
And the other benefit to it is you get a little bit of opportunity to practice with marketing. Any people who buy that are going to be more likely to buy other stuff from you in the future because they've proven that they're willing to give you their money for something. So, it's just a good way to get started with this stuff.
So, I started thinking about that, like, "What can I make that's really small?" I had been building a reputation in my little Twitter community for a bunch of work that I had been doing with functional programming concepts and applying it in PHP.
Nothing too crazy, just more like basic list transformation stuff. I remember when I first learned Array Map and I was like, "Holy crap, I've been doing this over and over again using this loop. And this is how I've always written this code, and there's a way to do it in this declarative way using this higher-order function that I'd never really thought about before."
And that got me excited. So, I had been tweeting little examples like, "Check out this code that I refactored using these ideas." Just sharing what I was doing because I was excited about it, not because I was necessarily trying to deliberately build an audience or anything, but I had been. Just because people are interested in people who are sharing what they're doing online.
So I had a natural built-in advantage in that I really enjoyed putting stuff out there. That worked to my advantage in that sense. I'd been developing this reputation for doing this sort of stuff, and people had been messaging me like, "Hey, how would you refactor this, or how would you refactor this?"
When I was trying to think of small product ideas, I thought, "Maybe I could do a little mini-guide on refactoring ugly, nested for loop stuff into elegant list transformations in PHP, and just show a couple of my favorite practical use cases where some of these ideas are useful." So I had this idea to do maybe a 40- or 50-page PDF that just covered a dozen useful examples.
I started trying to look into, "How do you launch an e-book? How do you get started? How do you prepare for it?" And somehow, I stumbled onto Nathan Berry and a lot of his content and he had had a lot of success self-publishing books about web design. And he had a podcast where he interviewed a bunch of other people who had launched courses and books and shared what they learned along the way.
So I started devouring this information. I think something that is probably a useful tip for people that I do a lot is, I'm constantly noticing when I discover a new person that I think has something interesting to say about something.
And as soon as I find out about someone, who I never knew about before, who has an interesting opinion on something, the first thing I do is, I go find every podcast they've ever been interviewed on, and I listen to all of them, and I try to devour every piece of content on the internet related to that person.
That's been a really good way for me to get exposed to interesting things and learn, "Well, what people does this person learn from?" And then I go and devour what that person has put out and stuff like that. Whatever the first article that I read from Nathan was, I wish I could remember how I found it, but I just decided, "Okay, this guy knows a thing or two about this stuff. I'm going to learn everything I can from this guy."
So that led me to like, "Okay, I gotta make a landing page, and start collecting email addresses, and I gotta send updates to the list." So, I put up a little landing page for this book. I decided to call it Refactoring to Collections. I was thinking it was going to be this mini guide. I started collecting emails. I wish I could remember what the numbers were.
I do a blog post that we could link to that probably shows what the subscriber counts were at different times throughout this process were. So, I started collecting emails and started working on the book. I decided to structure the book in two sections. The first half was going to be, "Here's an introduction of some of these concepts. Learning what some of these basic list transformations do, how to think about them, how they work."
Then the second half of the book was going to be, "Okay, here's a bunch of practical examples of how you can use these ideas in your actual code." So I was just working on the first half of the book and before I knew it, I had 40 pages or something of introductory material, and it was really tightly done, I think. I wasn't wordy or just dragging on.
I just realized I had a lot more to say about the topic than I thought originally. So, instead of just creating this mini guide it ended up being a 150-page book. Once it started to grow, I started to realize, "Okay, I've been reading all of Nathan's stuff. Nathan talks a lot about using tiered pricing to make sure that you make the most money possible at your launches and you don't just want to charge $19 for an e-book, you want to figure out a way to have a hundred dollar package or a $200 package."
I had made screencasts in the past, and I decided, "Why don't I take all these examples from the book that are making up the last half of the book, and I'll take each one of those chapters and record it as a screencast, too.
So, for people who want to consume that in video format and maybe pick up an extra trick or two by being able to watch someone actually do the work, maybe people would pay a little bit extra for that, so I recorded a bunch of these screencasts, 15 screencasts, that were maybe 10 minutes long each.
Then for a third tier, I thought, "Well I built this SaaS app and, this SaaS app is actually loaded with all sorts of practical examples of the ideas that are in this book." And the Saas app was a failure in terms of actually making me money as an application, but I'm sure people would love to see a full code base for a full application that includes a lot of these ideas.
So I'll throw that into a third tier." While I was working on this thing, I was sending out updates to people, "Here's a chapter that I worked on," or "Here's how many videos I have left." I started working on the book in February and I launched it in May with the three tiers. I can't remember what I priced them at, but I think it was $29, $59 and $109 or $108 or something.
I had some weird number. I put that out there and it just did way, way, way better than I thought. I did 25 Grand in the first day, and I was floored. I couldn't even believe it. I was texting my wife like, "Holy shit, this is insane." I thought maybe I'd make 20 Grand over the course of a couple of years of it just being up and selling slowly or whatever.
But, following this step by step process of trying to make sure I do everything right to align at this launch, it turns out it actually makes a big difference. So, I ran a launch sale for the first three days, and it did, like, 65 Grand in the first three days. And that's when I realized, "Man, this is more money than I ever thought was possible to make in this time period."
It's just the craziest feeling, craziest experience I've ever had. And I thought, "Man, this was just my little trip wire product that I wanted to make just to get my feet wet." The real thing that I wanted to make was this testing book or testing course.
And I knew there were people hungry for that information, and I thought, "Well, if I'm going to make that thing and I think I can't do it part time, in that I'm going to need more time than that to do it, quitting my job right now is the best chance I'm ever going to have, having the time to actually put this thing together and the opportunity is clearly here, right?"
I never thought it was possible for me to just make my own money selling things on the internet until I put this thing out there. That just got the wheels turning in my head. And I decided to put in my two weeks’ notice at my job immediately and started working on the next course. I don't even remember what question prompted this, by the way, so if I didn't answer it, let me know.
I think you did. What does your wife think about all this money that you're making suddenly out of nowhere?
At the beginning, and still to this day a little bit, but at the beginning, she was scared because she was like, "This doesn't seem right. Are we doing something illegal?" You know what I mean? "You're not supposed to just have money this show up in your bank account. This is scary. Something about this just doesn't feel rock solid."
And of course it is, it's just a weird, crazy experience that most people don't get to experience. It's just so different from how you're used to getting paid for things. But yeah, I mean obviously she's happy about the lifestyle that we have now, it's great that I can be home, and available, and with her and our daughter, and we can go on vacations whenever we want.
We don't have to ask people's permission for things. And of course I'm sure I'm a happier and better husband, too, because I get to spend all my working hours working on the stuff that I'm interested in, whereas in the past, I would always want time in the evenings and weekends to be working on my side projects because I wouldn't get to work on those at work.
Now I get to spend more of that time with my family. So, yeah, that's great.
Did you ever have any of those same doubts yourself? Because it seems like you were pretty confident in quitting your job not that long after you launched the course.
I did have some doubts like, "Man, maybe this next product won't do well," but I really did believe that it was going to do well. I didn't know for sure like, "What am I going to do after this? I know I want to do this testing book or testing course, but maybe that's the last idea I have for something like this."
But I thought, "Worst-case scenario, I'm a programmer. It's not hard for me to find a job, especially with my audience, and my reputation has been growing, I've been speaking at conferences, whatever."
Worst-case scenario, I can just get another job at a company being a software developer, and I got to have a little bit of fun in between jobs where I made my own stuff and made a lot more money than I would've at a job, anyway, so I wasn't too worried about that.
You mentioned that you were working nights and weekends and you were building this initial e-book and course basically while you had a full-time job. I know a lot of people who are trying to make that work and yet can't find the motivation, can't find the time. Do you have any tips for anybody in that situation?
I think for me, the only reason I ever finished that book is because in my head, I believed it was a 40 page PDF, and I thought it was going to be something I could bang out in two weeks, and it wouldn't take a lot of time, and I could see the finish line from the beginning.
Now, I was totally wrong, and it ended up being way bigger, and if I had known how big it was going to be, I think I would have been intimidated. I don't think I would have been able to start. So, probably the best advice I can give is, figure out a way to split it up into smaller projects and make things feel achievable.
If you're just working on your first project, maybe just try and figure out a way to cut down the scope completely so that the whole thing feels achievable. The very first thing you release doesn't have to be the thing that earns you your freedom. You know what I mean? Sometimes it's good to get a little bit of a victory and feel like you put something out there that made a little bit of extra money.
Maybe it's enough that you feel comfortable switching to freelancing and only doing 25 hours a week on client work so you have a little bit of extra time to work on your side projects or whatever, but I definitely think, just try to figure out how you can make it feel achievable and finishable by trying to slice it up into smaller projects and setting mini-deadlines for yourself is a really, really good way to do that.
I love that advice because it's the most common thing in the world for people to get jazzed up about this ambitious idea they have and then they get discouraged because it actually takes a long time to get to that idea, and you really have to break it down into chunks, and they need to be small.
And I think when I look at your story you could be said to have started small as well. Even before you decided to write what you thought was going to be a 40-page book, you were tweeting, right? You had already given a few talks. I think you had started your podcast by then, right?
Yeah, yup. That's true.
And so all of those were things you were doing that weren't ever going to earn you freedom from your job, but they nevertheless contributed to you having this great book launch.
I think the most important thing you can do if you're -- this isn't totally true because there's a lot of counter examples out there, but for me anyways, the most important things that I did for my own success were to build my audience and my personal brand so that I could eventually cash in on that.
A lot of that came down to like you were talking about, giving talks and meetups, which led to giving talks at conferences, and sharing what I'm learning on Twitter, writing blog posts, putting out screencasts, stuff that it's hard to draw the straight line between this and some income, but by just being helpful on the internet, and being valuable, and creating value for people, you're building up a lot of goodwill and building this audience that, hopefully one day when you do have the idea for something that you could sell, you have an audience of people to sell it to.
There's a lot of people who have succeeded at running businesses that are not personality-driven at all, of course, too, so don't think that that's the only way to do things. But that's what's worked for me, and that's how I built my business anyways. I certainly don't think that building an audience could ever be a bad thing, you know.
Yeah. And I did things the opposite way with Indie Hackers. I didn't have an audience, then I built Indie Hackers, and now because of that, I do have an audience. So, I'm kind of a counter example, but on the other hand, I'm also the exception that proves the rule.
Where, because I didn't have an audience beforehand, it's not in my DNA. It's like being pushed on-stage before practicing. And so, I barely even tweet. I don't even know what to say.
It's hard to do these things if it's not your natural inclination. I definitely am lucky in the sense that this stuff sort of is helpful in the sort of business that I run, anyway. Being able to build an audience and build a reputation. Sharing what you know helps me be more successful at launching courses.
But I don't know if I could do all that work if it didn't come naturally to me. If I didn't derive satisfaction out of just being able to post some interesting tweet or some tip on Twitter and have people reply, "Wow, this was so helpful to me." You know what I mean? I get a lot of satisfaction out of just sharing what I'm doing.
It helps me, and it's been super important, but that's not the reason that I do it, which is probably the only reason that I've been able to get where I am because I enjoy every step of the process. If any of that stuff felt like a chore or felt like I had to be really deliberate about forcing myself to do a live stream or something. I don't know if I have the grit to get through that.
So I think maybe the other element to that is just to find what energizes you and just try and look for some alignment between, like, "Okay, what are the things that I derive satisfaction from already that also contribute to my end goal in some way?" I can focus my time on that. So for me, I've done a lot of blogging in the past, but it's always been hard for me to keep up with it.
Whereas live streaming has been something that I've been doing for a few years now, on and off that, I actually really enjoy doing, and could do every day, and it wouldn't ever feel like work. Writing blog posts and live streaming are both going to build your audience the same way. Maybe one works better than the other or whatever.
They attract slightly different kinds of people, but they're both moving you in the same general direction. So, I think it's probably important to just look for opportunities to double down on the things that that you personally derive satisfaction from that also contribute to your goals.
That's such a great point. We were talking earlier about how it's important to have a few of these external forces that force you to do things you should do. It's a good thing when you're running out of money and you're forced to get serious. It's a good thing when you have an audience and they give you a little bit of anxiety to get the thing out the door, but there's a limit to that.
And if 100% of what you're working on is you having to be forced from some external thing that's forcing your hand rather than just your internal satisfaction that you're not going to last very long either, so I totally agree.
You talked a lot about the things that you did right in order to make over $65,000 in your first few days of launching this course. Since then, you've gone on to launch quite a few more courses. What are some things you've learned since then? How has your approach changed?
Honestly, my approach hasn't changed too much from the first product, but I can share a few things that I think I did wrong or that I've done a little bit differently since then.
Probably the biggest mistake I made for the first launch was, I had this three-day launch window where the book was discounted for three days, and by midnight on the third day, I was still getting sales every couple of minutes, and just to honor my word and not look a lying asshole, I had to go and change the price, and put it up to full price, and end the sale.
And then, people stopped buying completely. That was such a shitty, stressful feeling. It's like, literally there was this hose of money firing at me, and I turned it off.
So, what I learned from that was that, I don't think -- timed launch windows are not a terrible idea, having some time period where something's on sale. I do think it's probably a bad idea to do too short of a window, like in that case.
What I've done since then has been to not have an actual end date on the launch at the time that it starts and instead, just launch at a sale price, wait until sales have significantly slowed down, and then use that as an opportunity to send out another email and be like, "Hey, this is the last week to get the book at the launch price or to get the course at the launch price.
The price is going up on Friday." And you use that as a second mini launch where you can get a bunch of extra sales that you wouldn't have got before because you're reminding people. You also didn't artificially put a cap on your launch earnings either, because you waited for things to die off on their own naturally.
That's been the approach that I've used since then, and that's worked really well for me and has made me feel a lot less anxious about leaving money on the table for things. Other mistakes, I would say, the second product, so the testing course, I launched that in November 2016, so that was six months after the book came out, the Refactoring the Collections book.
But I launched the course unfinished because I really wanted to get it done. I had announced a deadline to my audience, and I said, "It's going to be out on this day. I announced that, I think, two weeks before the date that I was going to release it, and I thought, "If I just grind through and record, record, record, record these videos, I would get it done.”
But it wasn't done, and there was just so much to cover. Everything that I thought was to be one, 10-minute video ended up being eight 10-minute videos, and it just kept getting bigger and bigger and bigger. So, I talked to a few people to try and get some input. "What do you think I should do? Should I just postpone the launch? Should I do some early access thing?"
I decided to do an early access launch, so I launched it on the date that I said I was going to launch it, but I launched it with just the stuff that was done so far at a pretty big discount with the promise that I was going to release new videos every week until the course was done, and that's what I did, but it took me another year to finish the course, putting out videos every week.
Sometimes I would miss a week, but I was putting out four or five lessons basically every week until it was done, and it ended up being 160 videos. It's 23 hours long. It was just the most stressful year of my life because I just felt like these people had given me money and I owe them now. It's not like they bought something that was finished from me.
They bought something that's unfinished, and now I'm in debt to those people, and that was a really shitty feeling. And because of the fact that people had already paid me, and I'd already given what the course outline was going to be, I couldn't cut the scope of the project, which is what I would not have normally done.
Normally, I have a deadline and it's like, "Okay, I know I want to get it done by this day. What can I cut? What can I change to fit that deadline?" Because otherwise the project goes on forever. And I couldn't change it because people had already paid me, and I still did change it a little bit, but every time I wanted to make a change to the curriculum, or cut a cut a section or something,
I felt dread around it because I'm always worried who's going to email me and be like, "Hey, where's this lesson that you promised? I noticed you decided not to do it. I only bought it for this one lesson and now you're not going to deliver it." These are the fears that are going through your head.
It took me another year to finish the course, which in some ways was okay, from a strategic business perspective. Looking at it objectively, it was actually probably good because every time I was posting new lessons, I could tweet about it. I could say, "Just added a new module on testing background jobs to the course." I could say, "By the way, the course is still available at the early access price." and having an excuse to keep talking about it because I was still putting out new stuff meant that sales were a lot steadier and consistent for a longer period of time.
They didn't drop off as much like they would at a traditional, finished product launch. But the stress of it was not worth it to me. So, I decided after that, " I'm never doing an early access product ever, ever again. From now on, I finish it before I launch it." Because when I launched the book, that feeling that day of the book being out every line, every word being written, the videos being done, and people paying me money, that was an incredible feeling.
I was like, "Holy crap. I'm reaping the rewards of the work that I've done.", whereas the day that I launched the testing course, it actually did $100,000 in the first day, and that day was in some ways exciting, right? But in more ways, I just felt dread. I was actually scared because of how many people bought it. That was more people I was in debt to.
Every sale was just like one more person that I owed something to, and that was just not a good feeling at all. So I would say if you're going to release a course or a book, an information product like this, think hard about what sort of person you are and if that feeling of being indebted to people is going to be a major drain on you, think about that hard before deciding to do a pre-release. And if you're anything like me, you're probably better off just waiting until the full thing is released.
A sense of dread is horrible. And it's funny because you talked about your first book. That was the thing that you finished. There was a point where you completed it, every word was done, you could move on to the next thing. That sense of freedom is incredible.
I've never felt that free before. I build SaaS apps. Like, the Indie Hackers forum, are you kidding me? That thing is never going to be done. Every week, the task list is longer than it was the week before. So, for you to go from the situation that you were in, to suddenly working all the time on this thing that people have already paid for, there's no more money coming in, you're just in the hole; you're in debt. That sounds terrible.
Yeah, you're just paying them back, it feels like. Crappy feeling.
So, there are some other changes you've made to your processes that didn't fare quite as poorly. For example, your most recent work, Refactoring UI, is a book you published with a collaborator, Steve, I believe you said. What was it like working together with somebody else for the first time?
It was really good, actually. I've known Steve for a few years now. We met each other because we both live locally and we both had just been involved in the hacker-building-your-side-projects scene. He's a designer, I'm a developer.
He'd worked with other developers on projects here and there, and we had a mutual friend who introduced us, and we hit it off and started working on a couple of little fun projects together that never saw the light of day, but we really enjoyed working together. He had seen some of the success that I had with my own products.
He was interested in getting into it, too, like maybe doing a book or something. Long story short, I convinced him, "The first thing you gotta do is start building up an audience, and I think a good way to do that is to try and teach developers design, maybe share some tips on Twitter. We both stole this format from Wes Bos; the hot tip where it's just a fire Emoji, some useful tip, and then a screenshot that shows off the idea from the tip.
He started doing those on Twitter with design stuff. Like, developers make this design mistake, here's what you should do instead. We were collaborating on those. Not really in any deliberate way, but I'm a developer who cares a lot about design. Even though I'm not a designer by nature, it's something I've worked really hard to get as good at as possible, but I still feel like I'm very developer-brained.
I'm not really an artistic person. Because he's my friend and I want him to succeed, I would always be sending him ideas for design tips too. Anytime I would learn something that really resonated with me as a developer, I'd be like, "Man, you should make a tweet about this because this really changed the game for me in terms of my own design. And I think other developers could benefit from it too."
And a lot of those things were things that Steve maybe wouldn't have thought about on his own. Because they're just second nature to him as a talented designer, simple things like vertically offsetting your box shadows, stuff like that. He'd be like, "Seriously? People would not do that automatically."
So we'd work together on these tips. I'd help him figure out how to frame something in a way that I think would really resonate with developers because really, I was framing them to resonate with me. It blew up. So, he went from having 800 Twitter followers to 30,000 Twitter followers in a year and a half just from sharing these tips on Twitter.
And he had wanted to do a book, and I'd been giving him advice, and he had started actually writing the book. And, he showed me what he had, and it was very much like, "A chapter on typography, a chapter on color theory, a chapter on whatever". And I said to him, I was like, "This is great information, but this isn't the way developers want to consume it. Developers don't care about learning design. They care about making their stuff look good; they want to get better at design by coincidence, by learning very tactical, immediately appliable advice.”
So I started working with him, figuring out how to reframe the content, and it got to a point where I was helping him so much that I had to ask myself, "Can I really afford to keep putting in this time? Because I gotta work on my own stuff." And we just got to talking about and I was like, "Well, maybe we should partner on this and do this together because I think working together, we've created some really great content that's really resonated with people.”
So, we decided to partner up on it. He would be responsible. At the end of the day, when we actually made the book, what happened is, I wrote all the words, we planned all the outline together, figured out what all the points would be, and then I took our outline and turned that into fully written chapters.
And he did all the example images, and I knew the design stuff, and there are 300 completely unique UI examples in that book. It's an insane amount of design work that he had to do, but that's how we split the work. Once we decided that we wanted to write this book together, of course the first step wasn't to really work on the book.
It was okay, "Let's get the marketing engine going in terms of building some anticipation around it and making sure that we're building up the audience." So, he kept doing the stuff on Twitter. We started doing these case studies on taking a developer's designs that they would submit to us, and we would refactor them into better designs.
We had this plan to do a weekly article that was a weekly written case study that took an original design from a developer and improved it and outlined all the steps. Turned out, we only ever did that one time because it was so much work. And then Steve started doing video versions of the same thing, like screencasts.
And those were a big hit. One of them went totally viral and it was one the front page of Reddit for a while. So that was pretty cool. We just kept putting out content like that. Eventually, we announced that we were going to be working on this book, which was way later than we had already decided.
We had known for a year that we were going to write this book before we actually announced it. I think a mistake that a lot of people make with products like this is they announce their intentions to the world too early. Framing it like that makes it sound like we're being deceptive or something, which I don't think we are, but, if you just come out of the gate saying , "Hey, I want to make a paid product and I want you to sign up for it.," it devalues any other free content that you put out there because everyone feels like you have this ulterior motive, even if you do truly enjoy creating free content for people.
You know what I mean? It's like, "Oh yeah, this guy wrote this blog post because he's trying to trick us into signing up for his mailing list because he wants to milk us for some money later." That's what people see, I think. We tried really hard to make sure that we didn't tell people, "Hey, we're actually only doing this to take your money." Because of course that isn't true.
Just like me, Steve loves sharing stuff online and getting feedback from people and he finds that really rewarding. So we didn't want to poison our efforts there by attaching this monetary stuff to it. So we just kept working on the free stuff, putting out good articles, creating good videos. I like to think about it in my head as, you're compressing this spring, and you're just trying to push it down as far as you can, and the further you push it down, the more energy builds up, and then when you finally release a paid product, the amount of compression that you put into that spring is going to determine how successful the paid product is.
So we had been compressing this spring for two years, squeezing out every millimeter of space in this thing to the point where Steve had 40,000 Twitter followers and these design tips on Twitter, where some of them were getting 13,000 likes, insane stuff. Then we announced that we're going to be doing this book, and by the time we announced that we were doing the book, we had people tweeting us every day, begging us to write a book with all the design tips.
So we knew we were onto something there. But again, we had been testing this material for a year and a half, making sure that it was resonating with people. We didn't just -- I think a common mistake people make and bad advice that people give is, "The first step to validating a product idea is to make a landing page and see how many people you can get to sign up."
You need to make a landing page and see how many people sign up, but to me, that's the last step in validating your product idea because no one is going to sign up on a landing page to buy something from someone who they've never heard of, who has never proven that they know what they're talking about, who has never delivered value on anything before.
So to me, the best way to test these ideas is to tweet things, create videos, create blog posts. Just create free content around this stuff and see what hits and what doesn't hit. And then, when I'm pretty confident that we have a good idea on our hands, like I'm 99% sure it will be successful. It's like, "Okay, let's make a landing page to start collecting emails, just to really be sure that this is gonna work."
So we did that and collected thousands of emails. We have 55,000 people on the mailing list now. We worked on the book for a while. I think we started working on it basically full time in August. We had done a lot of planning already, but we really cranked on it full time in August and released it in December.
We had built up so much anticipation around this, and we had been sending an email updates of course, like, "We just finished this chapter, check out this free chapter, check out this free a screencast." We sent out an email, I think it was Sunday night or something, saying, "Hey, so the book is going to be released this Tuesday."
I can't remember the day we released it; December 12th, whatever day of the week that was. Announcing the pricing. And then we stayed up until four in the morning on Monday night, Tuesday morning to get it all done and get all the files prepared and uploaded and everything fully finished. We posted that online.
What I've always done with these products is, to make sure everything's working, instead of going to sleep, waking up in the morning, launching it, and hoping everything works, what I usually do is, I'll put things live as soon as I finish the final 11th hour work the night before, but I just don't tell anyone.
So, we converted our landing page into the actual sales page, didn't tell a soul, tried to go to sleep. Usually you get a few sales overnight because people check out the page, and they know it's going to be released that day, so they're just checking, and they notice. So even before we went to bed, we made the site live.
We had six or seven sales within the first 15, 20 minutes, just from it being online and not even telling anyone. We tried to get some sleep. We slept for maybe three hours and got up at seven in the morning. And then I waited to check all our stats on Gumroad until Steve was around. So, we hopped on a Zoom call, and I was like, "Okay, let's check. See how this did."
And it had been three or four hours since we silently launched it, and we hadn't told a single person, and we had done $40,000 in sales. To me, that was the craziest part of the whole thing. And then I did close to $400,000 on the first day and it did a $1 million in the first month.
Was that your most successful product ever?
Yeah, by far.
That is crazy. How much has it done since then in total, because it's been out for some time now?
In total, let me pull up a number for you here, because everyone loves the numbers.... So, it's done... 1.3 million, US.
That's inspiring stuff.
It's done really, really well, and still continues to sell pretty well to this day.
There's a lot that I got out of that story you just told about this book, and there are really two points that I want to talk about. Number one, at least when it comes to educational products like this, like books and courses, it's not just your product that speaks for itself, it's also you.
It's your expertise that you can demonstrate. It's your reputation and your audience that you've built. And so, when you caution against putting up this landing page prematurely, you're right, because people don't know who you are at that point. Why should they trust that you're going to be able to educate them? Why should they read your book? Why should they invest?
I think it's a lot different than a Saas product. Where with a Saas app, I think having an audience is an advantage because you have a network, and people are more interested in what you're doing for sure. But there's also an element of, you want to make sure that the product can stand on its own two feet.
You want to know that if it wasn't you, if you weren't the face of it, that people still have this problem, and people are still willing to pay to solve this problem. But, with something that's an info product, I think the personality stuff is a lot more important. Not the personality stuff per se, but just earning people's trust and proving that you're someone that they want to learn from I think is really important.
The other takeaway that I got was that we've talked a lot about keeping it simple, keeping it short so you don't lose motivation and you stay focused, but this book was really multiple years of work for you.
And it wasn't simple, it wasn't short, but what sounds like what really kept you going was, you constantly had this steady drumbeat of tweets and feedback from your audience. And these feedback loops where you release something, and you try something, and you get feedback from your audience that's positive or negative.
It can be really addictive. It's like -- I'm sure you have experienced the same thing with lifting. You go to the gym, you're stronger than you were last week. It's really motivating. You want to keep going. It's just such an underrated way to motivate yourself to keep going at something.
It's all just a ton of micro-projects, so even a tweet is not Steve sitting down and typing something out and tweeting it in three seconds. Tweets are sometimes two weeks in the making. They're like blog posts. It's the same amount of effort as a blog post, but sometimes harder because you have to distill it into 280 characters.
I think a really important piece of advice for sharing valuable information online that I picked up from Wes Bos as well, is that it's important – important is not maybe the right word, but something that can really help is to try and help people where they already are. Tweeting about a blog post is not going to get as much engagement as if you can fit the information from the blog post directly into the tweet.
We work really hard to try and just make the tweets stand-alone, awesome pieces of content, and Twitter is not the best place to build an audience for every niche. You know what I mean? Instagram might be better for a lot of places, or maybe Facebook, or maybe whatever else that I've never heard of. But for our audience, which is developers, Twitter is the new universal software message board, you know what I mean?
That's where everyone hangs out. So, that's where we focus our efforts. Tweets are little mini projects, writing a blog post is a project, creating a free screencast is a project. Even when we actually, finally started working on the book itself, every chapter is a little project, right? I had a little web interface where I was publishing this stuff for Steve to review, and I had it all built so that anytime a chapter was finished, I would add a little bit of metadata in the mark down at the top, saying finished=true.
And then the sidebar where all the chapters were listed, that one would change color. So I could see my progress and I could see there was a count at the top, how many chapters are remaining. Sort of gamifying it for myself, in a sense. I think you have to, you have to look at the next milestone and work towards each milestone individually. Don't get overwhelmed by the whole thing.
The hidden benefit there is that every one of these milestones is a mini release that you can learn from. And so you see if it gets a lot of traction, you see if people read that blog post, or retweeted that tweet, and then it informs your decision for what you're going to build.
We have this blog post, I think it's called "Seven Practical Tips for Cheating at Design". I think it's the fifth most read post of all time on Medium, which is pretty crazy. It was a really good market for us, right? I think developers wanting to learn design is a huge group of people.
We were really a fortunate to be able to meet each other and work together and have this unique advantage where Steve is a talented designer. I'm a developer who does a good job interpreting Steve's ideas in a way that makes sense for developers. And we were able to put something together that I think resonated with developers more so than most other design, educational products out there.
There's somebody thinks I want to ask you, Adam. I'm gonna keep you here all day at this rate. You've been talking about building an audience, you've been talking about the things that you've learned from other people who are super good at this, like Wes Bos.
I really liked the tip to just engage your audience where they already are. If you're going to tweet, say something useful in your tweet itself; don't try to link people off of Twitter, for example. What are some tips you have for people listening in for how they can best go about learning this stuff?
Should they just open up Twitter and look at Wes Bos' feed and your feed, and just try to learn by example. Are there any books or courses they should be reading? Should they just ping you and ask you for advice?
I would say. If I had to point to some of the resources that were really helpful for me, I mentioned Nathan Barry's content, I'm sure there's probably other stuff out there now, but his stuff was really good and helpful for me. He has this book, "Authority", that basically takes everything that I learned from all his podcasts and all his blog posts, and distills that down into one resource, so that's a good thing to check out.
And it starts from, "Okay, you have no audience, but you want to make an info product. First thing that you need to do is build authority." That's what the book is about, and has a lot of good, practical advice for doing that. Yeah, I think the tip about trying to help people where they already are -- you want people to notice that they're getting value from you without even deliberately having to click into what you're putting out there if people are just scrolling through the timeline, and they see that you've made something interesting, it works a lot better than forcing people to click away somewhere else.
I think, maybe a little bit of an underrated channel for developers, specifically, so a lot of people that'd be listening to this podcast, when it comes to creating valuable stuff on the internet, is open source. I think if you're not the person who likes to write blog posts or make screencasts, you can build a pretty big audience just by creating useful free tools.
That can be a really good opportunity to practice your marketing skills, too, by putting together a nice webpage for the product and writing good documentation. And that'll earn you some trust with people too, there's certainly a lot of people out there who have big audiences because they've created useful open source projects and if they were going to go ahead and create a course or something, they'd have a big advantage over someone who hadn't been creating open source.
You know what I mean? Maybe writing blog posts is a little bit more effective. Maybe it's not a, but what matters is that you're trying to pick something that helps you develop a bit of a reputation that is naturally aligned with what you enjoy and what you get value from. Other than that, one other concrete tip, I think, that relates to what we talked about before, in some sense.
I think when you first announce a product that you're working on, you have a landing page, you tell everyone, "Hey, I'm working on this sign up here if you're interested." What usually happens is, you get a lot of sign ups on the first day, and maybe the first couple days, and then it drops off completely because you don't really have a good reason to tell people about the landing page again; you've done it.
It's out there now. So, what I do to keep that alive and keep new people signing up to the list is, anytime I'm about to email out an update, like, "Hey, I finished a chapter", or "I'm sending out a free screencast", or some update on the product. I make sure that I announce that I'm going to be sending that email through the other channels that I have first to have a reason to drive people back to the landing page.
So anytime I'm going to send out a free blog post, I'll go to Twitter first, like, "Hey, two hours from now I'm going to be sending out a free sample chapter from 'Refactoring UI' in case you're not on the list, here's the landing page if you want to get a copy of it."
And that was a good way for me to have more spikes in the subscriber count, and make sure that I was attracting new people because I think that the studies or research says that, for any given thing you post on social media, only 5 to 10% of your audience ever even sees that post, because not everyone's a Twitter completionist, you know?
So it's important to announce that stuff multiple times, but at the same time, developers specifically are a really finicky audience when it comes to people peddling their wares on the internet.
So, instead of just being able to tweet, "In case you missed it, I'm working on a book" every three days, it's nice if you can just have another reason to talk about it, which is, "I'm sending out an update that's going to cover this." You're not just repeating yourself and annoying the people who are already aware. That's worked really well for me too.
So, we're talking a lot about the best practices, a lot of the tips and advice that come from other people, things that are well known. Is there anything that you see repeated often that you don't agree with? Anything that you just ignore, and choose to do things your own way instead?
I think the one thing that I think maybe isn't necessarily common advice, but maybe it's a common thing that people get caught up in that I don't think is necessarily the best use of their time is, when you start getting into all this, trying to do marketing on the internet, it can be really easy to get trapped in obsessing over analytics, and funnels, and attribution, and conversion rates.
I don't think that that's the right place to be investing your energy. I know when I shared my stories about my product launches with people in maker communities that I hang out in, a lot of the time I'll get people saying, "Where does your traffic come from?" or, "What's your conversion rate?"
The people asking me these questions are people who aren't succeeding with their own products, usually, and my answer is, "I literally don't know." I have no idea how many visitors we have on our landing pages. I have no idea what percentage of those people sign up. I've never thought to AB test anything. I don't know what websites they're coming from.
I literally have no clue. All I know is that any time I put out a free blog post, or put together a really well-crafted Twitter tip, or do a live stream, or put out a free screencast, I make more money. You know what I mean? Those are activities that are delivering value to other people that I actually enjoy working on.
That must be driving more traffic to my site from somewhere. That must be increasing my conversion rates or driving more people to sign up for things. I don't know where they come from. I don't know who they are. I don't know why they do it.
And I'm sure that information would be helpful, and I could optimize things better with that information, but my personal belief is that none of the changes I can make with that information would ever move the needle as much as just making more awesome free stuff and being valuable to people on the internet.
So, I would say try not to get caught up in worrying about all these numbers and all that stuff. Just focus on the activities that actually help build your audience and actually build your own reputation and try not to major in the minors so much.
That makes so much sense. Because all this stuff gives you an edge, but it's not directly creating value for people.
I'm sure at a certain scale, if you have millions of people visiting your site, there are optimizations you can make that are going to make you enough money to be worth doing, but if you're worrying about that stuff because you were only able to get 600 people on a mailing list, and you only sold pre-sold 42 copies of your book, let's look at the numbers from a different perspective.
There are not enough numbers there for any of that stuff to matter. Right? So it's better to just focus on the stuff that is delivering value to your audience and don't try and optimize a bunch of stuff that isn't going to make a difference.
I think a lot of it comes down to your team size as well. When you're a company of one, that's definitely not the most efficient way for you to spend your time. If you've got a thousand employees, sure. Put somebody on the analytics. But if you're small, you've got to make tradeoffs. You can't really do all the things that a much bigger company can afford to do.
That's an interesting topic in general because that's something I struggle with a lot, is knowing that there's always more things I could be doing to be more successful with what I'm doing.
It's really hard to be proud of the stuff that you are getting done, and be satisfied that, "I got this done this week, I got this done this week," instead of focusing on all the stuff that you didn't have time for or the stuff that's slipping. You know what I mean? It's been really hard for me to try and teach myself to just accept the fact that there's always going to be an infinite number of things that I could do that could improve things, and that it's impossible to do them all.
Since it's impossible, I shouldn't get down on myself for not literally accomplishing the impossible. You've got to focus on whatever you think is the most important thing that you could be doing and the best use of your time and try not to be so down about not getting all the other stuff done.
You sound like a perfectionist. You sound like me. I could have said exactly what you said.
Definitely. It's a blessing and a curse, I think. Because I think I think an area that is pretty easy to compete on in product development is quality. I think, probably one of the reasons that Indy Hackers was so successful in the beginning is because of the quality. Everything was super, super polished and professional.
It wasn't some hacked together MVP, I'm sure to you it felt it was in a lot of ways. But to the people visiting the site, it was this, this is nice, this is the real deal. This is well done. It's the same way with educational stuff, and courses, and making that stuff good, and the same with SaaS apps. People care about using stuff that's good and well done, and I think if you're sloppy, you're leaving a lot on the table.
But it also makes it really hard to ship stuff, too, and I think learning to ship smaller things is the secret there. This is like a 37-signals-ism. It's like, "Half, not half-assed.", or something like that, where it's like, build half of a product and do it awesomely instead of building a whole product that's half as awesome as the half product would have been.
Jason Cohen, who I had on the podcast earlier this year, has something similar. He calls it the SLC, the simple, lovable, complete product, and the idea is, "Make a really good skateboard; don't make a crappy car." Same idea, basically. Well, anyway, Adam, I'm taking up a ton of your time, and I've still got a thousand more questions I want to ask you.
People will be wondering while your next book isn't out, that'll be because you're still on the podcast answering Courtland's questions. Usually, I end by asking guests to give one piece of advice to people listening in who want to start their own companies, but there's one specific topic that we didn't really get onto, and that's the topic of ideas. How do you know what to work on?
I think this is what stumps a ton of people, and you seem to be pretty good at navigating it. You know exactly what kinds of books and courses will resonate with what types of audiences, and you seem to hit the mark every single time. What's your advice for people who don't have an idea, who aren't sure what audiences are craving, who aren't sure what they should work on?
I would say, the least productive thing you could do is just sit down and brainstorm product ideas. I think that's a trap that everybody falls into that I have fallen into all the time, and I always notice when I'm in that trap, and I know that it's never been productive for me. I think the best thing that you can do, a couple of different ways you can find out what matters to people.
One thing is to just make something, even if it's not going to be a good idea, necessarily. Because once you actually try to make something, and finish it, and do a good job on it, you will find things that were hard about that, that might lead you to ideas for products that could actually be useful. I know there's all sorts of ideas that I've had for things that I never would have had if I didn't release a book.
Examples would be, and again, maybe people don't pay for these, but a real pain point that I've run into is better analytics for my sales, and not because I care about attribution for things, but because I want a better pulse of -- I built my own custom sales-reporting system, just so I could get a quick way to see, "Okay, where are my sales in the last 30 days? How did that compare to the sales in the 30 days before that?"
So I could see, "What is the trend? How fast are things dropping? Am I still doing okay? Is next month going to be horrible?" Other things like accounting tools that I wish I had that I don't have that I only know I need because I tried to build some other little business.
I think just getting started and just doing something is a good way to increase your -- I don't know what a good metaphor would be -- just widen your net for other possible ideas and expose yourself to more problems and more pain points that you can discover.
So, if you want a great idea to work on, perhaps start by giving yourself permission to work on a mediocre idea.
Yeah, exactly. You've got to start with something. You've got to start with a bad idea to help you find the good idea. That's one way to do things. The other thing I would say is, just work in public, super important. If you just share what you're doing online, share what you're excited about.
Talk about what you're learning, write blog posts about what you're learning. That's the only way that you can find out what information you hold, what knowledge you have that excites other people, or that gets attention from other people. That's what I've done with all my stuff. A lot of it starts with me being excited about a topic and then trying to learn more about it, and sharing what I'm learning about it, and then seeing if it's resonating with other people.
I did a view course last year. I learned about this render prop pattern from React that no-one was doing really in Vue, and I was really experienced with Vue, and I didn't really want to switch to React just to apply some of these cool ideas. So, I tried to figure out how the hell I can do this in Vue?
And, I figured out how to do it and figured out some interesting ways to do it, and I just started tweeting about it, like, "Check out this idea. Here's a little screenshot of something that you can do in Vue, and this is how it works." I gave a conference talk about it in an online conference, and the feedback from that was really good, then I wrote a really in-depth blog post explaining more about it.
Just testing, testing, testing, increasing the effort involved in the test. It starts with a tweet, then a talk, then a really in-depth blog post, and just making sure every step along the way that it's still getting the same amount of attention. If the tweet didn't get attention, I wouldn't have done the conference talk.
If the conference talk bombed, I wouldn't have done the blog post. That's how I test stuff and learn what people are excited about. And for the most part, I am not that different from other developers out there who are interested in up-and-coming technologies.
The same is probably true for most people listening to this podcast. There's probably a good chance that the things that you're excited about, that you're learning, that feel new to you, are exciting and new to other people as well. So, just share what you're doing there, and make sure that it's resonating with other people, and use that to refine your ideas a little bit.
I've never been crazy formal about it, like surveying people or asking questions. It's really just putting stuff out there and paying attention to the reactions, paying attention to the questions people ask. And then the other benefit that can come from this, too, is that you can learn that you actually have something to offer that you didn't even realize you had to offer.
So, example of this is: I was working on a SaaS app idea, and I live-streamed all of it because I wanted to get the most bang for my buck in terms of spreading the word. I could've just worked on it in isolation, but I knew, "Okay, you have to work in public for things to be successful." People need to know what you're doing.
So I thought, "Well, I need to write this code anyways. If I write the code in public, well now I'm creating content at the same time that I'm getting the work done. So that seems a good use of my time." So I was working on this SaaS app, and people were tuning in and checking it out, and I thought, "Okay, the focus of these streams will be, "We're doing a lot of TDD, we'll be doing a lot of stuff with Vue." And that's what I was selling people on.
This is what I think people are going to be excited to learn about. But what had turned out was, I had written my own little home-grown CSS framework that I'd been carrying around from project to project and in the live-streams I was building the whole UI with this custom CSS framework. And all the comments in the chat were always, what CSS framework is this?
What CSS framework is this? What CSS framework is this? It never even occurred to me that people would give a shit about what classes I was putting in HTML, you know what I mean? But everyone was more interested in this approach to building this UI with the CSS than they were in the TDD stuff or the Vue stuff.
And that is what motivated me to open-source that CSS framework, which is now Tailwind CSS, which has grown into a really big project to the point where I'm working on that full time now to grow the community around that and look for opportunities in the future to figure out how to monetize that in some way.
Maybe by doing premium themes or some of the other things that people have done with other UI tools, but I never would have even open-sourced this thing at all if I hadn't been streaming myself working on this SasS app and people happened to care more about this CSS stuff that-- it never would have even occurred to me that it would have been interesting to people.
They were just more interested in that than in the stuff I expected them to be interested in. That's just another good example of how working in public can really clue you in to the stuff that your audience actually cares about.
Well, I can tell you with certainty, Adam, that another thing you do that's very interesting is just talk about the way that you do things. There are a great many people who would buy a book if you wrote one about how to launch online courses and how to build an audience.
I can move into the, the meta-work of selling how to sell on the internet. I don't know if that's really my thing, but I appreciate that. I'm glad that I can help other people follow this path, and hopefully learn a thing or two, and hopefully be a little bit more successful with their own ventures.
Well, I'm glad I got the opportunity to have you on the podcast where you did just that. Thanks so much, Adam, for coming on the show, sharing your story and your knowledge with all of us. Can you tell us names of where we can go to learn more about what you're up to, what's coming next from you, and anything else you might share online?
Yeah, sure. So, Twitter is where I hang out, where I'm most active, so I'm just @AdamWathan on Twitter. I have a personal website at adamwathan.me. I wrote a really in-depth blog post called, "The $63,000 Book Launch That Let Me Quit My Job."
That outlined the entire process from idea to launch for my first book, the numbers and all the emails that I sent, and how many subscribers received each email, as much detail as I could possibly cram into it. If you're curious about seeing the blueprint for a book launch, you can check that blog post out on my website.
I gave a talk at MicroConf last year about nailing your first launch. Again, a lot of the same sort of stuff that we talked about here, but just organized into a talk. If you're interested in checking that out, I can get you the link to that for the show notes. I think if you just Google Adam Wathan MicroConf recap, you'll probably find it.
The CSS framework, that thing that I'm working on the most right now is Tailwind CSS. You can learn more about that at tailwindcss.com. I'm working on a free video course for that right now, actually, that I'm hoping to have out next month that I teach you how to design really professional looking UIs from scratch using Tailwind, even if you don't have a ton of CSS experience.
Doing a free video series for the first time in a while, which feels good because I always have enjoyed putting out the free stuff, probably more than the paid stuff. That's probably it. Maybe another thing is, I host a podcast called Full Stack Radio, which I use as an excuse to pester experts with questions about things I'm trying to learn.
So, if you want to hear what I'm interested in and follow along, and learn some things about that, check out fullstackradio.com, and I think that's probably it.
All right Adam, thanks so much.
If you enjoyed listening to this conversation and you want a really easy way to support the podcast, why don't you head over to iTunes and leave us a quick rating or even a review? If you're looking for an easy way to get there, just go to indiehackers.com/review and that should open up iTunes on your computer.
I read pretty much all the reviews and you guys leave over there, and it really helps other people to discover the show, so your support is very much appreciated. In addition, if you are running your own internet business or if that's something you hope to do someday, you should join me and a whole bunch of other founders on the indiehackers.com website.
It's a great place to get feedback on pretty much any problem or question that you might have while running your business. If you're listening to the show, you know that I am a huge proponent of getting help from other founders rather than trying to build your business all by yourself.
So you'll see me on the forum for sure, as well as more than a handful of some of the guests that I've had in the podcast. If you're looking for inspiration, we've also got a huge directory full of hundreds of products built by other Indie Hackers, every one of which includes revenue numbers and some of the behind the scenes strategies for how they grew their products from nothing. As always, thanks so much for listening, and I'll see you next time.