Back a few years ago when I first started dabbling in side projects and wanted to grow some side income, I found the greatest motivator was wanting to get out of my day job (which I hated). I wasn’t organized and in retrospect nothing was well thought out, but the need to survive and the desire to escape was enough.
Like a world-changing pandemic and riots? I'll be honest, it is getting hard to focus on building my cute little software bullshit project when a voice in the back of my head is telling me to spend my time prepping for social collapse.
I wanted to comment on this since I've been through many disruptions.
During the dot-bomb implosion in 2000, most people threw their hands-up. Even VCs threw in the towel and moved from Calif. to southern states with no state income tax. (The metaphor was, "they're rolling up the sidewalks in Palo Alto.)
To this day, business people look at the start date of some of my projects and say things like, "Wow, you started a project in 2000?" Then they go mum since they realize what a silly thing that was to say.
Business and life are cyclical. Since it takes 7-10 years for a startup to mature, the passing of crises has very little effect in the early stages of a startup.
Now is the perfect time to do a startup or project.
UFO means Unidentified Flying Object. The word "unidentified" doesn't fit well with the word "confirmed".
US navy has seen flying objects which it has not identified. I would be more surprised if they could identify all the objects they have ever seen flying. I often have trouble identifying certain objects which aren't even flying!
Factor out smaller projects. Try to break up the next step if there is no progress for a while. Separate task definition, implementation and testing into separate steps. If the last project got stuck, try something with a smaller scope.
I find that the best way for me to finish a side project (for some definition of "finish") is to work on something that I want to use. Sometimes my motivation will flag for a few months until I want to use it; then the motivation kicks in and I'm productive while I improve/fix the project to make it work better for me.
It especially helps motivate learning new tools. I find that if I want to learn a new tool, I look for something I'd want to do with it and use that to drive the project.
Relatedly, it’s about working on something that will be useful quickly and you can polish after you’re already using it every day.
E.g. I got really fed up with how clunky the AWS assume-role workflow was at work with multiple AWS accounts so I wrote a little tool using Lispworks’s CAPI for a GUI that would handle authentication and embed a webkit browser so I could control the cookies more precisely. I got an MVP that improved my workflow working in a weekend and I’ve been iterating on it over the last several months. I find this sort of process works much better than spending months working on something that I may eventually use.
It’s a matter of picking slow-changing technologies: so, not the latest JS framework or whatever, but something like Clojure or Common Lisp that has a track record of maintaining backwards compatibility. And then learn to solve problems in ways that can easily be adapted to solve related problems.
Are you signing in with AWS users or STS AssumeRole? My company does the latter: there’s a user management account and then each project gets their own account. To access a particular account, we have to use a user in the user-management account to assume a role in the account we want to access. This makes the AWS CLI tooling annoying and it also makes the AWS console annoying to access: you have to generate a sign-in link programmatically and use that link in the browser to sign in. However, if you’re already signed into an account, this pops up a page that says “you’re already signed in, please click here to log out before switching accounts”. Then you have to logout and regenerate the link before you can access the account you want.
My solution was an app with a minimal embedded webkit browser, so that I can programmatically clear the cookies every time I login to a new account: that way, the sign-in link works first try. Since then, it’s grown the ability to list Cloudformation stacks and their parameters and outputs.
Yes, this a thousand times. I couldn't find the right way to articulate but you did the job.
I'm sure many of us want beauty, conciseness, and every other quality in our writings but it's 99% of the time a neverending rabbithole.
On side projects a little bit of quick'n'dirty is extremely valuable to progress in assembling the bits of a system and see it operate for real.
It's a hard balance because no one wants to come back and fix things later but the fact that you walked forward into building the system means you have more concrete knowledge of what is required and this will make it a lot more clearer and motivating to adjust and fix the previous modules.
There's also a different kind of pleasure involved. I can be proud of super clean code in a project that is never done.. but the feeling of having finished a tool that is actually useful is so much nicer. And it makes you want to keep doing it this way.
I often get into side projects that start from "it would be cool if this exists", but, if I actually think about it, I have no interest in them beyond yeeting them off into this vague coolness.
This is probably the best way to keep "motivation" up... and why I don't even start side projects. All of my "itches" can be scratched with existing products.
The problem with this, for me, is that almost anything I want to do can either be accomplished with existing tools or is too complex for a doable side project.
I used to feel the same but in the last year I got sick of saying, "that sounds too big" and just started hacking. By focusing on small bits at a time I've been surprised at how far I've gotten. I'd encourage you reevaluate what's too complex. You might surprise yourself.
Funny, I usually go in the other direction. I'll find something to automate and I'll think, "That sounds buildable in a weekend," before realizing after the weekend that it would actually be a multi-week, sometimes multi-month effort.
Yeah! This is also the same advice I discovered for open source contributions. Browsing for a cool-looking project on GitHub is nowhere near as motivating as a breaking bug as you start working with a library, haha.
This comment really speaks to me as someone who just got a software project into a minimum-viable state after two years of this exact kind of off-and-on burst programming. I threw away several prototype approaches in that time and am left with something that should serve my needs for a long time without significant maintenance investment. It's nowhere near the most complicated thing I've ever written but is easily the thing I'm proudest of. I used to feel a lot more like the OP author, have only recently experienced what you describe, and really hope I can channel and maintain this as a way to avoid burnout and demotivation.
From my personal experience, it took me years of discipline to build up the skillset to finish a project. It took me years to be able to learn what I can do and what I can't do given a specific timeline and be able to set tangible and achievable goals and focus on that to complete them. (And tangentially, if you ever want to offload your side project, here's a place to submit if you like :) https://www.sideprojectors.com)
For me it was learning to limit the scope of the projects, each time making it smaller until I planned projects small enough that I could finish them in under 3 months.
My solution is probably bad advice, but I found effective to commit either financially or to someone so I have to do it, I put myself in a position where I don't a way out other than deliver.
At least for myself, I found it detrimental to set milestones that were based in features. The main reason was I'd rush to finish a feature, get all excited about shipping it in "only 1 week!", then tell myself I deserved a week off. That week turns into a month, then you lose mental context.
What I found key was making it a habit to work on it. Side projects, especially solo ones, take a long time to complete. If working just a little on one is part of your daily habit, you'll have ongoing steady progress that won't come with burnout.
Ironic, considering that his new Netflix special is mostly material he's been doing for years, but this does sound kind of cool:
> He told me to get a big wall calendar that has a whole year on one page and hang it on a prominent wall. The next step was to get a big red magic marker. He said for each day that I do my task of writing, I get to put a big red X over that day. "After a few days you'll have a chain. Just keep at it and the chain will grow longer every day. You'll like seeing that chain, especially when you get a few weeks under your belt. Your only job next is to not break the chain."
Sounds like the visual commit history on github, now that I think of it. My side project is on a local git, and that's the only thing I miss - the calendar.
Seinfeld denies it: "This is hilarious to me, that somehow I am getting credit for making an X on a calendar with the Seinfeld productivity program. It's the dumbest non-idea that was not mine, but somehow I'm getting credit for it." - https://www.reddit.com/r/IAmA/comments/1ujvrg/jerry_seinfeld...
I've found myself stuck in that endless cycle for years. I find myself highly motivated for the first few weeks, thinking about a future where I can work on this full time.
As the project shapes up, I lose interest and start to doubt my idea, wondering why people would ever pay for this. Eventually I work on it less and less until one day I decide to not work on it anymore.
It sounds like working on something full time is what motivates you.
To get people to pay for anything is usually a different side project. If you can't see the path to profit no one probably will pay. Find people who will pay and use that as motivation and product guidance.
I've found the #1 trick to finishing a side project is to build it out in the open by writing a blog (or podcast) about it and building up an audience who are interested in seeing you finish it as you go along.
It also gives you an in built audience to launch with who will use it - rather than launching to a loud thud of silence - which sucks and feels like the long dark night of the soul.
Then you’ll just have a bunch of indie hackers following you. Not the actual customers?
Real customers only care about your journey in hindsight. People want to know how Apple etc started, not many will care for journey of a new tech until it’s released.
That's exactly the reason why the indiehackers website is going circles publishing products which are used within their own audience. If you are building something not targeting this demographic, that's not going to help you get more customers.
You have to click a second time on the revenue for their sort to work but that's clearly what I had in mind when I was saying this.
A lot of the highest revenue products (with a few exceptions of course, I'm not saying it's only that) on this website from this list are SAAS targeted at the startup world.
This was exactly my experience with my last side project, the standard PH, HN, indie hackers channels didn't work at all but niche subreddit communities worked really well. I now write updates about my progress in my projects own subreddit which has it's own followers.
The question seems to be how to keep your project top of mind. Once you're forced to stop working on your project, the context file this post mentions acts like a save point to return your project to top of mind.
I'm sure there are other similar hacks. Maybe review your context file before showering each day?
Splitting into small chunks is the biggest (ironic) help for me honestly. With kids now, I only have a half hour or so every few weeks I can work on something so I try to make it a nice achievable task I can actually accomplish! Otherwise I seem to just pick up a movie or just read online...
I used to have trouble doing the work. But when I got honest with myself, I had a very specific problem that was preventing me from doing the work. Once I fixed my problem, I was able to do the work. My side project pays salaries now. "Everyone has at least one big thing that stands in the way of their success; find yours and deal with it" Ray Dalio
I have been working on NearBeach for nearly 4 years. I have always done it in small steps.
- Implement projects functionality
- Implement customer/organisation functionality
- Implement tasks
- etc.
I find this helps me keep myself motivated. That and I couple it with a set goal - a very achievable goal.
Currently NearBeach is a minimal viable product currently going through a UI/UX and backend refactoring, with the goal of improving UI/UX and backend readability of the code.
Someone once told me: don't talk about your idea to others until you're done building it and have something to show (at least an MVP). Surprising how motivating this was for me to finish my projects even if they're not perfect.
That way you don't mentally feel like you're accomplishing things by just texting the idea around. The discussion bloats your senses and conflates self-reassurance with getting things done.
And secondly, sometimes its easier to communicate an idea by building it than to try to use words to describe your intangible hallucinations. Translation from your head to words to someone else's head is pretty lossy (esp on things like Twitter, though I do think its a great creative exercise)
They say the difference between a vision and a hallucination is that other ppl can see a vision (h/t Ben Horowitz). But no matter what, everyone can see cold hard product.
Totally agree. When you explain your idea, you "live" in it, giving you a false sense as if future is already here and you achieved what you want. You get your portion of positive emotions without doing any work, so every next idea you do more talking and less walking.
Don't do it, keep it to yourself until there is something tangible to show.
+1 vote for creating a different system login. This cleaned up my dev environment as I experimented with new tools, and decluttered my brain when I context switch. Not to mention every time I login I am guilted when I choose a different profile to login with.
and if you don't want to go that extreme, just using a different virtual desktop can work wonders.
Ironically one of my todos is to hack my xfce to swap out panels (and maybe somehow browser profiles?) when changing to certain named workspaces. So I could have my 'coding' workspace with a panel of work-only applications ready to go, only work-related bookmarks in the browser, etc.
The idea of logging out and in as another user seems to have just a bit too much friction for my tastes, but maybe I should just embrace it.
One brainhack I like to use on myself is to think of them as "Side Quests!" rather than "Side Projects."
My main quest is my day-to-day life. When I'm feeling bored, bogged down, and tired of the daily grind -- I head out in search of a side quest.
A side quest can be easy (1 hour), or hard (14 days). But the goal of a side quest is to distract me from my daily grind, and help keep me learning and motivated.
While this difference in perspective is subtle, I feel like it's enough to give me the headspace to stay more deeply engaged with interesting topics I'm trying to learn or understand.
Also noteworthy: for me it feels like any time a "side project" turns into a "side hustle" -- the ideas usually fizzle out very quickly.
Sometimes it's worth remembering that side projects can be "just for fun", and it's okay if you're going to spend a few dollars on it. The value can come from the learning process, and creative input/output generated.
I started a lot of side projects like many and didn't finish most. For me the secret of finishing a side project was to start a small one, something that I can finish within a weekend or even less, a few hours.
My completed side projects have been the one that took me less than a week. Some of them was less than 100 lines of code.
If you need to go to a café and create a new user for each new side project, you’re not gonna work a lot. I understand needing separate contexts for separate projects but this seems like overkill. The context is in your mind, not your environment.
I have my share of past and ongoing side projects, including hobby websites [1], funny tutorials [2], an ebook [2], coding references [4] and a CSS framework [5].
Like the blog says, the motivation is always here at the start. It’s the second part, when this motivation fades, that is hard. What you need is discipline. I work from home so discipline is key, even in my professional work. How you acquire it is through time management: you need to dedicate time to a project. I do this through predefined 2-hour slots each day or week where I have to work on a project. That way I don’t have an endless timeframe in my kind (because endless would mean “this is never be finished”) and provides me a repeatable and reproducible pattern. And by scheduling it in advance, it provides me with a plan to look forward too, and not end up sitting in front of my computer during a break and asking myself “What should I do now?”.
Great that works for you, but your argument sounds akin to asking why someone couldn't score high on the exam when you did. Different people, different motivations. I relate more to the OP than you. Just saying "be disciplined" doesn't help. This isn't the army, it's a voluntary side project I want to do when I can be watching Netflix.
To refame that comment a bit: almost every single resource you find on motivation will mention that motivation is not a matter of passion, it's a matter of discipline.
In every hobby there is always a sense of discipline, it's just usually implicit. For myself: composing orchestral scores started off as a fun little "oh this melody would sound neat". Ever since then, there have been times when I need to sit down and do some "real work" to turn that idea into an enjoyable, fulfilling result. Could I have just wrote things when I want to? Of course. But now, after years of composing, I have the skill to make things that sound great when I really just threw it together.
In software engineering, a beginner or even intermediate programmer is going to lose a lot of their initial motivation to build their idea (game, app, website) -- because in finding the skill to execute on their initial side project idea, they realize they need to develop that skill from scratch, which takes work.
I think there's a good balance between investing skills between "basic knowledge" and "career capital". What that balance is varies from person to person, but I also believe that no matter what, even if it's implied, there is always a certain amount of work that needs to be put in.
Nope. Almost every single resource you find on motivation will mention that motivation is not a matter of passion, it's a matter of habit. Discipline and motivation is pretty much the same in this context, and wears off easily.
I don’t think it’s fair to believe I’m just saying “Be disciplined” when I explain how to manage your time.
I do watch Netflix too. But it’s time boxed during the day, the same way working on projects is. And in a day, I don’t work more than 6 hours. I’m always done by 6pm and can do anything in the evening. The key is to manage your time during the day and stick to a plan.
As a matter of fact, OP’s rules feel more like the army to me: having a different user or even laptop for a project, going to a different location, blocking websites like reddit… These are harder restrictions. If I really want to quit a project, I always can. I just need to close my code editor and my terminal. But in my mindset I don’t want to. Because the project is not a burden like the army: it’s 2-hour slots where I’m focused, not overwhelmed, and I know there’s an end to it.
The door to leave is always open but I don’t want to take it. It’s different.
People like me and OP can't do what you say, which is just timebox things. I suppose we are not disciplined that way. I know how important exercise is, but I still cannot bring myself to work out every day or even every week. The only solution that works for me at least somewhat sometimes is to throw money at it or put external methods of forcing me to do the thing I actually want to do long-term. As a matter of fact, I go a step ahead of OP and have a separate laptop for personal projects. It's crappy and can't do much other than ssh so it's perfect. I suppose as long as one finds a system it's okay?
Perhaps if I get electroshock therapy and/or go to an ashram and meditate I might get more internal self-control, but I'm 32, and can't be bothered with it. Thats partly because I'm also not convinced it's that important that I become disciplined: sometimes being lazy feels good and maybe it's a part of what makes me who I am. I'm not self-sabotagingly lazy (except in exercise which I need to work on), so as long as I and others find a system why not?
That's interesting.
I saw once Timothy Feriss interviewing Neil Gaiman, and it was about focus and whatnot, and Gaiman said: "whenever I'm blocked, I stop, and start doing nothing. I can't watch a movie, read a book, I do nothing. I have only two options: I work or I do nothing - I cannot do anything else. After a little while, things get really boring, and I think 'might as well go back to work' - and that works as a charm.".
I guess that's a very good way of setting your focus straight, to obey your commands, instead of the other way around.
I used to do that technique for studying for the GRE. And it worked like a charm for sure (aside: Barron's GRE word list had the word <n-word>dly as meaning lazy in 2007 still. I was a kid in India but even to me it sounded wrong). Neil's full time work is to write. I'm sure this is what he does 9-5 or whenever he writes profesdionally. I doubt he just sits without doing nothing in the weekend when he could be playing with his kids. Thats the issue. If I was demotivated to do this in my day job that's one thing. Motivating yourself for extra work is where it's hard.
I would argue that switching the location is by far the most impactful of all those recommendations, based on how brain is clustering data. It comes with a rather big overhead for sure, but that might as well pay off quite quickly.
Discipline doesn't work for everyone. I suspect most folks who are reading this article are doing so because they failed at self-discipline (like myself).
Instead, I suggest observing how long your motivation tends to last (~2 weeks for me). Then at the very start of the project ruthlessly cut down the scope to something you think you could actually get done in that time period.
This will probably require you to simplify some of the stuff you were planning to develop
Maybe you'll adopt just one new tool you need to ramp up on instead of five.
But by embracing the ticking motivation deadline you can modify the work you take on to something that you'll actually finish.
I wrote about this recently, and how I applied this technique to a project I was working on.
Alongside discipline there's also simply losing interest. There are projects I could maintain over a long period because I still believe in them, but most I stop caring about. I've probably picked up and dropped music the most, often for something else.
I think Bukowski's aphorism "don't try" is useful. He means that he was always compelled to write, and that if you have to force yourself consistently, it's probably not for you. That being said, discipline is still forever important. There's a difference between my laziness and general interest in something.
The "Separate User Account" idea sounds especially odd to me, since that seems like it could only ever slow you down.
The quickest way to build something is to have built it already. So let's say you're working on your new side project and you want to implement "Forgot Password" functionality. How do you do that? You open up your last project, copy it out, and plonk it down into the new one.
Now imagine you had to do that, but you had isolated yourself completely from the filesystem that held that old code (and all your other old projects, notes, etc. too). Do you have to switch accounts six times back and forth as you remember more bits of the old that you need to grab? Do you write a whole new system from scratch? Clone that whole other project from source control into this new users' filesystem? It seems like a lot of work that you've made yourself.
I agree. If you're doing that as a way to somehow hack your focus so you don't get distracted, you're already lost.
I create new user accounts for different projects too, and I don’t see why you think it’s so hard.
> Do you write a whole new system from scratch?
Do you really think that if you’ve written code before, that a reasonable option is that you "write a whole new system from scratch" just because it’s a separate user account? It seems like you’re just reaching for the most ludicrous straw man you can think of. "Oh no, I wrote this great account management system", but I did it in a different user account, so I guess it’s lost to me forever and I’ll have to start from scratch!"
> Clone that whole other project from source control into this new users' filesystem? It seems like a lot of work that you've made yourself.
`hub clone JimDabell/foo` – one command gets me whatever repo I want immediately. Or `hub browse JimDabell/foo` to open it in a browser if I only want to refer to some other project quickly. How is that "a lot of work that I’ve made myself"?
> If you're doing that as a way to somehow hack your focus so you don't get distracted, you're already lost.
It’s just a form of organisation, not the moral failing you seem to think it is. My documents directory contains only the documents that are relevant to the project I’m working on, the applications in my dock are all the ones specifically for the project I’m working on, command-line history, notification settings, browser plugins and tabs, application configuration, etc.
Part of discipline is knowing which contexts work for you. For some this is mindset, while for others it’s a virtual or physical environment. To each his own.
First of all thank you for creating bulma. I love using it and I use it for all my projects. And for me it’s much better than bootstrap because it doesn’t come with any js
I never knew you are doing so many things apart from bulma. Please keep bulma active. Thanks for the insights.
> you need to dedicate time to a project. I do this through predefined 2-hour slots each day or week where I have to work on a project.
I'm glad this system works for you; it wouldn't work for me - my professional coding life is regimentalised enough.
When I step away from "work-stuff" to spend some time with a project I want to work on, I can't approach it like a job; instead I need the work to be challenging and engaging and loosely structured. I'll have vague aims and hopes for the project but I'll also be hoping for unexpected turns. I give myself permission to get sidetracked, to let go of the project's purpose (for a while) so I can explore new thoughts and ideas along the way.
It's all very unprofessional, yes. It's also fun - which is the main reason for me tackling any side project.
And when it stops being fun? I stop working on the project: save it, put it somewhere safe, go entertain myself on a different project for a while. I can do this because I know the first project will still be there, waiting for me to become interested in it a few months (or years) later.
It helps that I keep my side-projects very open-ended - none of them will ever be "finished". Horses for courses, I suppose.
I am always motivated to start a side-project to generate some extra income, but then I decide my time is better spent studying for job interviews. Eventually, I get sick of leetcode and go back to working on my side projects. It's a vicious cycle.
I think awesome side projects are at least just as valuable as leetcode, and so you should do side projects exclusively unless you have an interview next week.
Just like when studying or doing homework getting started and setting yourself up is the hardest part. Keep your IDE and relevant tabs open, if you're on Linux set up a workspace for it and just push the rest aside. Once you start tackling some code you'll be in the zone and will probably have to test yourself away from it.
> having a "context" log, where you write the current progress, and what to do next
yup critical. I do this and even if it gives me a 10-minute head start at the beginning of a work session, that means way more successful work sessions in a crazy week
I've started splitting my high-level todo list (tradeoffs + optimization) from my 'stream' todo list (next 5 linear things) -- the latter is useful for context + obstacles.
Writing down obstacles + setbacks also helps here.
We are used to put what we have done in git messages. But for WIP commits, it makes sense to also put what to do next. This way git log is your journal.
I've had people get mad at me for 'nextup' comments in commits, but at minimum, given how central git is to our workflow, the commit is the right time to track work
153 comments
[ 36.5 ms ] story [ 1574 ms ] threadLike a world-changing pandemic and riots? I'll be honest, it is getting hard to focus on building my cute little software bullshit project when a voice in the back of my head is telling me to spend my time prepping for social collapse.
During the dot-bomb implosion in 2000, most people threw their hands-up. Even VCs threw in the towel and moved from Calif. to southern states with no state income tax. (The metaphor was, "they're rolling up the sidewalks in Palo Alto.)
To this day, business people look at the start date of some of my projects and say things like, "Wow, you started a project in 2000?" Then they go mum since they realize what a silly thing that was to say.
Business and life are cyclical. Since it takes 7-10 years for a startup to mature, the passing of crises has very little effect in the early stages of a startup.
Now is the perfect time to do a startup or project.
Sand storms so large they are blocking the sun in the US.
Radiation forest fires in Russia.
Ufo's existance were confirmed by US navy.
Stock market crash / rapid recovery
What's next...
The way it's written, it sounds like the US Navy confirmed the existence of aliens, but it was just unexplained phenomena, right?
I'd bet the most common ones are classified man-made objects. But yeah, nature throws some there as well.
UFO means Unidentified Flying Object. The word "unidentified" doesn't fit well with the word "confirmed".
US navy has seen flying objects which it has not identified. I would be more surprised if they could identify all the objects they have ever seen flying. I often have trouble identifying certain objects which aren't even flying!
It especially helps motivate learning new tools. I find that if I want to learn a new tool, I look for something I'd want to do with it and use that to drive the project.
E.g. I got really fed up with how clunky the AWS assume-role workflow was at work with multiple AWS accounts so I wrote a little tool using Lispworks’s CAPI for a GUI that would handle authentication and embed a webkit browser so I could control the cookies more precisely. I got an MVP that improved my workflow working in a weekend and I’ve been iterating on it over the last several months. I find this sort of process works much better than spending months working on something that I may eventually use.
My solution was an app with a minimal embedded webkit browser, so that I can programmatically clear the cookies every time I login to a new account: that way, the sign-in link works first try. Since then, it’s grown the ability to list Cloudformation stacks and their parameters and outputs.
I'm sure many of us want beauty, conciseness, and every other quality in our writings but it's 99% of the time a neverending rabbithole.
On side projects a little bit of quick'n'dirty is extremely valuable to progress in assembling the bits of a system and see it operate for real.
It's a hard balance because no one wants to come back and fix things later but the fact that you walked forward into building the system means you have more concrete knowledge of what is required and this will make it a lot more clearer and motivating to adjust and fix the previous modules.
There's also a different kind of pleasure involved. I can be proud of super clean code in a project that is never done.. but the feeling of having finished a tool that is actually useful is so much nicer. And it makes you want to keep doing it this way.
I often get into side projects that start from "it would be cool if this exists", but, if I actually think about it, I have no interest in them beyond yeeting them off into this vague coolness.
So many products I use only get me 80% of the way there and I find myself wanting to make my own version.
Any project but the simplest always keep finding more things I want to add to it.
What I found key was making it a habit to work on it. Side projects, especially solo ones, take a long time to complete. If working just a little on one is part of your daily habit, you'll have ongoing steady progress that won't come with burnout.
> He told me to get a big wall calendar that has a whole year on one page and hang it on a prominent wall. The next step was to get a big red magic marker. He said for each day that I do my task of writing, I get to put a big red X over that day. "After a few days you'll have a chain. Just keep at it and the chain will grow longer every day. You'll like seeing that chain, especially when you get a few weeks under your belt. Your only job next is to not break the chain."
Sounds like the visual commit history on github, now that I think of it. My side project is on a local git, and that's the only thing I miss - the calendar.
To get people to pay for anything is usually a different side project. If you can't see the path to profit no one probably will pay. Find people who will pay and use that as motivation and product guidance.
I think thinking that people won't pay for it has more to do with self doubt and lack of confidence in myself.
It also gives you an in built audience to launch with who will use it - rather than launching to a loud thud of silence - which sucks and feels like the long dark night of the soul.
I've always found that early adopters and innovators are very interested in being first customers and following your journey.
It also depends on what side project you pick. So, there is some nuance for sure.
[edit removed link]
https://www.indiehackers.com/products?sorting=highest-revenu...
A lot of the highest revenue products (with a few exceptions of course, I'm not saying it's only that) on this website from this list are SAAS targeted at the startup world.
The question seems to be how to keep your project top of mind. Once you're forced to stop working on your project, the context file this post mentions acts like a save point to return your project to top of mind.
I'm sure there are other similar hacks. Maybe review your context file before showering each day?
I have been working on NearBeach for nearly 4 years. I have always done it in small steps.
- Implement projects functionality
- Implement customer/organisation functionality
- Implement tasks
- etc.
I find this helps me keep myself motivated. That and I couple it with a set goal - a very achievable goal.
Currently NearBeach is a minimal viable product currently going through a UI/UX and backend refactoring, with the goal of improving UI/UX and backend readability of the code.
That way you don't mentally feel like you're accomplishing things by just texting the idea around. The discussion bloats your senses and conflates self-reassurance with getting things done.
And secondly, sometimes its easier to communicate an idea by building it than to try to use words to describe your intangible hallucinations. Translation from your head to words to someone else's head is pretty lossy (esp on things like Twitter, though I do think its a great creative exercise)
They say the difference between a vision and a hallucination is that other ppl can see a vision (h/t Ben Horowitz). But no matter what, everyone can see cold hard product.
Don't do it, keep it to yourself until there is something tangible to show.
Ironically one of my todos is to hack my xfce to swap out panels (and maybe somehow browser profiles?) when changing to certain named workspaces. So I could have my 'coding' workspace with a panel of work-only applications ready to go, only work-related bookmarks in the browser, etc.
The idea of logging out and in as another user seems to have just a bit too much friction for my tastes, but maybe I should just embrace it.
My main quest is my day-to-day life. When I'm feeling bored, bogged down, and tired of the daily grind -- I head out in search of a side quest.
A side quest can be easy (1 hour), or hard (14 days). But the goal of a side quest is to distract me from my daily grind, and help keep me learning and motivated.
While this difference in perspective is subtle, I feel like it's enough to give me the headspace to stay more deeply engaged with interesting topics I'm trying to learn or understand.
I wrote a related blog post last week on related thoughts, if you're interested: https://jakedahn.com/2020/06/23/its-not-a-side-project-its-a...
Sometimes it's worth remembering that side projects can be "just for fun", and it's okay if you're going to spend a few dollars on it. The value can come from the learning process, and creative input/output generated.
My completed side projects have been the one that took me less than a week. Some of them was less than 100 lines of code.
I have my share of past and ongoing side projects, including hobby websites [1], funny tutorials [2], an ebook [2], coding references [4] and a CSS framework [5].
Like the blog says, the motivation is always here at the start. It’s the second part, when this motivation fades, that is hard. What you need is discipline. I work from home so discipline is key, even in my professional work. How you acquire it is through time management: you need to dedicate time to a project. I do this through predefined 2-hour slots each day or week where I have to work on a project. That way I don’t have an endless timeframe in my kind (because endless would mean “this is never be finished”) and provides me a repeatable and reproducible pattern. And by scheduling it in advance, it provides me with a plan to look forward too, and not end up sitting in front of my computer during a break and asking myself “What should I do now?”.
[1]: https://f1standings.com
[2]: https://jgthms.com/web-design-in-4-minutes/
[3]: https://jgthms.com/css-in-44-minutes-ebook/
[4]: https://cssreference.io/
[5]: https://bulma.io/
In every hobby there is always a sense of discipline, it's just usually implicit. For myself: composing orchestral scores started off as a fun little "oh this melody would sound neat". Ever since then, there have been times when I need to sit down and do some "real work" to turn that idea into an enjoyable, fulfilling result. Could I have just wrote things when I want to? Of course. But now, after years of composing, I have the skill to make things that sound great when I really just threw it together.
In software engineering, a beginner or even intermediate programmer is going to lose a lot of their initial motivation to build their idea (game, app, website) -- because in finding the skill to execute on their initial side project idea, they realize they need to develop that skill from scratch, which takes work.
I think there's a good balance between investing skills between "basic knowledge" and "career capital". What that balance is varies from person to person, but I also believe that no matter what, even if it's implied, there is always a certain amount of work that needs to be put in.
I do watch Netflix too. But it’s time boxed during the day, the same way working on projects is. And in a day, I don’t work more than 6 hours. I’m always done by 6pm and can do anything in the evening. The key is to manage your time during the day and stick to a plan.
As a matter of fact, OP’s rules feel more like the army to me: having a different user or even laptop for a project, going to a different location, blocking websites like reddit… These are harder restrictions. If I really want to quit a project, I always can. I just need to close my code editor and my terminal. But in my mindset I don’t want to. Because the project is not a burden like the army: it’s 2-hour slots where I’m focused, not overwhelmed, and I know there’s an end to it.
The door to leave is always open but I don’t want to take it. It’s different.
Perhaps if I get electroshock therapy and/or go to an ashram and meditate I might get more internal self-control, but I'm 32, and can't be bothered with it. Thats partly because I'm also not convinced it's that important that I become disciplined: sometimes being lazy feels good and maybe it's a part of what makes me who I am. I'm not self-sabotagingly lazy (except in exercise which I need to work on), so as long as I and others find a system why not?
I guess that's a very good way of setting your focus straight, to obey your commands, instead of the other way around.
> The term niggardly, arising in the Middle Ages, long predates the term <that word>, which arose in the 16th century.
- https://en.wikipedia.org/wiki/Controversies_about_the_word_n...
I wonder if it should come into misuse just because of the confusion, though. Not sure.
Some people have ADD and/or anxiety and need the minimalism so they don't get overwhelmed or trapped in rabbit holes.
Your advice is akin to telling people "don't bother disabling notifications on your phone apps you can just ignore them".
The real answer is find a system that works for your particular brain. Personally I need the approach in TFA or I get analysis paralysis.
Instead, I suggest observing how long your motivation tends to last (~2 weeks for me). Then at the very start of the project ruthlessly cut down the scope to something you think you could actually get done in that time period.
This will probably require you to simplify some of the stuff you were planning to develop
Maybe you'll adopt just one new tool you need to ramp up on instead of five.
But by embracing the ticking motivation deadline you can modify the work you take on to something that you'll actually finish.
I wrote about this recently, and how I applied this technique to a project I was working on.
https://twitter.com/ZainRzv/status/1275276323120746498
I think Bukowski's aphorism "don't try" is useful. He means that he was always compelled to write, and that if you have to force yourself consistently, it's probably not for you. That being said, discipline is still forever important. There's a difference between my laziness and general interest in something.
The quickest way to build something is to have built it already. So let's say you're working on your new side project and you want to implement "Forgot Password" functionality. How do you do that? You open up your last project, copy it out, and plonk it down into the new one.
Now imagine you had to do that, but you had isolated yourself completely from the filesystem that held that old code (and all your other old projects, notes, etc. too). Do you have to switch accounts six times back and forth as you remember more bits of the old that you need to grab? Do you write a whole new system from scratch? Clone that whole other project from source control into this new users' filesystem? It seems like a lot of work that you've made yourself.
I agree. If you're doing that as a way to somehow hack your focus so you don't get distracted, you're already lost.
> Do you write a whole new system from scratch?
Do you really think that if you’ve written code before, that a reasonable option is that you "write a whole new system from scratch" just because it’s a separate user account? It seems like you’re just reaching for the most ludicrous straw man you can think of. "Oh no, I wrote this great account management system", but I did it in a different user account, so I guess it’s lost to me forever and I’ll have to start from scratch!"
> Clone that whole other project from source control into this new users' filesystem? It seems like a lot of work that you've made yourself.
`hub clone JimDabell/foo` – one command gets me whatever repo I want immediately. Or `hub browse JimDabell/foo` to open it in a browser if I only want to refer to some other project quickly. How is that "a lot of work that I’ve made myself"?
> If you're doing that as a way to somehow hack your focus so you don't get distracted, you're already lost.
It’s just a form of organisation, not the moral failing you seem to think it is. My documents directory contains only the documents that are relevant to the project I’m working on, the applications in my dock are all the ones specifically for the project I’m working on, command-line history, notification settings, browser plugins and tabs, application configuration, etc.
Part of discipline is knowing which contexts work for you. For some this is mindset, while for others it’s a virtual or physical environment. To each his own.
I never knew you are doing so many things apart from bulma. Please keep bulma active. Thanks for the insights.
I'm glad this system works for you; it wouldn't work for me - my professional coding life is regimentalised enough.
When I step away from "work-stuff" to spend some time with a project I want to work on, I can't approach it like a job; instead I need the work to be challenging and engaging and loosely structured. I'll have vague aims and hopes for the project but I'll also be hoping for unexpected turns. I give myself permission to get sidetracked, to let go of the project's purpose (for a while) so I can explore new thoughts and ideas along the way.
It's all very unprofessional, yes. It's also fun - which is the main reason for me tackling any side project.
And when it stops being fun? I stop working on the project: save it, put it somewhere safe, go entertain myself on a different project for a while. I can do this because I know the first project will still be there, waiting for me to become interested in it a few months (or years) later.
It helps that I keep my side-projects very open-ended - none of them will ever be "finished". Horses for courses, I suppose.
yup critical. I do this and even if it gives me a 10-minute head start at the beginning of a work session, that means way more successful work sessions in a crazy week
I've started splitting my high-level todo list (tradeoffs + optimization) from my 'stream' todo list (next 5 linear things) -- the latter is useful for context + obstacles.
Writing down obstacles + setbacks also helps here.
I've had people get mad at me for 'nextup' comments in commits, but at minimum, given how central git is to our workflow, the commit is the right time to track work
But I don't see how it hurts.
Sending love to everyone building side projects, you're awesome.