The article touches on organizing code which has an interesting aside for me.
When I work on side projects, I certainly encounter periods of boredom or disengagement. What can help is to say something like "you know what... I am just going to rewrite this and make it much cleaner". Only feature parity. Not trying to force anything new or trick myself into solving a hard problem right now.
Sometimes this simple cleanup pass will turn into several hours of deep exploration and development. Sometimes not.
I think of this similar to intense physical exercise. No one in their right mind goes to the gym and deadlifts their 1 rep max without at least a tiny amount of warmup beforehand.
If you are on this path and trying to build a real thing that people might actually want to pay for (or is at least compelling enough to work on for free), you are dealing with a similar mental barrier. Warm yourself up on smaller, more approachable tasks if you are finding trouble with motivation. Rerun a successful prototype from last year to remember why you are still doing all of this in the first place.
Also, if you aren't using source control for your side projects, you really need to get into the rythym. Every personal project I have worked on since ~2017 has a repository tracking it in Github. It takes me 10 seconds to find that clever chunk of code from a few years ago using their global search feature. Little tricks like this keep me from spiraling into distracted nothingness. If I had to manually browse through folders in my filesystem or dropbox, I'd never touch this stuff again.
I feel this too, and I've learned to accept that this is just the way my brain works. Once I've lost my motivation for a certain project there's really no point trying to force it back, and besides, this isn't such a bad thing. The whole point of a side project is that I can work on what I want, even if that means doing something new every 4-6 weeks.
I create a "project" in my to-do list app for each side project, and dump every little idea I have in there while I'm excited and switched on about the idea. When my motivation ebbs and eventually returns (months or years later), I have a low-friction starting point to jump back in, which makes all the difference.
Jumping into a months-old codebase _and_ having to figure out what to build next usually means I feel a bit discouraged and never really get back to that project.
I wish there was more content like this - "making hundreds (not thousands) of $ in MRR after y years".
Give a dose of realism and pinpoint the second benefit — the skillset that is truly unique and worth it.
You no longer care about an isolated Jira ticket. You see a thread from vision to execution. As a dev, you start to value other parts of the company and build better bridges/interfaces between teams.
As someone said, building something on your own feels like staring into the abyss and eating glass. Be aware, it's not for everyone and can cost you — not only $$$ but relationships and health.
And that is even if you are passionate about the thing.
Having started a side project in 2018 myself (now in low $$$$ MRR), I can attest that passion is key — because it's what you would do in your free time anyway.
I've bootstrapped a side project before (in the B2B security space) which was later acquired. I had a _lot_ of ups and downs, but the "up" that consistently outweighed the downs was getting a new user and seeing them convert from free/trial to paid. There is something incredibly tangible and rewarding about seeing MRR increase.
Because of this, I approach side projects from the perspective of getting to revenue as quickly as possible, as opposed to, for example, hacking away at something just for fun or learning something new. Those are entirely valid reasons to start side projects, but I personally don't get the same motivation from them and have found myself quickly getting bored.
My personal preference is to focus on SMB/mid-size B2B SaaS with the goal of eventually replacing full-time job income. For me, consumer SaaS is too small - you're making $5-$20/month/user and therefore need 100s or 1000s of users to reach that goal. Enterprise SaaS is too difficult for a side project (sales cycles are too long/complex). Most mid-size companies are willing to pay a few hundred/month for a good service. As an example, if I can charge $300/month, I only need 50 customers to generate the equivalent income of a decent-paying tech job. The challenge, of course, is finding an idea that meets those requirements!
I don't have any business side projects or anything that earns money but my motivation fluctuates like the author of this article.
I am super grateful for Python, Java, JavaScript, C, Rust, Flask, Firefox, Google Chrome, the Java Virtual Machine, Google's V8 engine, GCC, Postgresql, Clang and other open source projects. They allow me to write software and get paid money in jobs. And they're completely free. So good.
People like choosing what they work on and what they spend their time on. But there's business necessity that means we often need to do tasks we secretly don't want to do. Or feel forced to work on technology we don't agree with.
I think it is unfortunate that amazing products go the financial path and then lose their energy and become monetisation over quality or passion such as Heroku But I said that we cannot force people to work on things we want them to.
I feel we need to determine the properties of a product that guarantee monetisation AND quality and passion of its developers.
I have several side projects. While I contribute to the ups and downs, the usual dagger that grinds things to a halt is hitting some bug in an open source library or language that I don't have the ability, expertise, what have you to fix. Inevitably, the library is maintained by one person who is minimally active, despite being used by tons of people, and so I just get stuck. Software is a very frustrating endeavor. Not complaining about people's time, just the fragility of the tower of stuff software stands upon.
You made the tower yourself, no? Not to sound snarky but by making sure that (1) you do not lock yourself into any dependency and (2) you keep the use of dependencies to a minimal you do prevent most of that pain? At least that is my opinion. As a temporary workaround (sometimes permanent) I opt for a fork, which when kept to the bare minimum is usually not more then a minor annoyance.
What "stack" are you using for your personal projects that is both widely used but so poorly supported that a bug crops up that prevents you from forward progress? I am genuinely curious about this because I can say that I have never had that experience with something that is popular. Then again, I am an extreme minimalist when it comes to introducing 3rd party dependencies into the code that I write.
I am oldish now.
Reading through the comment threads
I dont think my opinion is popular here today
but I feel sad when people spend so much focus on
making money and to make big money as an outcome.
There are millions of people out there who have
to hustle every miniute of their lives to feed
their family, have some shelter and if they are
lucky some minior access to healthcare.
Each day is a make it or break it moment.
Most programmers and other in the tech space get paid a
lot of money in their day jobs.
A lot of money compared to most professions.
That is a huge win.
Almost like being minor royalty.
If you are so lucky.
You can put food in the fridge, pay rent,
get around, eat out some, healthcare
(A much bigger problem in the US, than other western nations true)
You have been blessed even though you did not deserve it
and you might not believe it.
Slow down.
Try to enjoy life outside of money and
outside scheming to make money.
and outside of tech.
Greed is not a good raison d’être.
Hundreds of thousands of people will make more money than you.
They will have better toys, bigger cars, nicer apartments,
bigger wealth.
Humans look up.
My boss has a brand new Tesla, he has a nice house.
Bossman look up to a neighbor who has a huge house and 2 Porches.
Neighbor looks up to his cousin wh ....... [1]
Fuck that.
If you look down, you can see how bloody fortunate you are.
Be a bit more humble. A bit more grateful, and try to enjoy
where you are now.
[1]
These are examples from my era.
People may have different status symbols they look at.
Maybe you dont want a car, and you get dont care what others have
there will be different status symbols you look up at.
It took me roughly 2 years to find "success" with my side-project / micro-saas: users using my product on a daily basis.
I've found that the hardest part is the "post-launch" / "first-user" phase, where one needs to have the fire / resilience to keep building / marketing without (what it feels) anyone caring.
Once the first users (and feedback) start coming in, it becomes much easier to keep shipping.
The motivation behind my side projects has been mostly having an entertaining outlet for learning new things. One of these is https://yare.io that taught me plenty about building something end-to-end. From concept, design, front end, back end and failed marketing efforts. Despite 0 revenue, the experience itself is greatly rewarding.
>The thing is, as a coder, you will be more attracted by generic product. Generalizing is more elegant, and if, like me, you like to solve problems, you will want to try to figure out a bigger problem than your initial scope.
This is a major issue with my side project (https://www.Didgets.com) which is a general-purpose data management system. It started off as a 'file system replacement' where you could use it to store tens or hundreds of millions of files; put tags on each of them; and then do lightning fast searches to find subsets of them.
I discovered that the tags I invented could also be used as columns in a columnar database table. So I went off inventing a way to build fast relational tables that were good for both transactions and analytics. I also discovered that the system can be used to build logging frameworks, indexing services, configuration management, and backup mechanisms.
The problem is that I don't have the resources to fully build out each feature set, so it does a dozen things (some of them really well) but none of them are a finely tuned, polished product yet.
I know from lots of past experiences that I have about 6 weeks of attention before something else shows up and gets me excited. All my side projects get scoped to 6 weeks or I don’t do them.
This is my experience as well. Though, whenever I care about documentation and stuff like that, I'm usually able to return after half a year and can continue.
I really appreciate reading this, i lay in bed this morning feeling all the doubts the author is experiencing. I’ve spent about 3 months on a new product, i spent all day yesterday trying to figure out how to sell it effectively. I met with sales reps i worked with in the past, wrote really thoughtful messages to prospects…No one has bitten yet.
I’ve been here before, this is certainly not my first startup, but man it hurts still. I feel like I’m missing something, despite all my efforts, I’m just not there yet and i need to step back and try figure out the missing pieces before i burn too much time.
> I’ve spent about 3 months on a new product, i spent all day yesterday trying to figure out how to sell it effectively.
If it's one thing I've learned from following bootstrappers and trying to start my own SaaS - it's that you should spend 3 months selling and 1 day building.
It's not mentioned here but one of the biggest mistake experienced hires make on side projects is throwing out all the project planning that would normally be done if it was anyone else's project. Honestly, if you can't draw a stick 'n' box flow of what you'll build, you are, to put it mildly, highly unlikely to build it.
I could explain this as I was there many times - planning is not fun for a creator in passion.
The fun is to code some clever software solution and make it to work and show to friends or just keep for own pleasure, then boring stuff starts: user accounts, payments, maintenance, human contact, complaints, and here 99% of projects fail.
I appreciate many of the comments here. I don’t feel alone.
I’ve been working on something for a couple years (off and on) and some days/weeks/months my motivation takes a nose dive to the point where I stop work completely. Eventually I get back into it but one of these days, I might drop it completely.
I wonder how the operational burden for a side project is.
One of my key worries is that if I sell my side project to real users, I have to patch it, I have to monitor it, I have to answer support messages and fix it if it breaks for whatever reason.
I'm always curious as to how side projects that are so niche and targeted acquire users. I would like to ask the author how much time and effort he has dedicated to marketing and what he learnt from it.
This may be the hardest part, especially for technical founders. I was able to bootstrap a profitable subscription based service. In hindsight most credit should go to my wife for getting in the first users by engaging family, social media, forum posts and what not. Another major factor were my subscribers, who write site content on a daily basis, this generated a ton of organic traffic to my site and made a big difference vs having to write a couple of static SEO optimized pages and hope for the best. Writing the actual code was probably the least important part (but the most fun for sure)
The easiest way is to build something for an existing community where you are not disallowed from promoting your own stuff. Ideally you need a way to talk to a lot of target users without having to pay money on advertising.
As for ones that manage to gain users without latching onto an existing community, I'm wondering as well. Perhaps good SEO or searchable content generation?
Exactly that. Well written. We all share the same situation, the winner is, tough, the one who can overcome all this issues, or at least be better at them than others.
I've found perhaps the biggest obstacle to working on my side project is something like lacking vision. If I have an idea, it's never hard to implement. Usually it works, sometimes it doesn't but at least shit gets done. The larger the project has gotten, the more planning it needs, and that's I've historically struggled with. Sometimes I don't quite know what to do next, so I sort of fuss with the code and don't really make meaningful changes. Always gets me in a bit of a funk.
I don't think it's so much about motivation as having a structure to your work that allows you to get shit done. I think motivation follows hard work and seeing results, it rarely precedes it. Attention from the press or social media or stuff like that can also briefly be motivating, but it wanes very quickly and is not very reliable.
It's helped to make notes of my ideas as they come. I have literally a wall of post-its that say something like "LSH", or "middle platonism is processed weirdly", or "34 bit URL ids" or "refactor query variants ASAP". It's not prioritized like a backlog, but just a jumble of ideas I've had about what to do next while working on something. It's been pretty helpful to essentially have a work pool to pull tasks from.
My project naturally has 2 month "iterations" because that's how often I do a new crawl and load crawl data, which permits breaking changes in the underlying data structure. So I'll just pull improvements from my wall and try to distribute the work evenly so it progresses in a meaningful sense.
> My project naturally has 2 month "iterations" because that's how often I do a new crawl and load crawl data
I have a similar project type and timeline, and going through one of these iterations now. Could you share how you persist your data in between iterations?
For mine, these were some of the bigger iterations that were spaced out over several months:
1. I started out by writing raw http API responses to python pickle files. Scraping via api.
2. Then wrote some analysis logic in python that read the pickle files, and outputted to a csv that I could use for analysis in spreadsheets.
3. Scaled up to a couple orders of magnitude more data size, and multiple datasets. Added logic to bulk output any dataset to flattened CSV, then bulk import the CSV's to sqlite tables.
For each of those I had to rethink the code, simplify it, and make some parts generic where there was a common need.
I think my next big push will be loading new data to SQLite incrementally, and figuring out how and where to persist the SQLite data cheaply. Right now it's local but too big to check into a GitHub repo.
bob1029|3 years ago
When I work on side projects, I certainly encounter periods of boredom or disengagement. What can help is to say something like "you know what... I am just going to rewrite this and make it much cleaner". Only feature parity. Not trying to force anything new or trick myself into solving a hard problem right now.
Sometimes this simple cleanup pass will turn into several hours of deep exploration and development. Sometimes not.
I think of this similar to intense physical exercise. No one in their right mind goes to the gym and deadlifts their 1 rep max without at least a tiny amount of warmup beforehand.
If you are on this path and trying to build a real thing that people might actually want to pay for (or is at least compelling enough to work on for free), you are dealing with a similar mental barrier. Warm yourself up on smaller, more approachable tasks if you are finding trouble with motivation. Rerun a successful prototype from last year to remember why you are still doing all of this in the first place.
Also, if you aren't using source control for your side projects, you really need to get into the rythym. Every personal project I have worked on since ~2017 has a repository tracking it in Github. It takes me 10 seconds to find that clever chunk of code from a few years ago using their global search feature. Little tricks like this keep me from spiraling into distracted nothingness. If I had to manually browse through folders in my filesystem or dropbox, I'd never touch this stuff again.
tta|3 years ago
I create a "project" in my to-do list app for each side project, and dump every little idea I have in there while I'm excited and switched on about the idea. When my motivation ebbs and eventually returns (months or years later), I have a low-friction starting point to jump back in, which makes all the difference.
Jumping into a months-old codebase _and_ having to figure out what to build next usually means I feel a bit discouraged and never really get back to that project.
idearoots|3 years ago
Give a dose of realism and pinpoint the second benefit — the skillset that is truly unique and worth it.
You no longer care about an isolated Jira ticket. You see a thread from vision to execution. As a dev, you start to value other parts of the company and build better bridges/interfaces between teams.
As someone said, building something on your own feels like staring into the abyss and eating glass. Be aware, it's not for everyone and can cost you — not only $$$ but relationships and health.
And that is even if you are passionate about the thing.
It reminds me of Steve Jobs's thoughts on this https://www.youtube.com/watch?v=PznJqxon4zE&ab_channel=coach...
Having started a side project in 2018 myself (now in low $$$$ MRR), I can attest that passion is key — because it's what you would do in your free time anyway.
thundergolfer|3 years ago
Does this mean low thousands?
cddotdotslash|3 years ago
Because of this, I approach side projects from the perspective of getting to revenue as quickly as possible, as opposed to, for example, hacking away at something just for fun or learning something new. Those are entirely valid reasons to start side projects, but I personally don't get the same motivation from them and have found myself quickly getting bored.
My personal preference is to focus on SMB/mid-size B2B SaaS with the goal of eventually replacing full-time job income. For me, consumer SaaS is too small - you're making $5-$20/month/user and therefore need 100s or 1000s of users to reach that goal. Enterprise SaaS is too difficult for a side project (sales cycles are too long/complex). Most mid-size companies are willing to pay a few hundred/month for a good service. As an example, if I can charge $300/month, I only need 50 customers to generate the equivalent income of a decent-paying tech job. The challenge, of course, is finding an idea that meets those requirements!
unknown|3 years ago
[deleted]
samsquire|3 years ago
I am super grateful for Python, Java, JavaScript, C, Rust, Flask, Firefox, Google Chrome, the Java Virtual Machine, Google's V8 engine, GCC, Postgresql, Clang and other open source projects. They allow me to write software and get paid money in jobs. And they're completely free. So good.
People like choosing what they work on and what they spend their time on. But there's business necessity that means we often need to do tasks we secretly don't want to do. Or feel forced to work on technology we don't agree with.
I think it is unfortunate that amazing products go the financial path and then lose their energy and become monetisation over quality or passion such as Heroku But I said that we cannot force people to work on things we want them to.
I feel we need to determine the properties of a product that guarantee monetisation AND quality and passion of its developers.
Are Jetbrains the example of this?
bmitc|3 years ago
gdcbe|3 years ago
That’s at least my experience…
imhoguy|3 years ago
1) fork and fix, submit PR and use my fork until PR is not merged, if ever;
2) find replacement;
3) remove it and find workaround to implement the user feature in other way;
4) just completely abandon the feature.
flippinburgers|3 years ago
ThinkBeat|3 years ago
There are millions of people out there who have to hustle every miniute of their lives to feed their family, have some shelter and if they are lucky some minior access to healthcare. Each day is a make it or break it moment.
Most programmers and other in the tech space get paid a lot of money in their day jobs. A lot of money compared to most professions. That is a huge win. Almost like being minor royalty.
If you are so lucky. You can put food in the fridge, pay rent, get around, eat out some, healthcare (A much bigger problem in the US, than other western nations true)
You have been blessed even though you did not deserve it and you might not believe it.
Slow down. Try to enjoy life outside of money and outside scheming to make money. and outside of tech. Greed is not a good raison d’être.
Hundreds of thousands of people will make more money than you. They will have better toys, bigger cars, nicer apartments, bigger wealth.
Humans look up.
My boss has a brand new Tesla, he has a nice house. Bossman look up to a neighbor who has a huge house and 2 Porches. Neighbor looks up to his cousin wh ....... [1]
Fuck that.
If you look down, you can see how bloody fortunate you are. Be a bit more humble. A bit more grateful, and try to enjoy where you are now.
[1] These are examples from my era. People may have different status symbols they look at. Maybe you dont want a car, and you get dont care what others have there will be different status symbols you look up at.
nip|3 years ago
I've found that the hardest part is the "post-launch" / "first-user" phase, where one needs to have the fire / resilience to keep building / marketing without (what it feels) anyone caring.
Once the first users (and feedback) start coming in, it becomes much easier to keep shipping.
sum1ren|3 years ago
Going to try a little longer this time.
levmiseri|3 years ago
didgetmaster|3 years ago
This is a major issue with my side project (https://www.Didgets.com) which is a general-purpose data management system. It started off as a 'file system replacement' where you could use it to store tens or hundreds of millions of files; put tags on each of them; and then do lightning fast searches to find subsets of them.
I discovered that the tags I invented could also be used as columns in a columnar database table. So I went off inventing a way to build fast relational tables that were good for both transactions and analytics. I also discovered that the system can be used to build logging frameworks, indexing services, configuration management, and backup mechanisms.
The problem is that I don't have the resources to fully build out each feature set, so it does a dozen things (some of them really well) but none of them are a finely tuned, polished product yet.
chasd00|3 years ago
TobTobXX|3 years ago
verelo|3 years ago
I’ve been here before, this is certainly not my first startup, but man it hurts still. I feel like I’m missing something, despite all my efforts, I’m just not there yet and i need to step back and try figure out the missing pieces before i burn too much time.
It’ll be ok, but until it is ok, it’s exhausting.
brtkdotse|3 years ago
If it's one thing I've learned from following bootstrappers and trying to start my own SaaS - it's that you should spend 3 months selling and 1 day building.
SuoDuanDao|3 years ago
moneywoes|3 years ago
unknown|3 years ago
[deleted]
rozenmd|3 years ago
OnlineOrNot was my 6th project, first to break even.
revel|3 years ago
imhoguy|3 years ago
The fun is to code some clever software solution and make it to work and show to friends or just keep for own pleasure, then boring stuff starts: user accounts, payments, maintenance, human contact, complaints, and here 99% of projects fail.
me_smith|3 years ago
I’ve been working on something for a couple years (off and on) and some days/weeks/months my motivation takes a nose dive to the point where I stop work completely. Eventually I get back into it but one of these days, I might drop it completely.
vstollen|3 years ago
One of my key worries is that if I sell my side project to real users, I have to patch it, I have to monitor it, I have to answer support messages and fix it if it breaks for whatever reason.
vare2|3 years ago
nov21b|3 years ago
xyzzy4747|3 years ago
As for ones that manage to gain users without latching onto an existing community, I'm wondering as well. Perhaps good SEO or searchable content generation?
sasha_fishter|3 years ago
inezk|3 years ago
marginalia_nu|3 years ago
I don't think it's so much about motivation as having a structure to your work that allows you to get shit done. I think motivation follows hard work and seeing results, it rarely precedes it. Attention from the press or social media or stuff like that can also briefly be motivating, but it wanes very quickly and is not very reliable.
It's helped to make notes of my ideas as they come. I have literally a wall of post-its that say something like "LSH", or "middle platonism is processed weirdly", or "34 bit URL ids" or "refactor query variants ASAP". It's not prioritized like a backlog, but just a jumble of ideas I've had about what to do next while working on something. It's been pretty helpful to essentially have a work pool to pull tasks from.
My project naturally has 2 month "iterations" because that's how often I do a new crawl and load crawl data, which permits breaking changes in the underlying data structure. So I'll just pull improvements from my wall and try to distribute the work evenly so it progresses in a meaningful sense.
di456|3 years ago
I have a similar project type and timeline, and going through one of these iterations now. Could you share how you persist your data in between iterations?
For mine, these were some of the bigger iterations that were spaced out over several months:
1. I started out by writing raw http API responses to python pickle files. Scraping via api.
2. Then wrote some analysis logic in python that read the pickle files, and outputted to a csv that I could use for analysis in spreadsheets.
3. Scaled up to a couple orders of magnitude more data size, and multiple datasets. Added logic to bulk output any dataset to flattened CSV, then bulk import the CSV's to sqlite tables.
For each of those I had to rethink the code, simplify it, and make some parts generic where there was a common need.
I think my next big push will be loading new data to SQLite incrementally, and figuring out how and where to persist the SQLite data cheaply. Right now it's local but too big to check into a GitHub repo.
calltrak|3 years ago
[deleted]