👋 I'm Dave Ceddia. I'm a blogger these days, and I've been a software developer professionally since 2008. I tinkered with computers as a kid, studied programming in high school, and got my BS and MS in Computer Science at UMass Lowell...so, a lot of computers, really.
Pure React is a book I wrote to teach React to beginners. One of the big barriers to learning React is the overwhelming amount of stuff that tends to be taught at the same time, so my approach was to strip it down to its bare essentials and teach React all by itself.
Today the book makes between $2-3k/month, and I was able to go full-time on creating products in April 2018.
I never really liked working a job. There were plenty of good days. It was great on paper, and I was quite privileged to have a job as a software developer. But what I really wanted was control over my own time. I didn't have the money to just quit outright, though. My initial plan was early retirement ala Mr. Money Mustache, but I thought I could speed that along with some side income.
So in early 2015, I enrolled in 30x500. It gave me a solid roadmap for the whole business-building process, including a research process they call "Sales Safari" for finding out what people struggle with, and what I could create to help them.
I started off writing about AngularJS, a JavaScript framework I used in my day job, but eventually switched to writing about React (a competing framework). The transition was nerve-wracking because I had built up an email list of around 1,700 Angular people by the time I switched, and I was worried they'd all unsubscribe. That turned out to be an empty fear, though. Almost all of them stuck around.
So I had a list, and it was time to build a product. Something small, that I could finish and ship quickly. Amy Hoy and Alex Hillman, the teachers behind 30x500, were adamant that we pick small achievable products for our first foray. Closer to an "eBook" or "guide" than a "comprehensive course" or "SaaS".
Since I'd noticed people struggled with the complexities of learning React, I figured a tiny book that taught just React would be a solution to that pain and also fit my own constraints—something I could do part-time and finish quickly. My Projects folder is overflowing with things I have never finished, and I didn't want that to happen to the book.
Writing the book took about two and a half months from start to finish, working nights and weekends. I wrote the sales page before I wrote the book so that I could collect emails, gauge interest, and also give myself a "checklist" of sorts. A few times throughout the writing process I went back and re-read the sales page to make sure I wasn't getting off track.
I never really thought of the sales page as a form of validation, at least not in the sense that I'd cancel the book if I didn't reach X subscribers or something. I knew from my research and growing email list that the pains I was addressing were real.
I had the same full-time job through the whole process, from starting blogging to writing and launching the book. I tried to avoid spending money on services and products so the cost to develop the book was pretty much just the time involved.
I wrote the book in Markdown and used pandoc to compile it, with a LaTeX template I found somewhere and hacked up. I also wrote a few Ruby scripts to manage the build. The tooling, especially the LaTeX, was a pain to get right. I almost switched tools a few times, to something like Gitbook or Softcover, but ultimately it seemed faster to just forge ahead with what I had.
I had set myself a deadline—I was attending the World Domination Summit conference in August 2016 and I wanted to have the book done and launched by then. I originally intended to launch with the full complement of formats: PDF, ePub, and MOBI. Instead, I ended up cutting it down to just a PDF file along with code for the examples and exercises. A few weeks later I added ePub and MOBI to the bundle and sent it to everyone as a free update.
My email list was my main source of initial customers. The launch emails went out to 2,489 people. I had built that up through blogging consistently (every week or two) and sharing those blog posts with my list and in places like Facebook, Reddit, and a few JS community news aggregators.
My core strategy has been to write helpful, educational, actionable articles. Sometimes I think people see "trust building" as a tactic of sorts and go into it with a frame of mind where they're trying to figure out how to extract maximum trust or how to make people trust them. I haven't approached it like that. I try to focus on writing genuinely helpful stuff. I think real trust is a byproduct of being helpful.
Over time, organic search traffic to the blog has grown. I haven't done much intentional SEO, but most posts are built around a question or pain point I'd seen in a forum or Twitter or somewhere else. I think I've gotten some natural SEO just by writing about things people are wondering, and using the words they use.
Month | Unique Visitor |
Sep ‘18 | 116276 |
Oct ‘18 | 140210 |
Nov ‘18 | 128283 |
Dec ‘18 | 112333 |
Jan ‘19 | 130521 |
I sell the book directly on my site, using SendOwl. I also sell it through Amazon, though I don't make many sales there.
When I first launched the book, I had three tiers—Just the Book for $35, the Complete Package (book and code) for $45, and a Team License for $225. Most people, probably 70% or so, bought the Complete Package. Pretty much nobody ever bought the Team Package. I think I've made three sales of that, ever.
Originally the book was called Learn Pure React. The title felt a bit clunky, and I noticed some people were shortening it to "learn react" or "pure react", so I ran a poll on Twitter and Pure React won.
In July 2017 I updated the book, renamed it, and re-launched it, rewriting the sales page at the same time.
The sales page rewrite made a big difference to my monthly sales. You can see it in the graph. The big spike in the middle is the July 2017 relaunch, but all the little peaks post-launch are higher than the ones prior.
I think the rewrite was more effective because I had been steeped in the audience for another year at that point, so I was more in tune with the pains and the copy came out better. Plus, I had been working through a course on UI design and the redesign is just visually much nicer.
For a while, I experimented with a lower price of $19/$39. When I relaunched the book in 2017 I bumped the price to $29/$49 at the end of launch week, which is where it's at today. I replaced the Team License with a "contact me" link since so few were buying it.
In mid-2018 I created a free 5-day email course to teach the basics of React, which then flows into a pitch for the book, with a discount. My conversion rate for that is somewhere around 5%. I'm not tracking whether people buy before or after taking the course, so that number doesn't necessarily indicate how many bought strictly after taking the course, but I'm pretty happy with it either way.
Nowadays it's automated, but for the first six months after launching the email course, the discount code was hard-coded. I didn't want to just "fake it" with an everlasting code, though. So every Sunday I created a new one and updated the emails, and I grouped subscribers into weekly batches and sent the launch each Monday.
In terms of services, I've tried to keep the business pretty lean. My recurring expenses are:
I've noticed that my revenue tends to dip at the beginning of the year. Not that I have many data points on this, but it scared me when it happened the first time, in early 2018. I had just had my first month reaching over $2k, and then January came around and it was something like $800 and I wondered if maybe I was done for. But it turned out ok. The revenue picked up again a couple of months later. 2019 seems to be following the same pattern.
Month | Revenue |
Sep ‘18 | 3333 |
Oct ‘18 | 2761 |
Nov ‘18 | 2763 |
Dec ‘18 | 2369 |
Jan ‘19 | 1953 |
My primary goal right now is to be able to keep doing what I'm doing, working for myself. To that end, I need to grow my income to something more substantial, and creating more products seems like a good path forward. I don't know where I first heard the idea, but "do more of what works," is essentially my medium-term plan.
I signed on to be an instructor at egghead.io last year, and in December I released my first course there. Having another revenue stream helps, and egghead treats their instructors very well.
I've just recently launched a second product, Pure Redux — a video course this time, to help people take the next step with React and build more complex apps. I also plan to update my book again, to incorporate the latest changes in React, and relaunch it after the update.
I think if I had three or four products in the $49 to $299 range that sold as consistently as my book has been able to, that would be pretty sustainable. So my plan for 2019 is to create more books and courses. I'm interested in trying out some other formats too, like workshops and coaching.
One potential speed bump is that the JavaScript ecosystem is volatile, and very much subject to change. I do think React has a solid position right now, but I'd be surprised if something else doesn't come along eventually. If and when the ecosystem pivots, I'll hopefully be able to pivot along with it, or zoom out and focus on teaching JavaScript, software engineering, or some other related discipline. I enjoy teaching and I'm happy to keep doing this for the foreseeable future.
Most of my challenges have been self-imposed. Things like letting myself get distracted and waste hours scrolling through social media. Or getting lazy and not publishing an article for 6 weeks straight, and letting guilt build up. Or worrying that my prices were too high—after all, you can find comprehensive 35-hour courses for $10, so who am I to charge $49 for an ebook?
One of the first challenges I hit upon was the idea that I needed to create unique content. That if someone else had written a similar article to the one I wanted to write, or similar products to mine already existed, that I shouldn't "reinvent the wheel."
I pushed past that fear and hit publish anyway. The fear didn't really go away at first, but when I noticed that nothing bad happened, the fear softened a bit. I can't remember how many times I've published an article that seemed so basic but then got great feedback from people it helped. Over time, I think, I proved myself wrong by publishing over and over.
Distraction continues to be a difficult adversary. I've found the Focus app for Mac to be a big help, but it's still a struggle.
With pricing, I've come to realize that some people value conciseness and focus. A book focused on teaching one thing well can sell for $49 and create happy customers, even when there exists a $10 course covering a myriad of topics over tens of hours. Length doesn't necessarily equate to value. I've had a few people tell me that they went through a lengthy course, came away confused, and then finally made sense of React while working through my book. Focus can be a virtue.
If I had to do it all over, I think I'd launch a smaller product, and launch it sooner. Just to get something out there, and prove to myself that I can create something people will pay for.
There are a few resources that stand out in my mind. Reading Tim Ferris' The 4-Hour Workweek was what opened my mind to the idea of starting my own business. After that, I stumbled through a few courses, failed projects, and intense wantrepreneurship before joining 30x500. I can pretty confidently say that I would not have a successful business right now if it weren't for Amy and Alex and 30x500. I owe them a lot.
I think my choice to switch from Angular to React was a good one, in hindsight. There was definitely a bit of luck in making that change when I did. I wasn't very excited about the direction Angular was going at the time, either, and I think forcing myself to continue would've made me more likely to give up.
Going to conferences has been great, too. I've been to World Domination Summit a few times, Craft + Commerce, and MicroConf. I don't have too many entrepreneurial people in my social circle, and being able to meet and connect with other people doing the same stuff, in real life, just makes it all more tangible. I'm an introvert by nature, but I've found people at those conferences to be very welcoming.
I think "build it and they will come" is a lie, but one that a lot of people accept as fact. We're told stories of how one person toiled away for years and then "one day they made it big."
Lots of advice is just "create great stuff" and "keep doing it for three years" and "one day someone will notice you." I used to think that's how it works; I don't anymore. I think there are two missing ingredients to that formula: the "great stuff" needs to be useful to someone (based on research), and you've gotta share it somehow (wider than just the blog with three visitors/month).
Along those lines, the adage "you are not your customer" is a great one to keep front of mind. "Scratch your own itch" is a popular strategy but not a very repeatable one. Digging a SaaS-shaped hole and then going in search of customers that fit is backward. Instead, research your customers, understand their pain points, and build them something they already want.
I already mentioned 30x500, and their Stacking the Bricks blog is great too. I also highly recommend Kathy Sierra's book Badass: Making Users Awesome—it's all about how to design your product so that it makes your user better, and in turn, they will love and share your product because of how awesome they became.
Oh, one more thing! Try really hard to avoid building your own software. If you're a software developer like I am, you probably love building solutions to your own problems. Coupled with a flair for frugality, I light up whenever I think about building my own courseware or CMS or email marketing platform. How hard could it be, right? Plus it's a fun distraction from actually writing those blog articles. It's a trap, though. Use an off-the-shelf solution. Find a free one, if you can! But pay if you have to. (I think the opposite end of this spectrum, a.k.a. SaaS Fever, where you drop $$hundreds/month on services, is also not great). Don't spend money if you're not making money; and then, only spend when you can justify it.
You can find my writing at daveceddia.com and my Twitter @dceddia. The book I wrote is Pure React and the new course is Pure Redux.
I realize this is from 2 years ago, but it was an insightful read. Congrats!
Thanks!!
Hi @dceddia, great interview!
I've also learned a ton from your content over the past few months. You are definitely the real deal, and skilled at passing that knowledge along to developers like me. Excited to see your business continue to grow- and congrats on going solo last year!
Hey @dceddia,
I just wanted to say thank you for all of your great content. It has actually been extremely helpful for me in the last few weeks, and has clarified several of my misunderstandings with the react context api and redux. I actually purchased Pure Redux + Pure React yesterday, and I'm excited to dive in!
I discovered your blog a few weeks ago when I was evaluating whether to use the React Context API, or Redux (you're #1 rank for me on the search term "react context api vs redux"!) I eventually settled on rolling with Redux, as I have used it lightly before, and the developer tools are great. I also watched your course on Egghead about the context api, and was immediately sold on Pure Redux.
Your writing style very much aligns with the way that I read and think, and your course on egghead was fantastic. I also really love how you're using codesandbox -- this made it super easy for me to dive into things and poke at them -- which is usually very hard to do with most other react examples/tutorials. So again, thank you for being awesome, and I look forward to giving you more money in the future!
Ps. one thing I've never done, but would love to learn in depth is more about how to do unit testing for react applications -- your course on egghead had a taste of this, but it would be great to have a deep-dive into all of the available tools.
Thank you Jake! Awesome to hear that you're enjoying All The Things :) For a deep dive on testing in JS, I think Kent C. Dodds' Testing JavaScript is the most comprehensive resource I know of.
This comment was deleted 6 years ago