CoRecursive: Coding Stories - Story: The Story Graph with Nadia Odunayo
Episode Date: March 2, 2022Whenever I work on a side project, I can't help but daydream of it taking off in a big way. For today's guests, something like that did happen.  When Nadia started building her side project, she d...idn't know that it would end up spreading virally. She didn't know that it would end up competing with an Amazon product. She didn't know that keeping it up would be something that would drive her close to tears. Episode Page Support The Show Subscribe To The Podcast Join The Newsletter
Transcript
Discussion (0)
I'm Adam Gordon-Bell, and this is Code Recursive.
Each episode is the story of a piece of software being built.
Whenever I work on a side project, I can't help but daydream of it taking off in a big way.
Years ago, I worked on this little typing program.
I added features to it to try to, you know, highlight the weak spots in my typing.
And I would catch myself just imagining people using it and finding it amazing.
You know, like it would spread virally.
Bill Gates would tweet out like, oh, I've just eradicated malaria.
But yeah, also this typing program by Adam is really awesome.
Or something like that.
But that didn't happen.
But for today's guest, something like that sort of did happen.
When Nadia started building her side project, she didn't know that it would end up spreading virally.
She didn't know that it would end up competing with an Amazon product.
She didn't know that keeping it up would be something that would drive her close to tears.
Today is the story of the Storygraph.
Let's get into it.
So, can you tell me who you are and what you do?
I am Nadia Odoayo. I live in London in England. I was born here. And I am the founder and CEO of The Storygraph.
Nadia is a big reader.
And she's been tracking her reading in Goodreads for a long time.
Goodreads is like a social network for readers that's based around tracking and rating books.
And there was a time in my life where it was my favorite app.
Because I just thought how wonderful and magical that I can track all the books I'm reading and have this history and see what I thought of each book at each time. But there was one thing that I always found myself wanting to do
that I couldn't do on Goodreads. And that was to have private lists or lists that I could share with one or two friends that were quite
personal and that I could then track my progress through that list. For example, one of my best
friends, we have very similar reading tastes. So whenever she marked a book as five stars,
I wanted to keep track of those and then slowly work my way through her list of five star books.
And so that was the original side project. And I'd been sitting on that side project for years.
The friend she wanted to track was Anna.
I did a software boot camp and she was actually the receptionist. She was at the front desk
then. But since then, she herself took the course and is now a software engineer. So that's,
she's got an awesome story as well. But yeah, she's just, she's just become a close friend of mine. And we, big readers, one of the things we've bonded over is our love of books. And so
whenever she rates something five stars, I'm always like, ooh, what's that? I'm always curious.
And there are a few other people over the years that I've found that with
because everyone's rating scale is unique and personal to them.
And so you learn over time if you follow someone and their reading and their habits,
you kind of learn which people seem to be similar to you or complete opposite to you,
which could also be helpful as well.
And then you can use that to help, you know, decide what you're going to,
what you want to put on your radar.
So at the beginning of 2019, Nadia had some money saved up and she had no job.
And I said, well, now I'm going to I'm just going to hack on my side projects for January and see how it goes.
I wasn't putting any pressure on anything.
And my two main side projects that I was really excited about was this reading lists app that I had
that I'd been sitting on for years. And another one that I'd been sitting on for years, which was
a running app, which where you could put in how far you wanted to run and it would auto-generate
a running route for you starting and ending at the same place. So I found myself, I would go on the run about once a week
and I found myself, once I figured out my 5k route or my 10k route, I just did the same thing.
And similarly, when on holiday in particular, when traveling for conferences, it was really hard to
like map out a new route and know where to go and get the right distance. So for years,
I'd also been slowly hacking away on this running mobile app.
Anyway, back to January 2019,
I had these two projects that I was super excited about
and couldn't believe didn't exist
in the form I wanted them.
And so I just said, I remember sitting down
and saying, which one should I start with?
And I just chose the reading one
and I haven't stopped since.
So was it easy to build that first version, the initial list?
So the first version was easy because, well, one,
so my first job in software was at Pivotal Labs.
And people might be familiar with the tool Pivotal Tracker.
And the thing is, since I've worked at Pivotal,
it doesn't matter if I'm doing a small side project just by myself.
I will have a backlog in Pivotal Tracker that I'll work through.
And, you know, so because I had been working or had this idea for ages and even my friend Anna, she separately had the same idea.
And so we did collaborate on it for a while.
We had a backlog set up already for
an MVP, a V1. And so that first day in January, when I said, I'm going to do this, I opened up
Pivotal Tracker. And I just started working through those stories. And it only took maybe a few days,
it was within a week, I had a first version. That first version was easy to build. But more
importantly, it was really fun.
I think that was the first time, apart from tinkering away on this product over the years,
it was the first time I'd done focused full-time development on something to do with books and
reading. And I loved it so much that I said, okay, originally I said, I didn't want to put any
entrepreneurial pressure to say, what's my startup? What's my idea?
But I have now found something where I feel like a calling to this industry.
I feel like I want to work in this space.
So that was the first version.
So it's incredibly funny and wild how it's developed into what it is now.
Nadia might have just been playing around with a side project,
but she knew if she wanted to make this into a thing,
there was work she needed to do.
And so if you want to understand why her project became as big as it did
when so many other similar efforts failed,
then you need to know what she did next.
She stopped writing code,
and she started talking to potential customers.
My first set of customer interviews that I set up, I did demo this app.
And I just remember the feedback being very much along the lines of,
yeah, this is cool.
Yeah, I'd use this.
And I just knew that, okay, first of all, that is definitely not,
this product is definitely not compelling enough.
It's very much a nice to have.
And then second of all, I knew that showing the demo
was almost clouding over whatever real pain points
there might be in the reading space.
Well, like, what did you hope they would say when you talked to them?
Like, what does a good reaction look like?
Well, so this is the thing. I went into it almost trying to make sure I wasn't hoping for anything
because I didn't want to, you know, imprint my hopes onto what people were saying. I went into
it being like, okay, maybe there is, I know I want to build something in the in the book space and maybe it is tracking, maybe it is recommendations.
But I just kind of want to talk to these people as if I'm just trying to do research and I'm not leaning in any particular direction.
So I want to hear what naturally just comes out and then I'm going to go away, synthesize all of that feedback and see if there are any themes and patterns.
And obviously, as a Goodreads user, as someone very much in the side and just doing customer interviews for three months
and trying to figure out if there was something in the industry to build was the harder part,
especially because at this, so far I'm still working solo and it's my first time doing
something entrepreneurial completely solo. The main thing people said in the interviews,
the common theme was that they didn't know what book to read next. People would have, you know, a stack of books by their
bookshelf, or they would go into Goodreads and see a bunch of reviews or see that people that
they followed had rated these books four or five stars, but they didn't know how to choose which
one. And they knew that from past experience, that wasn't necessarily an indicator that they were going to enjoy that book.
And I think the other side of it is they were seeing a lot of recommendations put in front of them, whether it was Amazon directly from purchase history or Goodreads or things like that, or people telling them which books to read.
But they were finding that they weren't necessarily loving those books.
And so it was the, is there not a place where I can just reliably say,
tell me which book to read next and it will give me a book
and I can trust that it's great.
So obviously this is an incredibly hard problem.
But I was like, it's still a problem.
So I'm going to try. Like, did you have doubts? Like you're like, the thing they want you to build is was like, it's still a problem. So I'm going to try.
Like, did you have doubts?
Like you're like, the thing they want you to build is to like peer into their soul and find the true book for them.
Yes, I had a lot of doubt.
Again, particularly in the first year when I was mainly solo.
But the thing that kept me going was, like I said, I took everything in small chunks.
So after I had had done a few rounds of research and I saw that, OK, it's going to be the it's the recommendation side and choosing the next book.
And that's when I said, well, it's me.
And then there's Goodreads and Amazon and all these other big organizations.
Am I going to go into this space?
You know, at this point, I'm thinking of my tech skills as mainly being Ruby Rails.
I'd done some, you know, iOS stuff and things like that, but it was mainly web development.
And, you know, I didn't know any machine learning or anything like that.
But I just said to myself, look, just keep following the research, keep following and iterating on the research. And as you hit pain points, which could
be skillset or whatever, deal with that at that time, but just keep following the research for
now. What the research said was, if you want to pick the perfect next book for somebody,
you need to know what mood they're in. And people will tell you what mood they're in,
which meant she now had a
name for her customers. They weren't just any readers. They were mood readers. And a mood reader
is someone who they typically have a long to be read list. Every time they hear of a book that
sounds exciting to them, they add it to a list somewhere. And already while they're reading one book, they're thinking about what am I
going to read next? But they can't make a decision because every day or every hour,
they're feeling like something different. They could be very heavily swayed by the book they're
currently reading. And they'll say, oh, this book made me cry or this book made me really feel a
lot of emotions. I want something similar or I need a break.
And then when they come to choose their next book, they're incredibly indecisive.
And they will pick up something, maybe read a few pages and say,
oh, I'm not sure I'm feeling this.
They'll pick up something else.
They typically have multiple books on the go.
And they are not afraid to stop reading a book if it's not working
for them. So now she knows who her ideal user is and she knows what they need. So she makes it
official. Storygraph is for mood readers. And I was doing that as a way to say to, you know,
get for people who were mood readers to for it to resonate with them and for them to come on board.
And then I would have a focus set of customers to iterate on the earliest earliest version
and I remember being nervous to do it but I said you have to do it because if this product goes the
way you're going to go you're going to be able to flesh out something really good with the mood
readers and then if your hypothesis of actually everyone is a mood reader to varying extents
but they are then eventually the product
will have wider appeal naturally
as it gets better and better.
And so far, that's what we are finding,
but it took years.
Now, with vision in hand,
Nadia just has to build the product.
It's time to switch back to developer
from product research.
With all my research,
I was able to pull out a feature list
and I was able to, yeah,
prioritize a list of features
that I knew were needed.
The core use case is
you have a reading history,
what books you've read in the past
and whether you like them or not.
And then you probably also have
a to-be-read list,
maybe books you own
or books that you want to buy.
And probably you have all this data on Goodreads.
So Nadia has to get this data from your Goodreads account
and then ask you what kind of book you're in the mood for.
And then Storygraph will make a recommendation.
And then it was similar in most startups
where there was a lot of manual work at the beginning.
So I had to manually build up databases.
There were hours and hours of work
of just me finding data that I could use
in terms of just bibliographic data
and manually entering it
until such time that we became bigger
and had the ability to hook into different sources.
And there was just a lot of manual work.
And so it was just building things out,
things seeming more automated than they were.
You know, people in the earliest days of the app, it was, oh, this book's not here.
Send a request.
And then I got an email and then I had to go and research and find like information about the book to make an entry in the app.
Yeah, there was nothing in terms of actually building it.
It's a very straightforward app, really.
It's a Rails straightforward app really it's a you know
rails app and it's cool building a ruby on rails app is well within her abilities the hard part is
keeping your motivation up and keeping plugging away yeah so there's this weird thing when you're
a solo founder where you kind of you know you can wake up one day and you realize if I don't go to work today, if I don't go to my desk, if I just stop, like that's it.
Like it felt weird how much like at this point, perhaps I had tens of users, super, super early days.
And I would wake up and be like, is this nothing more than a nice to have?
Am I, should I keep going? And I would have moments of doubt and think like, what am I more than a nice to have? Am I, should I keep going?
And I would have moments of doubt and think like, what am I, what am I doing here?
And it was weird to me how much if I just said, no, I'm done, like that was it.
But the thing that kept me going, and I think it was, it was twofold.
One was, I always had a next best action that I could take because, you know, I would say,
oh, I just did a research round
and this is what I learned. So either this is a feature I should build or this is something I
should look into, or I didn't know what to do, in which case, customer research time. So I always
felt like there was like a direction to go in or something that I could do. And I still had
lots of runway. So there was no pressure to stop in that respect to get a job or do
something else but the second thing was the the founder product fit thing where I just loved the
fact that I was building a product to do with books and reading it just made me so happy and I
just I just felt like I can't give up on this there's something here this feels like such a
good fit for me it's bringing together all of the things that I'm interested in and that I care about and
that I find fun. And so those two things combined just kept me going. And I was like, I'm just going
to try and take it a day each day because it's not like you're going to suddenly quit now. So
therefore just get through today and get through tomorrow. And that's why, yeah, that's how I kept
on going.
Somewhere along the way in this solo founder process,
Nadia started a newsletter that she sent out weekly.
And she would describe what she had been working on throughout the week and what her challenges were.
And so one of the recurring themes in the early days was,
oh, I spent so many hours inputting all these books
and manually onboarding people,
manually adding in all the Goodreads data. Am I doing this right? I know that they say, you know, you've got to do
things that don't scale, but is there a path to, you know, something more automated? And I remember
I would have people message me and say things like, yeah, good luck. I've tried this before. It's probably not going
to work. And I'm like, sure, you know, I would even have people say things like, well, surely
you can automate it this way or that way. But all of the ways suggested, I knew they weren't
viable long term because, you know, either they involved relying on the Goodreads API, which I
knew I couldn't do at all if I was going to build something which, you know, they involved relying on the Goodreads API, which I knew I couldn't do at all if I was going to build something
which, you know, was potentially going to be a commercial competitor with it.
Yeah, I never thought of this,
but you can't just build a competitor to Goodreads
on top of Goodreads' own APIs.
Like Amazon would never stand for that.
You risk them just pulling the carpet out from underneath you at some point.
But Goodreads does have an export process. And if you get that data, you can not only make recommendations,
but also show cool graphs and stuff from people's reading history. But that's just the reading data.
Nadia also has to manually label books with various moods and paces, just one book at a time,
determining its mood. It's wild how much of turning a side project into a profitable
software business is not related to building software at all. It's
just this kind of grunt work. I said well this is part of it. This is part of why
it's hard and if you don't get through this you don't you won't have a chance
of potentially succeeding and you might still fail but at least give yourself
the chance to really fail and not just because you gave up because it got hard.
Meanwhile one of Nadia's friends Sar Saran, is reading her newsletter.
And then her husband, Rob, starts reading her newsletter.
And then he reaches out.
He said, I saw that you're spending a lot of time doing manual entry and research on different books.
I've been actually learning machine learning on the side.
No promises because obviously with machine learning you need
millions and millions of you know data points but if you're up if you if you're cool with it
if you could give me an export of what you've done so far I'll have a little play around and see
what I can do and this was I remember that I he said how many books do you have? And I think at that point we had about 2,000 books in the database.
And he was like, hmm, okay, well, we'll see.
And I remember two days later, because I was in Japan,
and actually this was to be the last time I was abroad until still today.
I haven't been abroad since, so this was November 2019.
Two days later, I was in Japan speaking at Ruby World in Shimane.
And I remember being in the hotel lobby and getting this email from Rob.
And it was like a lot of text.
But I remember there was one part that stuck out for me.
And it said, hey, I think I've got a model.
It's only 60 to 70% accurate.
So I'm not very happy with it.
And I remember thinking, whoa, two days ago,
I had zero machine learning model. Now you're telling me you've got something that's 60 to 70%
accurate. And then he had had attached a spreadsheet of results. And I'll always remember
this. And I was, I was, I was trying to figure out what is he deeming accurate and I realised that what he was deeming as accurate
was how well his model matched what myself had tagged the book as.
So there was this one book that he called out in his spreadsheet
and it was classed as a fail for the model
because the model tagged it as mysterious
and I took a look at the book and it was a murder mystery.
So I said, you're saying that this is a fail,
but this book is a murder mystery.
And so therefore your model is more accurate than we have been.
And so the human error piece that came into that.
And so that was an oversight on us.
Somehow, you know, that book missed off the mysterious tag, which it should have had. And so I was very excited at this point.
So Rob joins as a co-founder and also Nadia finds Abby, a book expert, and she joins part-time to do
some data entry. So it seems like some of the manual work that Nadia has been busy doing might
have an end in sight and she can get back to development, which she loves. She loves coding, although she didn't always love it. At one point,
she could never imagine herself being excited about it. Here's the backstory.
I won a competition to go to a boot camp in London, Makers Academy. And at the time,
the course was 8,000 pounds, so about $10,000 or so. And I got a free place and even then I was still
hesitating whether to go to take the place I was like I'm not going to be a developer do I want to
do a three-month boot camp like learning how to code but since I didn't have a job then I decided
to go for it and it was while on that course that I fell in love with coding, well, parts of coding and development, because I'm quite a mathematical, logical person in the sense that I like problem solving.
And I'm also quite creative.
I like, you know, like reading, writing, music, dance.
Those are singing.
Those are all things
that I like. And so I felt like coding and like building an app and or putting up a web page had
all of these aspects. And at Makers Academy, it was all about full stack development, right? So
we were doing Ruby, but we were also doing like HTML, CSS and JavaScript. And so I started to fall in love with it, the back end stuff, because it was like problem solving and things like that.
The front end stuff was design.
And even there was design in how are you going to put together these models?
You know, how are these models going to communicate to each other?
What makes sense? Abstractions, things like that.
Like I love, I love that kind of stuff especially when I have a chance to just do pure TDD on a new feature and
it's not some like debugging or whatever it's something new it's something that I can I can
fit in my head and I understand and I just get to do some TDD I'm always so happy Rob always
sees me he's like you're having fun you're just coding and I'm like yeah happy. Rob always sees me. He's like, you're having fun. You're just coding. And I'm like, yeah. I just, you know, failing test, fix the test.
Yeah.
Yeah, it can be really addictive
when you have like a very quick feedback cycle
when it's like, okay, yes, now that's working.
Now the next thing.
Yeah.
Personally, like if I have a lot on my mind
and I have to do something that's like that
with very quick feedback
and then it gets a bit more complex
and then it's hard to keep it all in my head.
And then whenever I was worrying about just like by necessity, it gets pushed out and I'm just like able to, you know, focus in. It's like pushing
the worries out of your head just because there's no space for them.
Exactly.
So as Nadia and Rob and Abby were building things out, the user base started to slowly
grow.
So we were waiting for 1,000. I made all these funny videos on Instagram of me.
It was like the club music pumping,
like on Rails admin, like zooming in and out.
And I posted this on the Instagram,
the StoryGraph Instagram,
like, hey, everybody, 1,000 users.
I was so happy.
Unfortunately, that happiness turned into confusion two or three days later when something
started going wrong. Back then, I used to get an email every time somebody wanted to do a Goodreads
import because, I mean, what? I got not even one an hour back then. I suddenly saw a lot of emails.
I think I got a lot of errors because the system had been set up to run like a few at a time.
And I suddenly had like many, many emails in my inbox of people, of imports failing because the APIs that we were hooking into or whatever overloaded.
I was like, what's going on?
And I went into Sidekick.
There were like 100 or something items in the queue.
I was like, what's going on?
Now, earlier that day, someone who was very well connected in the publishing industry
had tweeted about us.
And that person had 45,000 followers.
And it had got like a decent amount of traction.
So I was being like, let me go back and check that tweet.
Has it suddenly kicked off?
Turns out someone, like just a random person in the books community,
200 followers, had quote tweeted this tweet
and essentially wrote something which hit at all of the kind of key points
that would make people want to take notice.
There are a bunch of things happening in the world at this time.
First of all, there was a backlash against Goodreads brewing,
and the tweet mentioned that.
Can we please stop using Goodreads?
It's owned by, you know, Jeff Bezos and Amazon.
And at this time, Amazon had lots of negative press
because already people were getting tired of Amazon because of the, you know, the worker
conditions and things like that. And also it was during the pandemic, you know, very peak pandemic
and Jeff Bezos was getting richer and Amazon weren't paying their taxes. So there was a lot
of just anti-Amazon sentiment. And in particular, there was a lot of
anti-Amazon sentiment in the books world because of the publishing industries, the industry,
the low prices, all of that stuff. So people were very, there was a lot of anti-Amazon sentiment in
general and in the books industry. And then the person referenced the fact that this was founded
by a black woman. This was maybe a few days or a week after George Floyd's
murder and what happened was there was online it started in a very you know angry obviously
devastated space and there was an a shift maybe a few days to a week later where it became we need
to support black owned businesses and And so that was put in
there. And it's also got all these awesome features and it's independent. It was all in one tweet.
So this tweet by a person with just like 200 followers, it went viral. It got like thousands
and thousands of likes and thousands and thousands of retweets.
Then essentially, we went from never having more than eight Goodreads imports in the queue to having a queue of 18,000.
And I was like, I was the only developer.
I still am the only developer.
I don't know what I'm saying.
I was.
I still am.
And I just looked at this.
The app, basically, it didn't work.
It crashed.
I'm like, okay, I'm a bootcamp grad who only ever used to working with software engineers more experienced than I am.
So at Pivotal, I was always pairing.
And then I worked with Saron for a bit, Rob's wife, actually.
And it was very low stakes then because we were just building out a product that no one ever ended up using.
And so this was the first time where, well, this felt very real.
So like, what did you do that week?
That was a dark two weeks.
So we had two, we had two like queues.
One was doing Goodreads imports. And the other one was processing recommendations for people. So looking at the data and generating their recommendations. And it just got to the point where we had to make the decision to say, okay, both of these are standing still right now. We can't juggle both because both needed re-architecting. Is re-architecting a word? Both needed re-digging.
And so we just said, look, the most important thing, the most like wow value add is when you
put your Goodreads data in the app and you see all your stats because you could have been tracking
on Goodreads for a decade and you'll get StoryGraph stats for the last decade. Stats are cool. Like,
I'm sure that's an amazing feature.
But this original vision of these great recommendations that Nadia had been working on,
the feature all the customer interviews had pointed her to,
the cause of all the data entry and the machine learning,
well, bad news about that.
We actually had a notice in the app that said,
we've had to shut down recommendations
because there's too many people.
Obviously, we said it in a more professional way than that. But that was the gist. And we've had to shut down recommendations because there's too many people.
Obviously, we said it in a more professional way than that.
But that was the gist.
So what was the scaling issue?
A whole bunch of things or just your database was overwhelmed or what happened?
It was a whole bunch of things.
We were, as I said, yeah, we learned about IOPS. So the sense that we're doing a lot of heavy, like, writes to the database, adding things to users, you know, every second.
And the database that we had provisioned just wasn't good enough.
And we had to chuck more money at the database.
It was, that was one of the things.
Some of the other things were, I'm trying to think.
I know that I had a lot of inefficiencies in the code of like maybe looping through things. I had memory issues trying to store certain things in memory.
Like in terms of maybe I wasn't doing the most efficient things to even open people's Goodreads files and reading them.
You know, there were memory issues.
We had, I had inefficiencies with database indexes or indices.
And I remember at the time we were using PG search as well.
And I remember that that just wasn't configured well.
And a big part of the import was searching because to find is this book, this book in your Goodreads spreadsheet, do we have it already?
So there was inefficiencies there.
We, yeah, it was just things like that, just like scripts, just not scaling well.
And also the infrastructure, just not realizing, OK, you're now operating at a different scale.
You need to upgrade things. One problem with upgrading and maybe a problem with bootstrapping a social network from your own savings account in general is just the cost to run these things.
Like probably what we were spending monthly just running the app shot up in those few days too.
And at this point, we're still bootstrapping.
I had already been putting money into know, money into the business.
Rob had started putting money into the business when he came on board.
And so we're like, OK, now the costs are in that we're now in the thousands.
You know.
During this time, Nadia was trying to get help.
So she shared metric charts from her database in her newsletter.
This is the response
times and, you know, things like that is what made Andy text and say, wait, what, which database are
you using? Andy is Nadia's friend, Andy Kroll. And when I told him and he said, and you're doing
these good read imports, which are, you know, writing to like putting in thousands and thousands of records like every second
what do you what plan are you on oh no way that's for small side projects you need to pay for the
the expensive one now it was just literally until like every time we did something okay what are
our logs and metrics telling us what does this mean okay let's go research or you know what i
mentioned iops we never knew about
tracking iops figured it out that the reason why we would go okay for a little bit and then start
crashing is because we were overshooting our iops limit by like a considerable amount and then
the database we were using had a burstable capacity, but then the burst amount got shut down.
So things like that where we need to track it.
So, okay, we can't have 20 workers on this database.
Uh-uh, you can have two.
You know, so all this, figuring out all this kind of stuff,
I still sometimes am like,
do I fully understand this database pools and connections?
All that stuff.
I read so many blog posts, tried so many different iterations, just trying to figure stuff out.
So it was literally a week of all hands on deck, just trying to see pain points and then say,
OK, how do we get this to look normal?
How do we get this to go down?
How do we figure out where the memory leak is?
Meanwhile, tens of thousands of people are trying to use the story graph. And for them, it just doesn't work. So the other thing
that happened is when you did a good reason port, we sent you a message saying it will be done in a
few minutes because they were always done in a few minutes. So we had like 10,000 people saying,
emailing and messaging and saying, it's not done yet.
I only have 100 books.
What's going on?
Not knowing that they're number 12,046 in a queue.
We haven't started it.
No one's imported any.
To tackle this, as they always did, they split the work in half.
Rob owned the machine learning and Nadia would work on the website and the imports.
And so there was one point where Rob had kind of solved his issues, you know, things that I didn't
really see or interface with. He kind of said, OK, I need to do this. I need to do that. Done.
And there was this there was this one point where I remember opening up my emails or something at
one point because I was out of ideas. And I remember being feeling inside, like scared and feeling this pit in my chest of like, there's nothing I can even ask because I don't even know what the surface area is of where I'm meant to be looking.
And I remember Rob said like, OK, I've sorted out my side.
How's yours going?
And I had Rob said like, OK, I've sorted out my side. How's yours going? And I had made no progress.
I remember just feeling like, uh, and I remember vividly he was on like a video call and I had him on one side and I just had my emails on the other side.
And I was just like, I don't know what to do right now.
But the great thing about working with Rob is that he's a great pair even though he
doesn't know Ruby Rails so I can say okay I'm seeing this issue and he can kind of say oh he
knows the right questions to ask to help me start thinking about different things I can explain a
domain or I can explain what code is doing and he can say you know conceptually I would do it this
way or you know
with his his work he uses some python sometimes so he does have a sense of some of the code as well
and so I was never alone alone there were moments where I felt alone because I felt like I'm meant
to be the web expert I'm the the CEO of this company I'm running this ship. I need to step up.
No matter how helpful Rob was,
I still felt like I am deep down the leader.
Not even deep down, I am.
So I need to get my act together and not be,
I don't know what I'm doing.
And so, yeah, it was,
there were moments where I was like, I'm not sure, but I just kept on going.
I know it just sounds like you just kept on going. I just did.
Like if something's not working, there is always somewhere that you can look.
There's going to be something that will just indicate that something's not quite right.
So just kept on looking.
A lot of this looking is alone.
Nadia's in London in GMT time and Rob's in PST.
So I think that's eight hours difference.
They only have so much overlap.
And this incident is just stretching on for days.
They've never had this many people on the website before
and they've never had the site working less well.
I mean, it was two days of this and I was just like I remember one day I was out of
ideas and I remember like going into my bathroom sitting in the dark and I
wouldn't allow myself to actually say you know you can't do this like stop but
it was on the tip of my tongue and I was I felt close to tears as well because I
said oh you've wanted this all these years you've wanted your you know your product to take off
you've wanted to build a successful company now here it comes and I wasn't going to say it but I
was thinking it and I said to myself no you cannot say you can't do this you're gonna get out there
and you're gonna keep going you're gonna keep
researching you're gonna ask the people that you know in your you know luckily because of my
speaking I had a lot of Ruby Rails friends and people who were just familiar with different bits
of infrastructure and architecture that could help us think figure out where to look and it took two
weeks but after two weeks there is a newsletter that I've sent out
that says something like, caught up, or we're back in business,
something like that.
Because, yeah, it took two weeks, but we made it.
We caught up.
And then people started to get their data imported,
and they started tweeting about how great Storygraph was.
Oh, wow, this was worth the wait.
So the positive feedback was coming in.
And so at that point, I said point I said okay cool we're past this
hump now now it's onwards can we keep these people what's their feedback gonna be long like you know
over the coming weeks after they've kind of the novelty has worn off nice what did you do did you
have an app did you punch the air and say yes? Did you post a weird dance on
Instagram? Probably. No, I probably did. Dancing is actually one of my main hobbies. So while we
were in the pandemic, so I must have done some dance routine in my house. Probably did that as
a break. When I'm excited and happy, I can go wild. I would just be like doing silly dances,
silly moves, amping myself up and yes you
know that kind of stuff like cheering so there was a there was a mix of just like relief
probably relaxed for a little bit like it wasn't anything like okay I'm taking some days off now
no because it was just like it was just the beginning so now these people are here now
we're over the hump we need to to keep going to, you know,
keep up the momentum. So it wasn't anything like that. But I'm sure I, you know, continually said
to Rob, like, wow, we did it. You know, I wasn't, you know, we made it. You know, I was worried.
Were we going to make it? We made it. From there, things kept growing. People like Storygraph and
they recommended it to others and readers know other readers.
And it started spreading by word of mouth.
And there's no VC or giant team.
It's just Nadia and Rob.
And they're making it work.
And since then, whenever I have any,
whenever we've had any scaling issues or problematic issues,
I always say to Rob,
okay, I have to remind myself when it was 18,000 and it was literally
at standstill and I didn't know what to do.
Nothing is as bad as that.
So we'll get through this.
Scaling a consumer social network like this, building it from scratch with your own bank
account and your own code, it gives you bragging rights.
It's a huge accomplishment.
But Nadia has trouble thinking of herself as an experienced developer. It's more I'm like, I'm just being
realistic. I did a boot camp five years ago, and I haven't been full time developing since then.
I've been doing all these other things. So I'm not as good as I could be. And there are a bunch
of other people who've been doing it focused for the last two decades so yeah I'm not the best
but whenever I sell tell Rob or Saron oh I'm not a tech pro they look nope you are like no we won't
don't want to hear it you're a tech pro so I guess I'm a tech pro. Yeah, well, because I think you took a Rails app to whatever,
like 40,000 people using it on some days or whatever.
I think if you wrote down your bullet points of your engineering achievements.
That's the thing.
If you write it down, I think that's the difference, right?
If you write it down, like running an app that, you know,
on the heaviest traffic days had like, what was it?
We had millions of page views, millions of unique visitors, right?
And it interacts with these systems and these APIs and uses all these different technologies.
It would look very accomplished.
But I think it's like I think of the behind the scenes, like what it looks like when I'm at my desk and the hours I spend googling and trying
things or when I take down the production app because I didn't think oh yeah you can't do that
Nadia you can't do a migration like that anymore like come on things like that which I feel feel
are rookie errors then that's the bit that I know that makes me say, yeah. But it's fine.
If I did ever need to get a job, I feel like hopefully not.
But if I ever did, yeah, I'll definitely be bringing myself up
and say, hey, I'm the best.
Look what I did, you know.
But between you and me, I definitely feel like behind the scenes, though,
it's not pretty.
I think it's hilarious.
I can imagine you interviewing for some job
at some place like that has a big like Rails infrastructure
and you're like, okay, so it says here,
you scaled the database to bazillion reads per second.
Like, you know, so how did you and your team tackle that?
And you're like, you mean Rob?
Like, what do you mean my team?
Like, yeah.
Oh, that is the big, that is the thing that makes me I guess one of the things that
makes me most proud right now because I run the Instagram and no one knows I've in the bio it says
it's run by the founder but no one really looks at that so no one knows they're talking to me
and I often get like oh congrats to your dev. Or can you pass this bug onto your dev team?
Or will you be able to help me with this issue?
If not, can you pass me onto someone?
And I'm like, well, I sure hope I can help you because I built it.
I don't say it like that, but that's how I think.
But there have been a couple of times where things have been worded in a way
where people know they're talking to me, but they assume I'm not the technical person.
And so depending, sometimes I will say, oh, no, it's me.
I'm the one that coded it because sometimes I'm like, you've assumed that I don't know anything about the technical side.
You know, you deserve a gold star or can I give you five star feedback?
And I'll just say like, I'm the founder.
There's no one. It's me.
So those are fun.
So Storygraph is killing it.
I keep forgetting to say the. It's the Storygraph.
It's almost up to a million users and it's growing.
And they now have a paid product.
So the company has very recently become profitable.
So I might be on the verge of getting my first paycheck
because we've also recently just re-architected a bunch of stuff.
And so we're saving a lot of money on that side of things
and also being more performant.
We've still got more work to do on that.
But combined with our growing number of subscribers, we're getting to the point, but we haven't reached it yet.
So need to start, you know, once we that side of things being sustainable and profitable long term so we can keep going.
And I feel like, yeah, once we get there, then I'll feel like, OK, and I want to make sure I keep pushing and pushing
until I get to the point where I feel like okay there is nothing glaringly
sub-excellent in the product. So like your story is obviously not over you have a lot of things
you still want to do but like what's what's the what kind of story is this? I think I think it
is a story of perseverance I needed to give myself the chance to fail, like when it was really hard. And I was like, what am I doing? Who do I think I am? Just me, a junior developer trying to build a Goodreads competitor. But then I just said to myself, well, if you think of the products
out there that are successful and the people that make it, one, the product are really good and
they're solving a need, but the founders have overcome difficult things or they've put in the
work. And if you stop, then you never will have the chance to see if this can be successful.
And so as long as there's a direction to go, then I'm going to keep following that direction and I'm going to keep being patient.
That's the other thing.
I think one of the most difficult things for me right now is I know the level of where I want the product to be.
But we have so many eyes on the product right now.
I mean, millions of eyes. And there's so many eyes on the product right now. I mean,
millions of eyes. And there's so much feedback that comes in all the time. And, you know, I'm
very receptive to feedback. We take it in. But it can be hard when people say things that either
you know is a shortcoming that you've been wanting to work on for ages, or it's almost pitched as if
didn't you think about this? Didn't you guys think about this? And it's like,
yes, we did. But, you know, one thing at a time. And so it's the patience of saying, even though
I know the product has to be this, this, this and look like this, and I have to do this kind
of research and that kind of research. We're a small team. We're going the bootstrapped indie
route. Things take time. I just have to be patient,
patient with our customers and patient with myself. And just know that as long as I keep
taking one step every day, eventually I'll get to where I need to be.
And then everything will be amazing. thanks to Nadia for sharing her story and check out the story graph the story graph.com
story graph plus is her paid program and because of that you know she'll soon be able to get a
paycheck and a big thank you to my wife Courtney Courtney is a mood reader who will read a history
book and a thriller book and a literary fiction book all at the same time.
She's the smartest person I know and the love of my life.
And she started using Storygraph recently to track her reading and pointed Nadia out to me.
So thank you, Courtney.
Also, if you want to hear more of my conversation with Nadia, please support the show.
On the 15th, Patreon supporters will get a new bonus episode featuring a continuation of me talking with Nadia, please support the show. On the 15th, Patreon supporters will get a new bonus episode
featuring a continuation of me talking with Nadia.
We're going to talk about how she did some of her user research in more depth,
how she built early versions of the product,
and how the product continues to grow.
Yeah, and that'll be the fifth Patreon episode I put out.
There's a bunch of them, and they're all really good.
There's a continued interview with Paul Ludus,
the guy behind Apple Writer.
I have a chat with Joey Hess about Debian
and other things he's built.
I talk with Andreas Kling
about how he inspires people to join his project.
And now this episode with Nadia.
So hopefully it's a great value.
I gotta be honest, I feel a little bit weird
trying to sell the Patreon donations, but I really do appreciate that.
So for everyone already supporting me, thank you so much.
And until next time, thank you so much for listening.