Ask HN: How can I pick a side project and stick with it? - <AUTHOR> I'm a web developer and DevOps engineer. I know a few languages and frameworks very well, I can find my way around with a good deal of other languages and frameworks, and I'd like to learn a lot more.
My problem is that I cannot seem to be able to pick a project (any project) and stick with it long enough to do any meaningful progress, let alone finishing it. It's been several years since I've managed to work on a side project for more than two days continually.
I sit before the computer thinking: I know! I'll write a roguelike in X! Five minutes later, I'm thinking: fuck roguelikes! I'll write a graphical solitar card game with Y! Five minutes later, I don't care for it anymore, and would rather write an isomorphic strategy game in Z.
The same thing happens with tools I might need, applications I think about, experimental stuff, etc.
Has anyone else experienced this, and, more importantly, found their way out? How? <comment><USER2> Don't. Most side projects aren't worth investing heavily in, but you can't tell which is which without trying them. I had started hundreds of programs before Erich Gamma and I programmed together. If I had forced myself to "stick with" one of those early projects, we wouldn't have written JUnit.

</comment><comment><USER3> I'm just like you.

I stumbled upon a book called Refuse to Choose and it's about a personality type (that is definitely not ADHD) that happens to want to do a lot of things (sometimes in parallel or in sequence). It was very comforting to know others struggle with this and this book helps you to be ok with it. I wouldn't say it "cured" me but I think about it differently now and use it more to my advantage. Worth a read at a minimum.

There was one very profound idea in this book that goes like this:

"If you are no longer interested in a project you started, maybe you already got what you came for".

In essence, maybe it's not the finishing of the project you came for but maybe the learning or understanding of how it could be done if it were to be done.

This realization is interesting for someone who exhibits this behavior. When I was a kid, I loved to build legos but after following the instructions and building a kit, I wouldn't touch it again. As I think back now, it likely was because "I got what I came for" (the challenge of putting it together was more interesting to me than the end product).

<comment><USER4> "maybe you already got what you came for."

As someone who frequently starts projects and doesn't finish them, I've wondered if the part I enjoy about the project is the dreaming about what could be. That little rush you get when a new idea is upon you and it's all you can think about for x days. Doing the initial research and formulating a plan.

This is a dopamine rush for me. The feeling of being laser focused for those few days is invigorating. The start of something new, the potential for life changing work.

It usually stops there. Maybe that's what I came for.

<comment><USER5> As someone who tends to do the same, I don't think this is a good description of what is happening. The way I view it is that any project has the same progression of initial excitement, frenzied work and determination, discovery of the real scope, the descent into the Valley of Despair as you continue to wrestle with the problem and then the fork in the road where you either give up and abandon the work or you persevere through the Dark Forest of Unknowns where your progress is often measured in inches until you climb the Hill of Competency where you can again make meaningful gains and catch a second wind until you enter the Swamp of Drudgery where you again must slog your way through until you reach the base of Mount Perfection where you can finally ship it.

<comment><USER4> Ya, sometimes I follow this path as well. I like how you put it.

</comment></comment></comment></comment><comment><USER6> I've finished loads of hobby projects, despite full time jobs, and I've been told that I'm a bit of an expert on this. I see there's lots of comments already so I'll keep it short.

1) If you can't focus on a project longer than two days, then pick a project you can finish in three days. Honestly evaluate how big such a project can be. I also see this as students learn to code. They learn the basics then think they're going to dive into a 2000 hour project. Instead, you need to ask yourself "what's the biggest project of this type I've ever finished" then add 50% to that. Like an athlete, you need to build up the endurance for your self-motivation to survive longer and longer projects. The payoffs are bigger but your human brain needs to trust that a payoff exists based on past experience.

2) I prefer not to talk about my future dreams for a project. What happens is I get enjoyment out of talking about what I "will" do, but without actually doing it. Then if I ever finish the work, I get less enjoyment because I already talked about it. In this way I'd be stealing enjoyment from my future self! An exception is advice.

<comment><USER7> My answer takes from the Feynman approach to problem solving: have several projects laying around that you could easily pick back up to work on a little bit. The progress may not be constant, but it builds over time.

This is a variation on the parent post's suggestion of picking a project you can finish in three days. I find that task can itself be hard, and is work that gets in the way of the fun work. In the past I've burnt out my excitement while trying to do it.

So I have 5+ small games, a game engine, an interpreter and a compiler, a few short stories, some music projects, a personal website, some art projects, and several books to read, and most aren't done.

When inspiration strikes, e.g. I'm feeling musical, I open up my music folder and click around a bit. Or if I feel like making a game, the first thing I do is go play one of my existing half-built games, and pop open the editor. It is helpful here to leave things in a working-ish state and keep ideas around in text files about what you could do next. Make picking the project back up easy for yourself.

I do also start new things or decide not to come back to old ones, but I wound up here by realizing that my interests aren't actually infinite. There's only about a dozen distinct things I really want to do and periodically get excited about.

For years I had been starting and then totally dropping projects, but I had "started making a game" a hundred times. My plan became to treat random projects like turning a ratchet, and I feel it's gone great from there.

<comment><USER8> I do a similar thing where I keep a list of things I'd like to do in a list in a markdown file. I put subtasks on them, check those off, and eventually, when the product is done, it gets checked as done. This gives a great sense of accomplishment.

Choosing what to do is a challenge for me, so I created a task chooser for when you have trouble deciding what to do next: [https://github.com/RobKohr/weighted-task- chooser](https://github.com/RobKohr/weighted-task-chooser)

And you can assign weights to the different things. I usually run it a couple times until it tells me something I feel like doing.

</comment></comment></comment><comment><USER9> A friend of mine said to do a successful software product you need three kinds of developers. Skip one and you will likely fail.

1\. the kamikaze

2\. the soldier

3\. the sniper

Kamikazes start the project. They have a broad vision of how the result will look (total victory, ofc) and they do not pay attention to the mountain at the horizon or the road missing a bridge over a canyon a few hundred clicks ahead. They just start running.

Soldiers are those who march on day by day. Following in the kamikazes footsteps they do the grunt of the work. Much more thoroughly than a kamikaze ever could muster patience or care for.

Snipers are needed when the army hits an obstacle. Like a booby trapped rock in the middle of the road. They will shoot the explosives from afar. They are highly specialized individuals who care much more for the problem they solve than what means to what end it presents.

Most developers I know have a little bit of all these three types in them.

I did understood long ago that I am mostly a kamikaze.

Coming to terms with that when I do not finish yet another spare time project ... that's a lifelong goal to overcome.

You are in good company. As others said: focus on the learning more than on the result. This is what makes coping with not finishing stuff much easier for me.

At the same time this change of perspective may just provide the inkling of additional motivation needed to actually do finish one or the other of those projects.

<comment><USER10> I had two cofounders, and this is possibly the best description of how we operated... each with a different timeline and focus. Although I can't say that it ended well between us

</comment></comment><comment><USER11> Since I haven't seen this in the comments so far, I'll suggest that you begin to reflect on what's truly meaningful to you. It sounds like you're able to have a lot of ideas that aren't particularly meaningful, which are probably ideas you got from the values of your cultural environment. So try reflecting on the following prompts: what kinds of experiences do I want to help people have, that would be truly satisfying to see? What moves my heart and gives me energy to keep going?

With deeper meaning and purpose it will be natural to want to stick with something.

> Has anyone else experienced this, and, more importantly, found their way > out?

I wrote a little bit about that in these two articles:

Why I Quit Tech and Became a Therapist: [http://glench.com/WhyIQuitTechAndBecameATherapist/](http://glench.com/WhyIQuitTechAndBecameATherapist/)

Deep Listening at the Recurse Center: [http://glench.com/DeepListeningAtTheRecurseCenter/](http://glench.com/DeepListeningAtTheRecurseCenter/)

<comment><USER12> I have been contemplating a similar change. The dynamic for me is interesting. When I go deep into tech studies or projects I eventually feel a what-is-the- point energy take over. When I go deep into exploring the mental/emotional/spiritual my engineering creator brain will eventually agitate.

Figuring out how to express both has been a decades long puzzle. A puzzle which has not been very productive for my career. I have recently considered turning all tech into a hobby and getting a Masters in Social Work.

</comment></comment><comment><USER13> You've already done step one: realise the pattern. Step two is don't do the new project. See it for what it is, not a great new idea, but another step down the road you've been walking down for years.

Just because an idea pops into your brain, doesn't mean you owe it anything.

Something that may help is picking a smaller project, so small you could do it in a day or two. Build up some endurance over time.

Good luck

<comment><USER14> It's funny because I did exactly that (sticking to one project instead of jumping from idea to idea) because I had the same problem as the OP, but these days I'm getting the feeling this is also counterproductive. I spent a lot of time on a single project, learned a lot of things along the way, but progress was very very slow mainly because it started to feel like 'work'.

For me, these kinds of side-projects are all about learning new stuff, and sometimes to scratch some really small personal itch. So what I try to do now is to find projects that can be used a platform for trying out new stuff. For example, I've been working on an iOS game since 2014, but by now actually finishing it so people can play it is completely secondary to the personal satisfaction of incrementally refactoring and repurposing parts of the engine, using techniques and technologies that interest me right now. Becase even that started to feel like work at some point, I decided to also start some other side-projects that go in completely different directions, so I can switch depending on my mood and make slow but steady progress in each of them. I try to also incorporate some technology/techniques that pop up around my daytime job but which I never have time to explore at the office, some of that stuff is super interesting but I cannot justify spending company time on it.

I think the main advice I have for the OP is to find one or two interesting projects that are diverse enough to be a platform for experimentation, instead of some very narrowly focussed problem that will inevitably start to become boring sooner or later. Unless you really want to create a product or something to show off with, the main purpose should be personal development/intellectual satisfaction, not reaching some predetermined goal.

<comment><AUTHOR> > find one or two interesting projects that are diverse enough to be a > platform for experimentation

This seems promising, thank you!

Just a question: don't you risk to get stuck in a perpetual refactoring/rewrite cycle?

[edit: fix formatting]

<comment><USER14> >> _Just a question: don 't you risk to get stuck in a perpetual refactoring/rewrite cycle?_

Yes, definitely, it's actually all I've been doing on one of these projects for the past two years. Guess I just like refactoring a lot it seems ;-)

Joking aside, refactoring is a broad term. Most of the time spent 'refactoring' this project was to incorporate interesting new ideas, increasing the capabilities of the game engine etc. Not just the typical technical debt cleanup. But even some of that was actually very educational, for example I found out that the whole idea to use object-oriented programming techniques to model the game was a bad idea, and have slowly refactored the whole thing to a hybrid between OOP and an entity-component system. Just the act of incrementally applying such a fundamental paradigm shift while keeping the engine mostly working was quite an interesting challenge!

</comment></comment></comment></comment><comment><USER15> Hey OP, I have been exactly where you are, about three years ago, and now I have a backlog of completed side projects of varying size that I am very happy with.

Here's some quick advice:

* Start smaller. Your projects are probably too ambitious to start. Graphical games are actually quite complex. Start with small projects and work your way to larger ones. My first projects were chrome extensions and silly command line tools. They helped me build some resilience that I used later to complete more complex projects.

* When you do tackle larger projects, do your best to see them as a series of smaller projects. Each project should deliver some value on its own. I recently built a web game about navigating a randomly generated maze and avoiding monsters. Here's how I broke it up: first I built a command line tool to generate mazes. Then I separated the core functionality into a library. Then I deployed an API wrapping that library. Then I built a simple UI that allowed a user to navigate that maze. Finally, I started adding enemies. Each enemy was its own project, each with more complex path finding than the last. At each step in this process, I had learned something new and had a deliverable to show for it.

* Your question suggests that the problems you are trying to solve are not interesting enough. This belies a beginner mindset: that you have to be interested first, and then work happens off the fuel of your interest. The truth is that most interesting projects involve a lot of days where the creator feels disinterested, but shows up any way. The most important thing you can do for yourself is cultivate the resilience required to keep showing up, so you can reap the satisfaction of completing great work later.

<comment><USER16> Yeah, this. I'll add:

Keep a todo-list/journal sort of thing and document each work item as you complete it.

I'm working on a stupid side project myself and every day I hit a new hurdle, something I don't know, so (almost) every day is a tiny victory over some immediate problem.

Make a plan, sure, but break it down into tiny pieces, even if you have to keep lowering the bar.

</comment></comment><comment><USER17> Get people using it. Period.

Result: with every user interaction you will get a refreshment of motivation. I've done it for 5 years.

Long version: I was all about starting projects and never finishing, until one day I actually put one online and started spreading the word through discussion boards.

So step 1) Launch and spread the word. You get 1 thing out of this immediately: you WILL finish it to the bare minimum, because what if someone actually tries to use your product?

You could argue: yeah, but when I give up on the project it's no where near ready to be launched. I would argue back that if you dropped it, it probably means you got something out of it - could someone also benefit from it? Maybe, at that moment switch your brain to: now let's launch this and spread the word.

Step 2) Put metrics in it You want to see if there's people coming to your website. Crucial for step 3, read on.

Step 3) You will see people coming to your website and interacting with your product. This is the best part, because it gives you such a kick of motivation that will make you want to continue working on it. It just keeps giving.

I've started a project 5 years ago and I put it out there and forgot about it. 2 months after someone used it and I got my first reservation. That was such a source of motivation!! It's magical and it's a cycle. As I continue working on it as my side project and as I start losing interest, I get a new user which then sources me with more motivation to keep going. This cye repeats

I've learned a lot in terms of business, technology stack and devops, but all this applied to the same project I started 5 years ago.

<comment><USER18> > Get people using it. Period.

Or find people that code with you, like a hackathon.

I recently wrote an application [https://wintermute.app](https://wintermute.app) that tries to connect coders.

@corecoder Maybe you can find a project you want to participate in? Or at least you find some first users / supporters for one of your ideas.

</comment></comment><comment><USER19> I've been employing a tactic I've picked up from artists/authors: _don't talk about your project_.

Talking about it tricks your brain into thinking you've done the work and you lose motivation.

Sticking to a schedule can help as can ritualizing the process of working on your project: have a certain place you associate with the project or a particular genre of music that gets you excited (it's important to not listen to that genre/album while doing anything else). These tactics exploit the power of association in our brains to form habits.

<comment><USER20> I've come across this tactic, I think there may be some psychological studies backing up the suggestion.

There is an opposite suggestion that may work too: telling others you're planning on _releasing_ an app at some date (setting a public deadline). This way you may feel pressure (to avoid the pain of 'losing face') to complete it on time.

Note, do not talk about "I'm working on this thing" (see comment above why that may backfire), but instead talk about an explicit deadline you think you can hit.

Needless to say, this is best when talking with people you expect to interact with in the future (so you feel responsible to finish), it may not help psychologically when talking to someone you'll never see.

<comment><USER21> I read that in the section Commitment and Consistency of the book, Influence - [https://sites.google.com/site/724ecialdiniwiki/home/commitme...](https://sites.google.com/site/724ecialdiniwiki/home/commitment- and-consistency). If you commit to something publicly to someone especially written, you are more likely to do it.

</comment></comment></comment><comment><USER22> I have battled this since programming became my profession. Over years I was trained to create in ways that maximize income, and stop when there is no income link. Decades later, this made working for passion very difficult.

Here are a few ideas that seem to consistently help me.

* one, sheer willpower. It's a muscle that needs building, but keep going when you don't have any further interest for the sake of completing the task. Even when it feels like torture. It's about forcing yourself to the finish line. Often the interest comes back later.

* Move the finish line closer. Formally write down what you want to develop with milestones, with a go/no go decision at each milestone. If you decide not to continue at a milestone, that was part of the plan, so you completed the project.

* work on things that develop skills you expect to bring to the workplace and apply there. That's a pretty direct link to income.

* work on things you want or to keep current with younger hires -- I'm learning gitops on k8s at home, and packaging charts to self-host some things I've wanted at home anyways. Even though I manage these days, it's important to understand how things work to a decent degree in order to have meaningful discussions with the broader team. I know managers who get by without that, but I'm not one of them.

For what it's worth, continuing on because that's what you planned to do sometimes leads to a renewal of interest later in the project.

</comment><comment><USER23> When you're imagining a rogue-like use a piece of paper and some fat markers and make some of its artwork. That's where it starts. Not with downloading a graphics library. Not with configuring Travis-CI. Not with >git init. Those are pretend work. They are non-progress. They are not creative work. They are not hard. The hard thing is doing something poorly. The hard thing is barely making progress. The hard thing is opening yourself up to someone saying "that's inefficient." That someone is usually you. Good luck.

</comment><comment><USER24> Focus on solving a problem. Find something you actually care about and _need_ to make instead of something that you think sounds cool or that you think might make money. Let those things happen organically. If you actually solve a problem people will tell you that it's cool, and they might pay you for the solution.

<comment><USER25> > Find something you actually care about and need to make This is my problem. > It's hard to find something that I care about enough to spend time working > on it. When I start on something that I do care about, I often find > something that already exists that does what I wanted to make.

<comment><USER26> Do it anyway. Or think about how you can improve it. If it's open-source look at their code and collaborate with them.

</comment></comment></comment><comment><USER27> Maybe work on personal discipline, also I've noticed with myself that sometimes a lack of motivation can be confused with a lack of understanding. The more you practice your tools the longer you'll go before you get badly blocked and give up, eventually you'll have projects that you can hack on for years.

Here's what worked for me:

1) pick a language (it doesn't matter, C, python, ocaml) and just start writing small things in it. Do this so much that your inner monologue starts speaking the language, that you have an uncontrollable urge to sit down on Saturday and barf our thousands of lines of bad code in it the way you might write a rambling post on tumblr.

2) understand problem decomposition: practice OOP for the broader application (you don't need an OO language just use it to break the problem down, write UML if it's your first couple times) and FP for smaller problems.

3) practice discipline. Clean your room, do your laundry, make your bed, wake up at the same time every morning, go for a walk every day, keep a house plant alive. It's almost unbelievable how much this discipline with small things can make you more focused and less compulsive.

<comment><USER28> The point 3 really helped me to see some improvements. When I complete those little tasks in the morning, I get the necessary boost to get the next things done.

</comment></comment><comment><USER29> As someone who has been failing on side projects for over 20 years, I feel qualified to answer this question.

      - Have one private repository for random projects
      - Work in private repositories for random
        projects that progress.
      - Move to public repositories when the project
        gets somewhere.

These tips above make failure cheap. Success is built on the many failures.

I also have general tips on side projects that make them more fun and less like work:

      - Use a different editor/ide to $job.
      - Use a different programming language.

I also have these general tips based on mistakes I made in the past:

      - Read other peoples solutions on github. Its inspiring.
      - If you get stuck take a break. Its not work and you can slack.

</comment><comment><USER30> You describe focusing on the solution. The inspiration to make your solution generally feels great, but doesn't endure. On the contrary, you'll get caught up in more and more solutions because you're mostly satisfying fleeting whims.

Focusing on the problem and the people who feel it will generally engage and inspire you longer. When you ask someone about what's missing in their lives or specifically what emotions they feel in the area you want to work in, they tell you, you offer possible solutions, and they say "when will you finish it, I want to buy it?", that inspiration lasts a long time.

Whom do you want to make your project for? What emotions do they feel that you want to address? Are they bored, frustrated, confused, misunderstood, lonely, etc? Each emotion is different and will lead to different solutions. Ask them so you hear in their words what they want. Ask them to clarify.

The inspiration to help others is deeper and creates meaning and purpose beyond just "I'm going to do something cool everyone will love."

I cover how to make this happen in my book, _Initiative_ [http://joshuaspodek.com/initiative](http://joshuaspodek.com/initiative) based on project-based learning entrepreneurship courses I taught at NYU. If anyone is interested in doing the exercises after reading the reviews and watching the videos but cost is a problem, email me and we'll work something out. I suggest the book because of the results people get from doing the exercises.

</comment><comment><USER31> The first thing I'd suggest you do is understand why you want to do a side project at all. Unless you have a specific goal you want to achieve and you actually value that goal, you'll have a hard time convincing yourself to do the work you need to do to make it happen.

You also shouldn't fool yourself about the amount of time and effort it takes to achieve anything real. Developers tend to underestimate the work involved in achieving a result. For commercial projects that sort of estimation problem turns into cost overruns and missed deadlines. For side projects (without formal schedules) it turns into demoralization when the result you want doesn't meet the timeline of your dreams. That solitaire game may seem like an easy thing to do, but for every complexity you see there's a dozen you don't, and you'll have do the work to solve them all to produce something of value. So make sure it's something you actually care about.

</comment><comment><USER32> 1\. The WHAT should be something very important to someone else.

2\. The HOW should be something very important to you.

Many experts tell you that you should build something that you actually need yourself. That may be good advise for start-ups but not as good for side projects. Why? Because it's too damn easy to just give up as soon as you hit an obstacle (and you WILL hit obstacles).

But when someone else is depending on your work (and becomes a trusted collaborator), they provide you with that extra UMMPH you will undoubtedly need when the going gets tough. It's a lot harder to bail out when someone is right next to you and depending on you.

But by deciding on your own HOW you will build it, you maintain an outlet for your passion. Believe me, I know. For me the journey of building something is more fun than the anticlimactic using of the finished product.

Works all the way around. Give it a try.

<comment><USER28> I second this, for my current side project, I felt like giving up many times, but the thought that someone is depending on my work made me continue.

</comment></comment><comment><USER33> Maybe you need to examine what your true goal is. Why do you want a side project? Are you doing it because you feel like you are supposed to have side projects, or because you actually want to accomplish a goal? If it's the former, you could try to align the side project with another goal of yours - say learning some new language or framework.

If you are just trying to build a portfolio you can come up with a (small) "SMART" goal, and commit to completing it. After you reach the milestone you can make a conscious decision whether to continue or not - but either way you have _something_ completed.

[https://en.wikipedia.org/wiki/SMART_criteria](https://en.wikipedia.org/wiki/SMART_criteria)

<comment><USER34> > Maybe you need to examine what your true goal is.

I think that's absolutely the most important factor here. People don't finish things for a variety of reasons.

Perfectionism is a big one. It's tied to a fear of failure that manifests as losing interest. If the root cause is perfectionist tendencies, one thing that can help is to collaborate with others. Just doing something for someone, helping them out in some way will often de-fang the perfectionism and self- criticism and drive you towards something tangible.

It could also be boredom. If you're doing X at work day-after-day, maybe it's not a great idea to _also_ do X as a side-project?

I personally am allergic to SMART criteria-- too much association with corporate performance evaluation fuckery, it kills motivation and creativity for lots of people.

</comment></comment><comment><USER35> I have similar questions how people stick to projects and get them done. And how can I do the same. I have so many unfinished ideas, abandoned projects that I got tired of this. And after a year I have an answer with a prove.

I've learned that I'm excited about idea of the project, but not routine which gets that idea done. Also I know that usually I'm excited about project for several days and then other ideas get in my head and I loose focus. Another known pitfall is urge to get too much functionality and then again focus is lost.

So I decided to stick to the routine of one project regardless of circumstances. I defined wanted functionality. Intrinsically I agree that time spent on the project is not worse than alternatives.

Also I tried to record videos (in russian) on how I approached the project. That helped a bit with external motivation as I promised people to deliver video on Saturday. Made quite a number (26) before abandoned this idea, as it wasn't popular, thus rewarding for me.

Now in a year I call this experiment done [https://github.com/podgorniy/media- manager](https://github.com/podgorniy/media-manager). I'm happy with result and path I did to get there.

We can discuss details more. My first unfinished project dates 2013. So I've being in this situation for quite a while.

</comment><comment><USER36> I faced this. Start a website then lose it because I would be losing interest in few weeks.

The thing which I followed is to fix my routine. Joined a Gym, it helped a lot on focusing on things & made me mentally strong.

Take off time, started travelling & took a long break & then get back to work. A step closer to nature made me fresh & met people who are really working hard despite the lack of resources. This made me think about how am wasting my time, despite having all the resources.

Sat one day & written everything on things I wanted to do. Made a weekly task, monthly, quarterly. Then started steps to accomplish it.

At first it wasn't easy but slowly I made a habit & then finally get used to it.

Just follow something for 21 days, it will be a habit.

All you need is 21 days.

</comment><comment><USER37> You must pick something that is really meaningful for you in a way that will make you feel good seeing the progress of the project you are working on. What would a Roguelike have to be to take your full attention? How a strategy game you really love has to look like?

What you like beyond games? If you like gardening, make a game about it. Are you a sports fan? Make a sport game. You get the idea.

I'm saying this because it's working for me. Like you, I want to make games on my own. I am also into politics, so I chose a language and a framework[¹] and started from the tutorial with the goal of making a politically-charged infinite-runner[²].

After getting the basics I told my idea to a couple of friends that kindly drew sprites for me to use in the game. It's been a really cool experience. I'm doing it everyday and learning a lot in the way. I strongly believe that the subject choice for the project is what is getting me hooked to it.

¹: [https://haxe.org](https://haxe.org) and [https://haxeflixel.com/](https://haxeflixel.com/)

²: [https://github.com/fullynotanalien/bozorun](https://github.com/fullynotanalien/bozorun) (edit: formatting)

<comment><USER38> Came here to say this basically. If a project only has surface level interest, I'll never finish it. The only projects I've ever finished are ones that I found that would be legitimately useful for me or other people. It has to solve a problem that, like you said, is meaningful.

</comment></comment><comment><USER39> This is common for most people, at least in the beginning. This is the nature of creative projects because it's just always going to be easier to think of an idea than execute it.

1) you have to recognize that the dopamine rush of new ideas will not carry you through the project to completion in the same way it drove you to start. Inspiration is useful, but it's fleeting or at best inconsistent. The sooner you stop relying on inspiration to last, the sooner you'll learn to find other ways of motivating yourself. That being said, it's useful for inspiration to fade. This can help you decide the difference between a project that's really useful or was just an idea you had that is not necessarily worth your time.

It also depends on how you work. Some people prefer long bouts of work and long breaks, others prefer a little bit each day. It doesnt matter which or both you try, just keep moving forward.

2) Nearly everyone who creates things has way more ideas or unfinished projects or projects that didnt work out than completed projects.

3) finished projects rarely end up the way you expected and wanted in the beginning. The sooner you accept this the sooner you can be flexible throughout the process to bring what's feasible to completion, rather than an idea that hit many snags

4) related to #3 is learn to recognize asymptotic progress. In other words, many projects are never "finished". You'll always have more to add, and that's ok. You can keep adding, but dont let that hinder taking a break or showing version 1 to the world. Recognizing "good enough" is important

</comment><comment><USER40> Find a problem you want to solve for yourself and then build a solution.

I created [https://myhikes.org](https://myhikes.org) as my side project in 2015 because I hated the existing public trail platforms at the time - a lot of things have changed since then, but so has my skill set, data set, the way I write, the way I think about features, the way I weigh pros/cons of features and time.

Don't aim to solve the world's problems or make money with a side project, aim to make your own life easier or more enjoyable in some way. You never know what will come of it later if you continue using, building, and growing your idea.

</comment><comment><USER41> This is a great question and one that often goes unnoticed: I observe my optimal work habits and patterns, instead of seeing them as a drawback, how to turn it advantageous?

If your optimal flow is 2-3 days spurts on mini projects then think of a big project and break it down into these mini-projects. If you can build one power ranger, you can build the mega ranger, just thoughtfully break the tasks into pieces first.

More importantly, you need a topic you are passionate about, and then you can use all your computer knowhow to make tools with that domain as a central focus or backbone. Again, you don't even have to stick with the same toolkit as long as you can break your work into meaningful mini projects.

Celebrate and rejoice when you complete mini projects, and keep your eye on how satisfying it will be to make big projects come perfectly together. If it took many people many days to build the pyramids, it will probably take one person a while to build one. I don't think that's unreasonable, the key is staying motivated. Come to the desert and leave with a pyramid

</comment><comment><USER42> What happens when you play video games?

For me video games are fun and easy to focus on day after day.

I realized that this is because video games have done a very good job of defining a goal --> FTL (my current favorite) == get to the final sector and destroy the rebel flagship. The goal is clear and you 100% know when you're done.

I've learned that I used to be really bad at defining goals. I'd say things like... 'I want to make an XYZ sort of thing'... but that's not a great goal. It's kinda vague... have you 'made' the thing when you put down 10 lines of code as a prototype? When will you be done?

If the goal is unclear I feel --> 1\. like I might be signing up for an everlasting slog 2\. like I'm not really sure how to win

So I find that I need 'delivery' goals --> 'my app is in the app store' or 'my article was published'. When you work for someone else this is the kind of goal they give (when will you ship XYZ) and you probably always make those.

Hope this helps!

<comment><USER43> This is exactly me.

You not just need 'delivery' goals, but small goals as well, like missions in a game. Where you see you are progressing.

Also in videogames you never hit a wall, you never have to fight a boss that impossible to beat at your level. Side projects are more like those pay to win games. Where the first part is easy, but after that, the progress can be slow. You have to get a big reward (for me it is usually scratching my own itch) to make the grinding part work.

</comment></comment><comment><USER44> There is one very simple piece of advice that I have found helps me with this:

finish.

It doesn't matter how small the finish is, but whatever it is, at least get it to a point where you have something finished. If you are writing a book, and you want to switch, finish the outline. If you start a chapter, finish it. If you start an app, have at least a hello world page up.

If you don't feel like working on it now, and a new idea pops up, feel free to start the new idea after you finish. Practice finishing just as much as you have practiced starting.

</comment><comment><USER45> I resigned myself to writing ideas and keeping side projects small but sharing my ideas anyway. Every thing is harder than it looks.

[https://github.com/samsquire/ideas2](https://github.com/samsquire/ideas2)

[https://github.com/samsquire/ideas](https://github.com/samsquire/ideas)

[https://github.com/samsquire/ideas3](https://github.com/samsquire/ideas3)

</comment><comment><USER46> For me the solution was to remove motivation from the equation.

I had to tell myself "this is your job now, you have a part-time job that starts after supper." And then show up for work every day (or every other day).

As long as you keep showing up for work, the work eventually gets done.

I started thinking this way in late 2013 and shipped the 1.0 of my first successful side project about 6 months later.

People who don't ship will tell you that side projects shouldn't feel like work, but you can ignore them. Shipping feels fantastic.

</comment><comment><USER47> Part of why people can't stick to projects is because their way of self- motivating is too critical in nature and the emotional life rightfully pulls out of anything where the ratio of +/\- reinforcement is skewed too much toward abuse and threat.

Rather than turning to self-loathing and criticism you can interpret this resistance because you have not yet figured out how to encourage and motivate yourself.

Find a way to get yourself to not feel under threat of failure and you'll blossom

</comment><comment><USER48> Have you considered the possibility that you may have ADHD-inattentive-type?

There are online tests based on DSM criteria that can show you if it's worth looking deeper into, such as this one:

[https://psychcentral.com/quizzes/adhd- quiz/](https://psychcentral.com/quizzes/adhd-quiz/)

<comment><AUTHOR> I do score quite high (total 44, inattentive scale 19, hyperactivity/impulsivity scale 25), yet I'm not convinced: at work I almost always manage to get things done well and in time, and I'm generally considered accomplished by my peers and managers, though maybe strange and over the top.

<comment><USER48> Yeh. That's a significant finding. Honestly.

People with ADHD can most definitely be productive and generally considered accomplished. They just tend to have put a lot of effort in, their whole lives, in order to get there, and may have developed a lot of cool techniques to get there. Treatment itself is about improving these techniques (and finding helpful medications, the two parts work together.)

<comment><AUTHOR> Thank you very much.

I'm quite scared of medications, tbh, but I'd very much like to explore improving techniques.

<comment><USER48> The stimulant caffeine is a popular alternative (provided you're not overly sensitive to it [it can cause heart palpitations and anxiety], and don't take it too late in the day) — lots of people use it to self-medicate ;)

<comment><AUTHOR> Yes, I used to go really heavy on it. Had to quit it almost entirely, for both heart palpitations and anxiety.

<comment><USER48> Not to harp on about medications, but there are "non-stimulant" medications used to successfully treat ADHD as well, such as Strattera.

On the non-medicine side, techniques like bullet journaling are useful, also having "accountability partners" — friends or groups you report in with each week to check on each other's progress; things like that.

<comment><USER48> Exercise and mindfulness also worth mentioning. Good sleep also a biggie.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER49> I used to be like you.

Back in my early career years, and even before when I was a student, I used to have a lot of cool side projects that would only interest me for so long. I would spend a few hours or days on them, and then throw them out or forget them.

It was ok because I did not care about the project in itself. It was interesting to try new techs, or methods, or just spend some time doing something I loved.

It stopped being ok when something shifted in my mind : I subconsciously decided that _I wanted to stick to a project_. But it was for the wrong reasons. I wanted to make money. I wanted to have a cool startup. I wanted to be able to stop working. Too much Hackernews hype. But since I did not really care about the project itself, I never managed to stick to it.

After years of frustration, I quit wasting my time and took on some other non IT related hobbies.

Two years ago, I picked a side project for the first time in years: it's a cool music theory related website.

[https://www.mamie-note.fr](https://www.mamie-note.fr) in case you're curious.

I've managed to keep working on it (and being interested to do it) since then. It's the longest time I've ever spent on a single project.

Here are the things that are different for me today:

      - I do care about the project in itself: it's the site I wish existed when I started learning music, and the site grows as I'm growing as a musician.
      - I really enjoy the daily process of working on it, I don't fantasize about how great the end result will be in a few years.
      - I don't care about the tech, I care about the topic.
      - I'm turning the site into a business, but making a living with it will be a cool side effect, not the main objective.
      - Since I do have a family now (and we are in lockdown), I have much less time to work on it. It's easier to stay motivated when you spend two or three ours on a project instead of 15 or 20.
      - Working on this project is a hobby, but it's not my only hobby, I take interest in other things, so when I'm bored and don't sweat it and take breaks for some days or weeks.

My two cents.

</comment><comment> _-___________-_ Instead of tools you _might_ need, applications you _think_ about, and experiments, build something that you definitely want (or, even better, need). Find inefficiencies or deficiencies in your day-to-day that you can eliminate or ameliorate.

Another way is to build something that someone you care about wants or needs. Pay attention to how people close to you (especially those that are not engineers themselves) use technology, and notice when there's an opportunity to make it easier/better for them. Many great projects were born this way.

</comment><comment><USER50> It's an explore/exploit thing. You need rewards from both. Your job focuses too much on "exploit" so you end up seeking "explore" rewards from side projects.

You explore an idea, but after you select it, you're staring down the barrel of a whole bunch of "exploit" work to do. You're already burnt out on this reward system from work-work, so it doesn't seem appealing to you. So you do more exploring instead.

My advice is to instead do worldbuilding or some other creative hobby that has only the creative exploration side.

</comment><comment><USER51> I have a similar thing - too easy to generate an idea, too hard to move them forward. Some die after opening a code editor, some half an hour later.

First and foremost - if it is your style, try focusing on short projects - something that can be done in a few hours. But once you decide, make a rule that for 3 hours you stick for it.

For anything longer that one day, I try to find collaborators (otherwise it is impossible). Importantly, they do not even need to touch the same parts of code - it is enough that I get some stimuli from time to time. Even for things that are day long, I try to move checkpoint-by-checkpoint, to have a sense of completion.

...

In general, I really recommend diving in materials on ADHD, especially "Driven to Distraction" [https://www.amazon.com/Driven-Distraction-Revised- Recognizin...](https://www.amazon.com/Driven-Distraction-Revised-Recognizing- Attention/dp/0307743152), this attention-jumping may be a symptom of larger issues.

Another thing that is worth nvestigating - WHY do you quit? Is it like that there are too many ideas? Or maybe being afraid of failure. (Vide perfectionism & procrastination.)

On the other hand, I strongly object to some pieces of advice found in the thread, in the line of "if you cannot sustain attention, it means it is not worth it". Well, it might be true for the neurotypical population, but certainly isn't for AD(H)D folks.

</comment><comment><USER52> After several years of struggling with side projects I found one thing that motivates me: money. I don't even start a project if there is no possibility of some revenue. %99 of ideas got eliminated immediately. Every people have their own motivation though but having side income from a side project even you are sleeping is different thing. I have limited time for side projects. I always think I have one bullet so trying to use it wisely.

<comment><USER53> This is certainly a useful lens through which to help you focus, but I've found that I'm now ONLY motivated to do things because of the possibility of financial upside. Have you encountered the same?

<comment><USER52> Actually speaking yes. I spent a lot of time to think about it. Here is my little thought process to keep my motivation;

Why am I working? Why am I spending my 1/3 of my time with my daily job. Is career real thing or other words is it really necessary to make money? Does it really matter to have high work satisfaction even though you earn little? I am working because of money. Money doesn't bring happiness but it brings freedom. At the end of the day what I need is freedom. It doesn't matter if I have shinny career if I can earn same money with something else. I have limited time and more money to become free. So I need to use my time wisely to get more money to become free eventually. It doesn't matter if I am using shiny programming language, technology or IDE. At the end of the day nobody will give a shit about what I am using. Quickest is the best because I have counted days in my life. I don't have time to learn new things every time I start a new projects. I already know everything I need to make money. Learning is not a goal but it is a reward when I become free.

</comment></comment></comment><comment><USER54> I keep a log for each project and write down the problem I'm trying to solve followed by the idea I think solves it. If I hit a roadblock, I write that down as the new problem. Now I have to solve that before I can pop the stack and get back to the original problem.

On and on and on. I might be building a CI/CD pipeline for a simple web extension cuz I've realized that manual deploys of it are boring and it's keeping me from updating the project. Once that's done I return to the original problem and geez it's annoying to work in this vanilla js project structure. Let me just set up a transpiler and organize the project...

I call it extreme yak shaving, cuz you do things you could never justify in a workplace, but it's my personal time and it's what works to keep me going on side projects.

Better yet by forcing yourself to write down why you're blocked you can self reflect on trends. I learned that when the dev experience gets too rough on a project, I abandon it. So now I'm happy to pause project features to build out dev exp. Very different than how I behave at work, where I guess the paycheck motivates me thru the tough times.

<comment><USER55> Have you considered productizing some of these devops tools?

</comment></comment><comment><USER56> How do you approach planning the projects? Do you just sit and start coding? I can only guess what are the issues are with the information you provided, but I guess you discard your projects because you are not invested in them. People tend to stick to ideas they invested more time and effort.

I think you would attach more value to a project if you plan it first.

Use something to test your idea first. If by meaningful project you mean something that others can use and solve a real life problem, maybe take a look at The Startup Owner's Manual ([https://www.goodreads.com/book/show/13557008-the-startup- own...](https://www.goodreads.com/book/show/13557008-the-startup-owner-s- manual)).

If your idea withstand the first tests and you want to commit to it, describe in general lines what is to be done, describe some general, doable deadlines, maybe use a Kanban board. You should have at least an idea of the scope of the project before you start. Do not think about a finished, polished product. Think about something functional, that is shippable. You can polish it later.

</comment><comment><USER57> Have you tried journaling? It lets you get ideas out (adding or remixing ideas from the previous days), without investing in getting a project up, writing code, etc. A lot of times, for me, I just want to explore an idea and I'm not actually interested in working through it. But if I spend enough days journaling an idea and I'm still interested in it, then I go for it.

The other thing that's helped me is realizing that anything worthwhile is hard. If you want to stick with a project until it's done, you're going to get bored, you're going to run into roadblocks, and you want to cultivate a sense of "this is what I want to do, and that is just a temporary issue that I will work through".

Last thing that's helped me is finding a support group. I use irc, specifically I hang out on irc.darwin.network (shameless plug, I kinda co-run it), there I can chat with people about what I'm working on, they can ask cool questions, etc, keeps the juices flowing and reminds me why a project is worth sticking to.

<comment><USER58> Re your first paragraph: What's funny is that I get almost the same effect by avoiding writing ideas down. I find letting an idea sit and stew in my head to be a good vetting process.

If I forget an idea, that's a feature of the system, not a bug. If an idea survives for a while and I find myself coming back to it often, then after a month of it being an idea I might act on it. At that point the idea is a lot less nebulous and I have a pretty clear idea of where to get started and an idea of where it's going to go in the future.

<comment><USER57> For me, writing a thing down gives me the option to forget it. People are different I suppose.

</comment></comment></comment><comment><USER59> I don't have advice but am looking for some along a similar vain. I've made lots of projects in the past but now not so much and my fiction is that I'm super jaded by which I mean since I have lots of experience I know all the things I want to do are relatively huge projects and it's unrealistic to even start and further even if I was to finish it's unlikely to be successful. Not that every project has to be successful but I can't see investing 1-3 years into it if I don't actually believe it it's likely to do well.

For a small project 1 - 5 days I there's no issue. Though often when I'm finished I look back and think, "If I had spent that time working on something that had more of a future then I'd also have more of a future". Success buys freedom so when I don't pursue something with a future I have only myself to blame for having to go back and "work for the man".

So, how do I get over that jadedness and as Shia Labeouf would say "Just Do It!"

</comment><comment><USER60> The way I deal with this issue is by writing the idea down in as much detail as possible.

I find that the process of writing gets the itch out of my brain and also forces me to go through a planning phase before I decide to commit my time to an implementation.

For example, if I wanted to make a game I'd write down the main idea behind it, what game mechanics I would implement, how I would structure the progression through the game, how it relates to other games, any technical aspects that are relevant, I'd sketch out any visual details like a map, game ui, etc.

I have a long list of semi-developed ideas I stored as notes in Google Keep that has accumulated over the years - business ideas, games, tools, etc. I have written prototypes for some, which was fun.

I find that most ideas need to simmer for a while. I'll often go back to add more details to an idea, because I thought of something new. Those are usually my best ideas, but also the ones that require the most time.

</comment><comment><USER61> I have the same problem.. too many ideas to develop... Shiny new technologies to learn.

What I've done is:

1\. Just don't do programming side projects. Currently my side project is making a couple of bookshelves for my house (Google pipe furniture). They are easy to make, require very little tools, my wife loves them... And miss importantly I have something to show for my efforts. So basically get a hobby not related to programming, where you have to make things, preferentially in service of others.

2\. My other side project is a small prototype to create a startup on that. We have been working on that for 6 months (the longest I've worked on anything) the key, for me, has been have a pair programmer. A junior dev that I can mentor, while we work. I even pay him. I advertised it like an internship. So I'm very committed to that project: pair programming for accountability. Mentoring for social connection. Paying for financial commitment.

</comment><comment><USER62> Yes I have this problem. No I haven't found a fix. One thing I do is keep a trello board of "product ideas". I have a couple hundred. I review them and move the ones I feel are best by various criteria (ease to build, value to others, income potential, etc) to the top of a "I Keep Coming Back to These" list. I only allow myself 5 on this list.

Really, I should just allow myself 1, and focus on that. I'm just so bogged down with day job and family life, I haven't done it. Some days I console myself that I'm doing the right thing keeping a steady well-paying day job and providing for the fam. Other days, I'm ready to toss it all and do my own thing. What I hope will happen is a small break in day job where I can fit in and focus on side gig.

</comment><comment><USER63> I need an end goal with actual people using what I'm making to be really motivated. And having achieved that on some open source projects (one in particular with tons of usage, now deprecated), I need some kind of personal increase in value to hold my interest. Maybe that will change once I'm financially independent but I think focusing on increasing value is a good thing and value can mean different things (doesn't always have to be money but often is -- there is some value from being one of the big contributors on an open source project but, having been there, the value is typically seems to be very low even if you have 1M+ downloads).

That said, deploy, maintenance and support can be a grind. I like the challenge but your experience may vary.

</comment><comment><USER64> I'm the opposite. I love to work on side projects, often getting carried away for several weeks/months until I finish them.

Once they are "complete", I'm loosing interest and get carried away on other things, often times I don't even publish them anywhere.

If someone wants to team up on this, let's chat.

</comment><comment><USER65> You sound like you like motivation.

"Motivation" is the "why?" of what you're starting. If you start a project and exhaust the "why", it's ok to stop there.

Is it curiosity? Is it want to learn something new? Is it want to check out a new technology? You could well answer these questions without actually finishing a project (it the final project itself wasn't the original "why").

If you want some real life "why"s, you could check out one of the many Covid-19 project aggregators. Here is an aggregator of such aggregators: [https://covid19projects.now.sh/](https://covid19projects.now.sh/)

</comment><comment><USER66> What hits me is a sense of meaninglessness.

I can be disciplined enough to stick with something as part of a lifestyle, or whatever I find consistently rewarding, e.g. an exercise regimen and cooking new things. When it comes to creative projects, I'll get to the point of having a rough outline but often just ditch the rest. Particularly with music more-so than writing, the pursuit feels pointless or unimportant, and I always got the sense that the special catalyst with music is people, feeding off the passion of other musicians. I tend now to skip the BS and just go straight to composition since that is the aspect of music that most interests me.

</comment><comment><USER67> (Apologies for being glib, and apologies for not being the exact answer to your question.)

Don't date, don't marry, don't have kids.

I approached my relationship, and later my family, with the same zeal that I approached side projects. As a result, I have very little time for side projects.

What does make a successful side project for me, is approaching it with the goal of learning something new, not finishing it.

Every other year or so I get really into something, but I've only finished one thing that had a very short-term result, It was a simple experiment where I wrote up results instead of trying to have a tool, framework, or product.

</comment><comment><USER68> What if... Not finishing things was the norm?

All of us in the same boat act as if there is something wrong with us such that we can't finish things.

If you layed out every one of the data points on developers side projects, what would the aggregate say?

Would it say that 80% finish their projects through to completion and there are this 20% who just can't ever seem to?

Or, would it say the opposite? That people who actually have completed projects are somewhat rare?

I'd be interested to see. My gut tells me finishing things isn't normal. The economics of it seem to be tilted in the favor of starting and strongly against finishing.

</comment><comment><USER69> I'd suggest you try spending a little more time up front defining the what and why of the project before you start. If you don't define what winning looks like ahead of time it's easy to quit 5 minutes in when you're confronted with making tradeoffs but, don't have any context to under-pin those decisions.

Additionally, don't start with big hairy audacious side-projects. If all you've ever gotten to with one project is two days. Define a project that will teach you something that you think you can finish in three days.

</comment><comment><USER70> You are looking at the situation from the wrong angle. Frameworks and languages are tools you use towards solving a problem. In the same way that mechanics don't spend their days wondering how they will use their wrench but rather what tools they need to fix an engine, you need to focus on a problem that needs fixing. Find a problem in some subjects you like and fix it.

Also, make a plan so you see an end. Doing something without figuring out when you will quit is a sure way toward quitting before you get anything accomplished.

</comment><comment><USER71> The only reason I completed a side project was because I had people that I cared about that wanted my side project done to help them out. In other words, I had social motivation and collaboration. For me, going completely alone on something is much more difficult because its like the tree the forest making no sound (perception) if no one is there to hear it. It doesn't seem to have that connection or impact of meaning unless I have others that care that I have direct interaction with.

</comment><comment><USER72> Having exactly the same issue here, i have been working on many software side projects since a while (for 7 years now) and never launched a successful product. For the most of ideas i built about 30/40 % of the platform (user management, profile, authentication, backend apis, emails, architecture, messaging systems, dockerization, other stuff, blogs ...). For me the real obstacles (and what make me give up) were how to put the key features that make my solution better than others. I feel motivated and very exicited for some time but then it collapsed because i need to digg more for the best solution. Examples: 1-how to add e2e video/messaging encryption to an appointment medical app. 2- how to use sms alternative solution to web/mobile apps for farmers who don't have internet connection without using other third parties. 3- build a learning platform for kids but figure out how to provide the cheapest computer solution (raspberry based maybe) because these kids cannot afford a computer. I learnt a lot from these projects both in technical and business aspects but i still feel the imposter syndrome every time i talk about my ideas or when i see another solution similar to my idea who works just fine. But i'm sure that hard things need more hard work. Thank you for this thread.

</comment><comment><USER73> A few techniques that have worked well for me:

\- Scope the project down to a size where you can achieve it within a week. Launch it and either let it take on a momentum of its own if others are interested in it (which will motivate you to do more work on it more). The initial version of your project could be as simple as a vision statement of what you want to achieve.

\- Have a personal backlog where you can put ideas for other projects you're interested in working on. Resist the temptation to just jump into your latest idea and instead write about it. If its a compelling idea you will return to it. If not let it be a passing idea.

\- Practice personal Kanban where you limit yourself to X number of concurrent projects. Wanting to work on a new project can be good motivation to finish your current one.

\- Team up a collaborator to help keep each engaged, interested, and accountable.

\- Find ways to create artificial deadlines for yourself. That could mean signing up to do a lighting talk at the next meetup, scheduling a meeting to get feedback with an end user or person advising you, etc.

\- Relax and enjoy tinkering for the sake of tinkering. Even if you don't complete a project you're still learning something from the experience along the way and sometimes what you learn is that you like the idea of a particular project more than the reality of what it means to work on it

</comment><comment><USER74> I struggled with this for a long time, I think a lot of us do. I don't know how broadly applicable my story is, but: at a certain point I basically cracked and picked a project and said "I'm going to finish this if it kills me." It was one of the larger-ish projects that I'd made a bit of progress on and put aside. The project became an exercise in finishing things, which helped motivate me through the times when I wasn't really interested in the project itself.

It took me longer than I care to think about to complete it. I think by the end I was pretty clear with myself that I wasn't really that interested in the project itself anymore; the point was to learn to finish something.

The result is here:

[https://github.com/zenhack/haskell-capnp](https://github.com/zenhack/haskell- capnp)

Somehow this actually worked, and I've found myself not having that much trouble sticking with projects when I decide I want to build something. Most of my 2019 hacking was on a new programming language, which is "close" to being ready to announce (the code is up there if you look for it, but I haven't been too loud about it since I don't know what I'd tell someone if they showed up and wanted to help), though Sandstorm got active again and that's diverted some of my time. ...and I've been hacking on Sandstorm pretty consistently since.

Keeping myself organized and on track is still a struggle, but something shifted and sticking with something long term doesn't seem as hard.

</comment><comment><USER75> I found my way out.

The thing I had to do is to find some _themes_ that I am idealistic about and stick to those. The project is just a mode of exploring the theme, which means that each project and my skillset grows as needed to accommodate. The projects you are describing are completely non-thematic and are just bundles of features, so of course there's no structure to them, no reason to keep going and seeing what's next. And you are probably not money-and-sales-motivated, which is the thing that drives a lot of obvious business ventures.

The first step in finding the theme is in "knowing thyself", of course - strengths, weaknesses, inclinations. Write and rewrite the set of things about yourself that is maximally coherent and self-reinforcing. Then drive down that road as far as you can go: What types of projects does that support? Gradually you'll hit on a common theme, and then you can really start building.

Another way to force this along is this art advice: "Draw the same thing every day." This is a rather crushing challenge to take on, for no matter the subject matter, you'll tire of it, but it quickly brings out your inclinations and therefore the themes you want to work with.

</comment><comment><USER76> I've had lots of ideas like that, things I'd like to do which I never get around to. The one I did go through with and still keep working on it on and off is the one that had a connection to my job.

I worked on a very concurrent system and thought maybe STM would be a nice fit for it. I found the concept of STMs very interesting. And I noticed that, although there were many implementations for .NET, all were one-off projects, not maintained, and in my opinion not very nice to use. So I ended up writing one myself.

I guess that sweet spot for me was having a problem that I dealt with on a daily basis, which gave me the drive and a clear picture of what I'm trying to achieve, and the fact that it was a fun challenge to implement and a learning experience related to a concept that intrigued me. The other ideas I had would mostly have just that second part - they're fun, challenging, but not really solving something I deal with too often.

So, I don't have much experience, I don't have many side projects, but for what it's worth, my advice is to try to find something in your day-to-day which bugs you, and for which you have some interesting idea that you'd like to experiment with.

</comment><comment><USER77> It's great to see so many people sharing the same challenge I have as well. As developers, we always want to build things. Things we find interesting. Maybe we "finish" some of them. Maybe we don't ever finish something because there's always improvements to be made.

"Meaningful progress" also is hard to define. One day you feel it's "save humanity level" meaningful. The other day is just lines of codes that don't work.

Some companies like JotForm evolved from a side project, but not all side project will become an actual business.

I think the reason why we even call side project a side project is because we have options.

It's ok to fail. It's okay to explore, experiment, and create. As long as it doesn't deeply offend your core values, side projects are supposed to be fun.

If it blossom into something that you can't ignore, then you will come back to it no matter what.

I wrote an article back in the days when I documented why I couldn't start a side project here: [https://medium.com/swlh/this-is-why-you-will-never-start- tha...](https://medium.com/swlh/this-is-why-you-will-never-start-that-side- project-dd5d7df9cae5)

</comment><comment><USER78> I've been in the same boat my whole life. But I'm currently working on a side project, and I've made substantial progress on it.

It arose as a natural fruit of a daily writing practice I instituted. That writing practice itself came out of a couple of things:

1\. I owned my desire to create something. Instead of guilt tripping myself for not writing, imposing the "If you only had your shit together like everyone else, you'd etc etc etc" line of thinking on my behavior, I honestly looked at myself and said, "You know, this bothers you not because you're a bad person who can't get anything done, but because you want to write. If you decided not to write anything, you would still be a perfectly fine person and you could live a happy life."

2\. I let go of the creative process as a way of achieving outcomes I wanted, and embraced it as a way to happily spend my free time and make things that satisfied my own standards.

A couple of months into my daily writing practice, it somehow mutated into a programming project. My programming still operates within the conceptual loop of my writing, but I suppose it could have turned into anything else.

My advice would be to reflect on what you're doing moment to moment and build a narrative around it. Sometimes it can be invaluable to just write down what happened: "Well, I was working on this roguelike in Rust, but then I saw some blog posts about Common Lisp and decided I'd write a graphical solitaire game in CL." And from there you can understand _why_ it is you are doing what you are doing, which will probably be more effective than castigating yourself for doing what you're doing.

</comment><comment><USER79> Two things have helped me with that:

* I started blogging about my projects. And I try to keep a pace of roughly 1 blog post every 2 months. * I have a mix of on-going long term and short term projects.

(I've also submitted talk proposal for long term project for a conference even though I had barely started that project. It got accepted. The fear of a public failure was _very_ motivating! I don't recommend it.)

Forcing myself to write something every 2 months automatically results in the need to do some short term stuff as well. 2 months ago I made simple how-to video about how to solder with enamel magnet wire and all the tools in my home electronics lab.

This weekend, I spend hours on disassembling, photographing, and measuring the signals in a smoke detector with an expired battery. (Writeup WIP.)

These are all things that only take a day or two to complete.

Meanwhile, I have a project ongoing to convert an FPGA-based thin client into a retrogaming machine. I work on it on and off. Sometimes it's idle for months, and then I pick it up again for a few days. I don't know if I'll ever complete this project, but it's all hobby stuff anyway, so there's no pressure.

</comment><comment><USER80> It's normal, just count the comments on this post. You have learned a lot on this "never finished" projects. Thats nice. Sometime along this road jou find the right project and make it work. Keep the projects (or parts of it) small, make a working mock-up fast and keep expanding it. I just finished a project I started 10 years ago and havent worked on it for several years. That feels really good.

</comment><comment><USER81> You can approach your problem from the other end. How can you best choose side projects, so that the ones you start are the ones with more chances to get to a satisfying conclusion.

I wrote about it this week on my blog: [https://filipesilva.me/blog/how-to- choose-your-next-side-pro...](https://filipesilva.me/blog/how-to-choose-your- next-side-project/)

</comment><comment><USER82> As many I experiment the same with __some __projects. Though I 've been working on a side project for 7 years now!

The difference? It's purposeful to me and a long challenge for be and the foundation that needs it. Because people depend on the work I do, I must do it. Because these people can't do it, I must do it. Because the purpose they serve is something that means a lot to me too, I want to do it.

</comment><comment><USER83> I've found keeping a spreadsheet of a lot of tasks and how they're related helps. So say you have 3 projects, all with varying types of task. I would make the spreadsheet as follows:

Due Date, Goal Date, Project (or class if student), Assignment, Status.

Due date is definitively when I need to achieve it by (this can be artificial if you want). The goal date can change as my day/week gets hectic so I adjust according to the miscellaneous things that are impossible to account for. Project is like the Grouping of all tasks below it. Then the tasks are the incremental things that need to be done in order for the entire goal to come to fruition. Status tells me if it's completed, partly, or not.

This has helped me because if I'm feeling very committal one day, I can just crush a lot of stuff out. Then I can go "Well looks like I have a week before I have to get that done" so then I can freely budget fun time. It keeps me on track and helps me with balancing pleasure and work.

I've recently started tracking my hours too. It's weird but I think it helps with showing you how much you screw around when you work from home.

</comment><comment><USER84> I think it would really help me to have a partner in any project I do. Someone to hold me accountable and to be excited about breakthroughs.

It's just so hard for me to motivate myself. I used to think this was a failing of self discipline. But working with people makes things fun.

Look at the show "the office". They thought of the most boring, unfulfilling type of work but it actually looks fun to work there. It's all about the people.

<comment><USER23> What projects are you working on?

</comment></comment><comment><USER85> Since so many people are sharing their story, I will share mine. 5-6 years ago, I started working on Typesense ([https://github.com/typesense/typesense](https://github.com/typesense/typesense)), an open source, typo tolerant search engine designed for speed and developer productivity.

In the past 5 years, my journey has brought me through my wedding, the birth of my first child, losing a loved family member, a job switch and so on. Nevertheless, it has been really great seeing the project gain traction and motivate me to keep working on it through the highs and lows. Everybody differs, but I think for me the following 2 things kept me going:

a) Pick a project that you are sufficiently motived.

b) Don't set deadlines but have a plan to work on the project everyday. One some days it will be hours, on other days it will be just thinking about a problem at the back of your mind for a few minutes, but the idea is to keeping at it.

Now nearly 5 years later, I'm still not done yet but I'm amazed how much I've achieved by just showing up every single day.

</comment><comment><USER86> I find it much easier if I pick projects that I actually could benefit from. For example I started working on a note taking app a little while ago, because I couldn't find one that I liked. I know I will probably not get a complete return on my time investment, but it keeps me motivated to finish since I know I can make it exactly how I want and end up with a product perfectly suited to me.

<comment><USER87> That sounds obvious but goes completely unnoticed, and it's very smart. A good part of what keeps me motivated to work on something is believing in the solution. This line gets a little blurry when it comes to games, but the only way for me to mitigate that is to make games I would play.

</comment></comment><comment><USER88> Maybe try to stone soup yourself. Start a project where the bare bones can be done in a couple of days but the possible features to add are unlimited. For me, there's this implicit calculation of opportunity cost. Like, if I work on this, I can't work on all these other interesting things. But if you switch your mindset to "working on this will help me work on all these other things," that opportunity cost disappears.

For example, just the blockchain data structure (not a full cryptocurrency, just the data structure) is relatively small and doable. Maybe a tiny perceptron or autoencoder. But there's a lot of opportunity to make something with even such small toys.

And don't be afraid of making something that isn't a "true" or "real" whatever. Yeah, it's not a "true" blockchain but it was toy to test your chops on.

Also, whatever you do end up doing, regardless of whether you finish it or not, write about it. Just a paragraph or two of what you were trying to do, how far you got, what made you lose interest. Informally as possible.

</comment><comment><USER89> I understand this isn't exactly what you're asking for as it seems like you burn out on the idea before you even get to the implementation but I've found that for coding projects, keeping my code clean really helps to motivate me to stick with the project.

If I'm building something and the code gets messy I increasingly feel frustrated while working with it which turns me off from working on it - somewhat of a negative feedback loop, so when I start to feel like the code is a hassle to work with, I switch gears from writing features to refactoring the existing code-base.

This gives me a nice change of pace, lets me think a little bit differently than simply "add features", and when the refactoring is done I have a much more thorough understanding of the code I've already written and what needs still needs to be done.

It seems like a pretty simple and obvious suggestion but I can't tell you the number of times I've let a personal project become unmanageable just because I've wanted to keep adding features which at least for me leads to burnout.

</comment><comment><USER90> This was me big time. You sound like you have more experience than I did at the time, but what finally made it click for me was taking CS50 on EdX. Not that you should take it, but that it exposed what was holding me back. Any challenge I made for myself I would end up saying 'screw it' when it got challenging because internally I'd think that maybe my idea was messed up somehow. CS50, which I only made it thru 5 assignments, exposed me to having to stick thru a problem, possibly for days until I got it. I felt pressured to complete them because I saw that my classmates were completing them and that told me it was doable. After that, something in my head changed and for the first time I was able to complete my own projects and enjoy that feeling when you build something you came up with yourself. In other words try to get experience sticking thru challenges. Try leetcode or hackerrank, those sites have advanced problems that might crack that cieling for you if your problem is the same as mine was. Just my experience.

</comment><comment><USER91> In my experience, switching from task to task and not being able to maintain focus is a minor form of burnout.

It takes energy to stay focused for a long period of time.

My advice: take a few months off. Let your mind wander. If you come up with an idea, let it go if you can. If you come across an idea you can't let go of, even after multiple days or weeks, then maybe you're ready to commit to it!

</comment><comment><USER92> What works for me is a step I find most people like to skip and that's planning.

As a number of other folks have said, if you have small things then you're more likely to get them done. Often though you'll need a bunch of these smaller things to make a product that someone might be worth paying for.

So what I do is I plan the project out into modules or blocks of functions that take a few days at most. I know for myself I take great pleasure in crossing things off lists (this is literal, I write things down in a TODO and physically cross them out). To me it's satisfying to see the list get smaller.

Seeing the list get smaller, and knowing there is an end, keeps me motivated. Now I still have moments where it can feel like a grind, the worst seems to be when something is just over half done. That's when it's the most important for me to tell myself, well I'll just work on this one thing and I grind through it. Then when I'm about 80% there, that's when a lot of motivation comes back to finish it.

Hope this helps.

</comment><comment><USER93> This happens when you know little and yet you aren't aware of how little you know.

As a kid I self-learned photoshop and always struggled with coming up with projects to do with my knowledge.

Little did I know photoshop is a _tool_ , not an end.

Web development is a _tool_. If all you know is how to hit with a hammer, it is pretty hard to make good use of it. You need to learn how to build a house, then your knowledge of a hammer will become a useful _tool_ for accomplishing a well defined task.

Knowing how to build a house is much more difficult and isn't a 'side project' for most people. Hence the solution to your problem is realizing how little you know, how much it would actually take to create anything remotely useful, and moving on to learning something easier that'd have an actual impact in your daily life, such as exercise, a new hobby that'd foster new meaningful relationships, etc.

One last thing - if your motivation for a side project is money, you're kidding yourself - just go enjoy your life :)

</comment><comment><USER94> I write a blog ([https://nichesaas.co](https://nichesaas.co)) about ideas for SaaS Products. The reason I started the blog is because so many developers I know struggle to come up with _good_ ideas and stick with them.

Some things that have helped me and my friends in the past:

* Set yourself achievable goals or milestones so you feel like you are making progress

* Accountability is also a great way to stick with something. Tell your colleague you'll send them a link so they can check it out and then commit to putting it up.

* Choose something you're interested in.

Often the hardest part is starting. One trick I used in the past was put a syntax error in my code. I would also leave a comment there with a small task just to get into it.

        e.g // implement GetUser()

That way when I sat down there was a small task to complete to get my program running and before I knew it, I'd been hacking away for a couple hours.

</comment><comment><USER95> Get the stupidest thing done and finished. I started my compiler with waay too much ambition. I planned out a Hindley Milner type system but with row polymorphism. I planned out the entire syntax, records and all. But I didn't actually have anything done. I spent so much time trying to think about how to implement x feature or y feature because I thought I should get it all done at once. It took me maybe a year to figure out that I should just get the stupidest thing working: arithmetic from parsing to code gen. I had resisted this because frankly there's a million tutorials online about making a calculator compiler. But who cares? It doesn't have to be original. It needs to be done.

Also only learn one new thing at a time. Don't make a side project where you're learning to write a compiler in a language that's new to you. That's two new topics and therefore infinitely harder.

<comment><USER96> The unpredictable schedule of a personal project means that you can't have unfinished work over long periods of time. You have 2 hours today. Get the smallest thing done to satisfy your goals for today no matter what it takes. You can always do it better in the future because there is no boss that interrupts you and tells you to work on feature X.

</comment></comment><comment><USER97> I am fortunate that I can think of ideas pretty quickly but I get overwhelmed with what tech to use. If you can just standardize on a platform you know, set your ego aside and use that. You can always iterate a working project but you can't do anything with unfinished work.

If you want to learn new, shiny tech, do small proof of concept projects and consider if they bring any value to what you've already built with what you already know.

Aside from that... you just have to do the work!

A book I've really enjoyed for my motivation across not only work and side project but also life in general is The Obstacle is the Way by Ryan Holiday: [https://www.amazon.com/Obstacle-Way-Timeless-Turning- Triumph...](https://www.amazon.com/Obstacle-Way-Timeless-Turning-Triumph- ebook/dp/B00G3L1B8K/ref=sr_1_2?dchild=1&keywords=obstacle&qid=1586190747&sr=8-2)

</comment><comment><USER98> I have this and it's caused a great deal of stress in my personal life _and_ work life. Basically I get excited by the idea of a new thing or project, but within a week or less I am totally and completed bored by it. There are very few times I've managed to keep continuously working on the same thing for a long time

</comment><comment><USER99> Instead of thinking I want to make this then immediately coding I would take a step back and write/design what you are about to make for a couple of sit down sessions. Writing and design work are much easier to throw away and start over with than code. When you do start to code try to write the bare minimum of code which lets you play with your tool. Keep a running list of ideas you have as you are making the project. These help keep the motor running when you want to stop later on. Also always keep a document tracking where you were when you put the project down. What problems were you fixing? What is up next? Even if you leave a project for a couple of months having a context building document, an inspiration list, and design documents should be enough to help you pick the project back up. Also if you never finish that's totally fine. It's a process.

</comment><comment><USER100> Do you need to stick with it?

Side projects are a good way to harness raw energy to learn a lot of things hands-on in a rapid amount of time. But it also might be a good thing to not continue to venture deeply down a path just because you have started something.

I have multiple personal experiences where I have tried my best to develop my side project (or part-time business) into a full-time business - with less than stellar results. Yes, I have built a tool or service! Yes, it works and provides value! Yes, people will even pay for it! But can it pay all the bills? Is it worth the stress? Is it even the right tangent to be on, as a business?

In addition you have financial costs and there's can be a massive opportunity cost (years of effort) to "sticking with it". Holding your cards when you naturally feel like folding may not be worth it either and it often takes years to find that out.

</comment><comment><USER101> Throw some extrinsic motivation into the mix. Intrinsic motivation is great of course, but it's fickle. Your internal emotional state changes like the wind depending on what's going on in your life, what time of day it is, your mood, and even what you've eaten.

Extrinsic motivation is usually more fixed and reliable. It's what drives much of human productivity, and is responsible for the major miracle that is billions of people waking up and going to work every day to do things they may not even enjoy.

Some common sources of extrinsic motivation include obligation to people (a boss, a partner, an audience, customers, users), social consequences (shame, embarrassment, letting others down), and monetary consequences (getting fired, losing a bet, etc.). On a more positive note, there's also encouragement from people, social rewards, and monetary rewards.

</comment><comment><USER102> Do you have the determination to read all those answers and identify the true ones? How do you know which ones are true? Finishing projects is the natural state of mind. The reason why you don't finish is the idea that is most repulsive to you, the idea that you try to avoid the strongest.

On the other hand, a comment can also be repulsive because the idea is really bad. How do you know the difference?

That said, my advice to you is: _pick a customer_. Why would _you_ write a graphical solitaire game but for the joy of programming. However, that joy doesn't need a target, there is no need to finish.

If you write something for somebody else, you are out of the loop of questioning what you like best. Then you are free to pursue that goal without being distracted by the whims of your desires.

When you choose your customer and the project, maintain the basics, especially: pick an achievable goal.

</comment><comment><USER103> 1\. I personally find it easier to work on things I'm passionate about. So I think you need some kind of motivation to keep you going. It could be that you want to show it to your friends, or it could be you dream the possibility of turning it into a business.

2\. You mentioned that you'd like to learn a lot more on languages and frameworks. Presumably you need to actually do something relatively substantial with the language/framework to learn it to a reasonable level? So for me personally some of my personal project I did were purely for learning. I think that's another motivation that can keep you going.

3\. You talk about finishing project. I don't know if any project can be "finished". So I think it's okay to recognize that you want to leave a project in a particular state and move on and not feel too bad about it.

</comment><comment><USER104> The best thing that you can do to give a project legs is to get other people involved. Even if you don't have someone who can work on coding with you, just sharing it and enrolling other people in your vision for a project is the number one way to give you the motivation to continue working on it.

<comment><USER28> This is true, the feeling that someone is depending on your work can give you the necessary boost to actually finish, or at least reach a polished enough version.

</comment></comment><comment><USER105> There's a benefit to finishing things, but there's also a benefit in quitting when you're bored.

You don't need to finish a frontend for it if you get bored halfway through. Hell, you don't even need to finish the entire app if you think of something else to do with Haskell. You'll have learned something from the todo app even though you didn't finish. And pushing through might have just put you off of the entire thing.

That being said, I do think there is value to actually finishing things. It will allow you to learn about the entire process.

I'm developing a Godot game now. I'm done with the logic of the game, but I'm pushing through to publish it on an app store. Just to have gone through the entire cycle of 'polishing for an app store' even though the actual development was my main interest.

</comment><comment><USER106> Hard deadlines. 48 hour game jams are great. Take Friday off from work, make a game on the weekend. If you miss the deadline on Sunday, you _failed the game jam._

For me there is usually a point about 24 hours in where it seems like a hopeless amount of work, that I'll never finish. However, I push through, and keep working, ruthlessly prioritize, cut every feature I don't absolutely need, and finish making the game.

The game itself is not a side project that I stuck with, but the experience helps. Having the experience of "pushing through" and finishing a project with a specific goal is the real takeaway. Next time I'm stuck on a personal project, I can remember pushing through the game jam project and getting it done.

And finally… I only finish something like 5% of my projects, maybe. Don't try to finish a project just because you started it.

</comment><comment><USER107> I was in your situation a few years ago.

I "found my way out" when I created a project that I really cared about. It scratched multiple itches and I was constantly finding new ways to improve the application. It got the the point where I had to create a backlog for improvements I wanted to see.

My mind started to wander and I started thinking about my newfound organizational skills. I started the high-level design for a tool to organize my scatterbrain. Thankfully, I decided to just keep it in my backlog and continue on what I was working on.

td;dr: 1\. Add projects to backlog 2\. Weigh benefits of each, rank them 3\. Work on #1 project 4\. (Optional) Set a deadline to re-evaluate priorities 5\. When new ideas pop up, add to backlog. Fill in as much detail as possible. The goal is to do a braindump and get back to what you were previously working on.

</comment><comment><USER108> Why stick with it? My view is that the main purpose of side projects (for me anyhow) is to learn and improve my skills and to open up to new ways of approaching things. But even if your goal is to work it into a side business, I still would argue that sometimes sticking to the same side project too long can be a bad choice. I have a fried who worked on the same side project for 7 years and I think it stifled his creativity because he was always focused on the same narrow set of problems associated with his project.

I am simply suggesting it is possible to go too far in sticking to the same side project. For me I usually consider a side project has run it's course if I have learned as much as I needed to on it and then I try to move on to something completely different.

</comment><comment><USER109> I have the exactly same situation and I also made a half ass engine for a 2d rpg with a map editor.

I don't know what's happening, but whenever I'm pushed to do something, either by my parents or my boss or anything urgent (say I have an interview in a week), I'm suoer focused and can get tremendous amount of work done in a short period of time.

However, whenever I set up a target for myself, out of curiosity or interest, anything non urgent, I'll just do a half asd work for maybe a few weeks and then never get deeo enough to learn or show anything important.

This really summaries my life since day 1. My dream is to have someone pointing a gun at head and say "learn this or die" and I'm sure I can finish it nicely and quickly. But in real life I don't have this kind of luxuries...

<comment><USER96> This probably has something to do with human nature. People want to be useful to others and feel like they are a necessary part of society. This is a pretty common argument against UBI. A lot of people actually want to work at their current job.

<comment><USER109> Yeah I totally agree. I need to be useful to other people to feel happy and maybe I should be OK with that...

</comment></comment></comment><comment><USER110> Definitely not an expert in this but I have found that the bigger the aim, greater the tendency to nope out of it (for me).

So one way of going around this is keeping short, simple, achievable-today goals.

Example Target: I need to develop a CMS.

New target: Need to create that one method which will do X and return boolean value.

Once that is done, on to next.

</comment><comment><USER111> I think it's totally OK, normal and beneficial to want to experiment with different applications.

The main issue is after a few years you may feel like you have nothing to show for it and the best solution to that feeling that I've found is to document what you've learnt in a blog post. Over time you'll end up with a large personal knowledge base on which you can draw on when you want to and actally can finish a complex project. You'll also attract the right kind of people that can help you by putting your thoughts down in writing.

The idea is you want to slowly build yourself to be the kind of person that can finish a complex project in a weekend and the best way to do that is to constantly be in the high payoff space you get when you're learning something totally new.

</comment><comment><USER112> Yes!!! My way out was to not focus on the product, but focus on my personal benefit. I asked myself "what do I want to learn?" not "what do I want to build?".

Recently, I completed a Shopify plugin ([https://apps.shopify.com/simple- pages](https://apps.shopify.com/simple-pages)). I wanted to learn more about the platform. I researched it a bit and found a problem that I thought I could solve. Each step along the way (setup, build, approval) was painful. But each time I focused on my personal benefit. For example, when the app got rejected a few times, I convinced myself that I was learning about what Shopify was looking for in plugin vendors. This kept me going until I saw it through to the end.

</comment><comment><USER113> This is definitely a common issue everyone struggles with. I've noticed a lot of it stems from constantly changing my mind and self doubt during the dev process (like you mentioned, you start off building a roguelike, switch over to a solitar card game, switch over to a isomorphic strategy game).

Something that helped me a lot is first spending more time than I think I need figuring out what I want to build on a very high and broad level, and not just diving into coding. Once I figure out what to build I need to have the discipline not to change what I have decided to build. Some implementation details might change or some game mechanics might be tweaked, but on a high level (am I building a roguelike or solitar type) can't be changed once I start.

</comment><comment><USER114> I need to say I have exactly like you. I was unable to finish anything though many years. Than 1,5 year ago finally everything changed. This is by small but significan tchange. I choose for myself subject that is big enough that a lot of experimentation can fall under it and specific enough that all experiments have common denominator. Single guiding idea. For me this was enabling my father to create application (emotional importance! we are all animals after all. btw. he didn't care. I cared.). Since then I'm experimenting with new stuff and doing the thing that interest me but this theme is always there.

I'm doing tests of different stuff, writing prototypes, all good stuff. First there was more strategy and later there is more tactical planning and execution but I still more do what I feel I want to do right now than follow so roadmap or something. I sit down and think what I want to do right now and I write myself one post-it with tasks to do, stick it to laptop next to the touch pad. Than I do this fully or partially and than new post-it. I think that my mind is telling me the place of maximum development for my level of skills and I keep faith that this path will take me to some destination that is original.

After 1,5 year and 3 throw away partially working prototypes I have something that is quite cool I have something like creator to generate application for production systems. I discovered my own cool frontend architecture. Thinking about everything from first principle and go to place of interest giving really cool results in retrospect.

No I'm a bit forcing myself with last 2 post-its because I have company that want to use this system and I need to finish details that I didn't care about to do because I was going around it. But now when I see it almost finished and useful somehow it goes easier.

Soul of the explorer is a great gift, no need to change it.

Generally for me 30 yo it was mark of stopping being my own enemy and started things that I always wanted. To this time I was just doing this random stupid stuff and thought that it will all fall together. (Disclaimer: It did).

</comment><comment><USER115> I struggle with these tendencies too. For me, I think it usually stems from being interested in the _product_ not the _process_ \--that is, if I could snap my fingers and immediately produce what it is I was envisioning (even though that initial vision is usually fuzzy) I'd do it.

I think people who can stick with things long-term enjoy the _process_ of what they're doing at least on some level. What enables them to stick with something is not the goal post, but the _activity itself_. They're motivated to spend x hours a day building a roguelike not only because they're driven by the vision of what they're going to produce, but because they genuinely have tons of fun and get tons of satisfaction from the _activity_ of writing a roguelike and solving the problems that arise in that domain.

Personally, I've found that this love and enjoyment of process is usually an acquired thing. It's just like going to the gym. Once you make it a habit it becomes easier and easier and you become so dependent on the rhythm and little boosts you get from going to the gym that your dream body or whatever initially got you in there pretty much becomes irrelevant—it morphs into an activity that's fundamental to your way of life, you _need_ to do it, you become dependent on it.

I've found that sticking to intellectual pursuits long-term is analogous to going to the gym. If you force yourself to be consistent and to show up every day and commit some time toward your project, you'll soon come to love the process and it'll be much easier to see it through to the end.

It's incredibly hard but really important to resist the idea that you can bring your grand visions into fruition within a short span of time--it just doesn't happen, and it's these sorts of fantastic expectations that lead to eventual disinterest and burn out. If you're constantly chasing the finish line and fire up all cylinders to get there as fast as possible you'll never make it, but if you run for the joy of running and do so consistently you're guaranteed to get there eventually (the tortoise and the hare).

<comment><USER96> What you have described is just plain old discipline. I think the reason why side projects don't result in discipline is that they are just something you do when you have time for it. Work usually has a fixed schedule and any variable events are scheduled around work. Side projects tend to get disturbed by variable events and inevitably are delayed.

</comment></comment><comment><USER116> For me I think I just learned to stop being hard on myself for not finishing. They're side projects, you don't owe anything to anyone. I've also found that as time has gone on, certain side projects have remained compelling to me even after getting burned out on them the first time. Some of them I've eventually gotten back to, gave up on again, and then gotten back to. Before long it becomes clear that it's not that I'm perpetually undisciplined and lack follow-through, it's more that I've made slow and steady progress on those projects over the years.

Only other advice I can give is that when picking a side project, find something where the process is as enjoyable as the outcome.

</comment><comment><USER117> For me the best way to stay focused on any given project is to find clients for it. Even if it's just a handful. If you know that there are people out there willing to pay for it, even if it's ramen money, you have all the motivation you will ever need.

</comment><comment><USER118> Keep an idea log and assess it weekly. I have a trello Ideas board with the columns: \- Concepts (stream of conciousness) \- Promising (have given it some thought, and could be interesting) \- Validated (have validated it in some way) \- Building \- Shut down

<comment><USER119> I do exactly this!

</comment></comment><comment><USER120> My friend said if you are having a hard time finishing a book, it's probably not a book for you.

Same thing applies. You gave up on these because its not right for you. Once you find someone worth spending your time on you'll stick with it. Keep looking.

</comment><comment><USER121> This is how I was with side projects for a long time. I'd get excited on a project, work on it for several months, then be lose interest and stop working on it.

I changed my approach after reaching The One Thing. It helped me set a goal (work on it until July no matter what, and if I don't get any sales, it's time to move on) and i've been working on it 2-4hrs a day.

Every since, September 2019 I've been working on (For A Piece)[[https://www.forapiece.com/?ref=hackernews](https://www.forapiece.com/?ref=hackernews)]. This has been the longest i've worked on a side project and I'm really proud of that.

</comment><comment><USER122> You know, I went through this a while ago. As a side idea, I always wanted 1) an online double-entry accounting system (so i could update my bookkeeping from anywhere in the world). And 2) I needed a self-hosted site where I could put anything from my kid's photos to my tax records.. ONE PLACE to look for anything. You can see my site here: [http://parallax.dns- cloud.net/praetorian/](http://parallax.dns-cloud.net/praetorian/)

My point is, go slowly. Just like a game you enjoy playing but get fed up after too long, put it aside; knowing you'll come back in a while with a renewed drive :) Cheers!

</comment><comment><USER123> I would suppose this is a very common struggle among IT professionals. A few things that have helped me, some of them already mentioned in this thread:

\- simply don't do it; prioritize more important ideas.

\- start smaller - some ideas are just too ambitious, try to come up with the smallest end product that is still useful.

\- don't talk about it - just by talking about what you are planning to build gets you a small dopamine release, discouraging you from finishing the project.

\- scratch your own itch - create something that will help solving a problem you face frequently.

\- get other people involved - invite other people to collaborate building or just using it so you have people to hold you accountable.

</comment><comment><USER124> To quote the great Jean Luc Picard, pick "one impossible thing at a time".

I also find myself going in a lot of directions, and I've found that picking an idea and sticking with it, until it fails or works, is an achievement in itself.

</comment><comment><USER125> I think you need to ask yourself why you feel like you can't complete something. When I hear you say this yourself, I feel like you may struggle with too many good ideas or a lack of discipline to see them through.

For me, my problem is I have too many ideas, and sometime the fun of a new idea outweighs finishing an existing idea. This is where I need to rely on my discipline to carry me through to completion.

Most of my projects don't ever go past 2-3 months, but the one that is now, well it's requiring my discipline so that I can finish it. That isn't to say I just work on that, I have days I do other things to give me a break as well.

</comment><comment><USER126> Ha, okay, just for some light-hearted context: it took me several decades of trying so many projects to finally find one and stick with it: web development. Now I'm a gainfully employed web developer and DevOps engineer, and a great load has been lifted off me. I am 15 years behind some of my peers but I no longer stress about finding that one project I'm gonna stick with.

So yeah, I've found my way out and here's my advice: it's a numbers game. Keep trying things. Even if you try to make a roguelike for 5 minutes and move on, that's a valuable lesson. Now try 100 more things and you might stick with 3 or 4.

</comment><comment><USER127> There's a lot of advice saying "don't talk about your side project".

I used to believe this whole-heartedly, but now I believe you should actually talk about the project somewhat.

If you don't talk about your project to anyone, the project dies with you. If you talk about the progress you've made, you can get people excited and that excitement can motivate you and hold you accountable (as they'll remember what you've done so far).

I guess the take away is to talk about side project progress, to build excitement and motivation. Don't talk to much about plans, as you are robbing your future self of gratification.

</comment><comment><USER128> I had a similar problem until I knew I had to work on a start-up and pick a market to go help. It took me ~2 years to choose that market but I haven't looked back (crypto developer tools).

Look back, not forward.

Take all the things you have spent the past 5-10 years being interested about. For me, it was coding, programming languages, developer tools, design & minimalism, products, B2B, mathematics, economics, investing, productivity. Crypto dev tools is the intersection of those - a new field allowing me to keep doing the things I'm already provably interested in rather than making bets about the future.

</comment><comment><USER129> I was torn between making a game, or making something to aid my musical endeavors.

I liked the idea of making a game, but as an adult I don't get to play that much. When I do, I play older games that stoke my nostalgia (JRPGs).

I play in an active punk band, and am a self admitted pedal addict.

I decided to go with music, because that's what I spend most of my passion time doing. Currently working on a really cool music related side project and couldn't be happier.

Also, I think scope has a big part to play. A video game is a huge endeavor that could take 5+ years developing solo, and most of my audio programming ideas might take 2+ weeks.

</comment><comment><USER130> The only personal projects I've ever done that I stuck with were, unsurprisingly, the ones I dog-fooded.

In other words, I worked on them and developed them to the point of usefulness because I actually needed to make use of them.

</comment><comment><USER131> It's pretty normal. Figure out first what you want from each side project. If your goal is to learn or play around with new "X" then it's fine to half-ass it, build the fun parts and then never look at it again. If you want to try and build a business and make money on the side then this is usually the time to not try out new "X" and instead stick to boring tech you know well.

Edit: for practical tips on keeping some momentum, just start with a tiny amount each day, like just 30-40 minutes after work or before. The next week you can add a little more ect.

</comment><comment><USER132> Make a list of things you want to do but don't start it. Remove them when you lose interest. If anything stays it might be a goer. You will never have time to do everything.

Also, think about what you really want to achieve. When you think "I'll make a roguelike in X!" do you actually want to make something you or other people want to play? Or do you really want to just have a cursory understanding of how a roguelike works? Or to get a slight familiarity with language X? Do the initial research without committing too much to it and see if you maintain interest.

</comment><comment><USER133> Do it with someone else. You're then not just accountable to yourself.

</comment><comment><USER134> I have a graveyard filled to the brim with side projects, and just ONE project that I keep coming back to (I have been working on it for 20 years). Its getting to the point where I do fewer side projects because I understand there is only one that is worth working on. In the past decade, I only had two smaller side projects.

The secret for me is to work on the hardest, most interesting problems. This is not good business advice - mind that. But you are probably doing side projects to get away from the boredom of the thing that actually earns you money.

</comment><comment><USER135> If you were given one of the projects for your job, you'd complete it (and slog through the boring parts) because you wouldn't have a choice. Maybe a "project manager" (real person or virtual like a blog) to keep you accountable/on track would help. That won't stop the urges to chase "the next shiny", but will make resisting them a bit easier.

(I say this as someone with a hundred project folders, so I should follow my own advice. I will say when given a deadline to produce something, I deliver, warts and all.)

</comment><comment><USER136> Be realistic with what "done" is when you start a project and force yourself to get to that point. It doesn't have to be published or making money or anything specific, but define what it is and do it.

The more often you get to "done" the easier it is. The same goes for quitting though - every time you quit something it gets easier to excuse yourself the next time and so on.

The last 5% of a project is always the hardest to slog through. Being able to finish things is a super important skill and something I'd say is worth cultivating.

</comment><comment><USER137> I read this somewhere that, instead of focusing on "what to do ?", shift your focus to "why do you need to do it ?". If you focus on the why and can convince yourself on the importance of it, maybe it would get done. On the other hand, if your "why" is shaky, then most probably somewhere in the back of your mind it's marked as "not important". It's like one of those things that you just want, but don't really "need", so no wonder you lose interest pretty soon.

</comment><comment><USER138> I find that if random people on the internet like to use what I'm working on, that's the most motivating thing. Think of it like fishing for startups. If you get a lot of nibbles on a particular idea that you test out, best to keep going if it's working, provided that's it's the best idea you have. If random strangers are happy to get on the phone with you to ask you questions about whether they can use your product because they want to learn more and have a problem, that's a good sign too.

</comment><comment><USER139> I've finished projects and earned continual revenue from them. If it isn't compelling, then perhaps it is best to just let it go.

If you already feel proficient with your tools, you can't justify your projects to learn these same tools.

You are not the problem here. The problem is your ideas are not compelling enough for you. Think of something which will compel you to finish. Break the project down into manageable stages and execute. Don't make excuses for yourself. If you want it, you will get it. Otherwise, what are we talking about?

</comment><comment><USER140> I used to pick side projects based on all the things they say you should; does it have a large addressable market, does it solve customer pain points, are people willing to prepay before you start working on it etc. And I would get to a point where I would give up because the projects, chosen this way, were not fun anymore and I would stop working on them.

So instead I now pick things that I find to be fun to me to work on. Instead of solving customer pain points, I try and solve a pain point that I have. I'm liking it thus far

</comment><comment><USER141> One thing that seems useful to me, in addition to determining experimentally what I can actually accomplish on my own, is determining the common components, and knowing that the more time I put into the things that cross project boundaries, the more useful I will become for my employers/clients, and the more effective boilerplate I can DRY with. Future projects will more likely require the core infrastructure than any specific, final, perfect, finished UX I imagine ahead of beginning.

</comment><comment><USER142> Theres a lot of things you may _want_ to do, like you abstractly think that would be good for you somehow, eg. learn the piano.

But for a project that you can stick with through the horrible / boring bits, all the way to completion, pick something you are _compelled_ to do, something you just naturally do and enjoy.

Eg. I make computer games, I think they are fairly pointless, but I can happily make games all day every day. Its the kind of thing I need to force myself to _stop_ doing and go take a break.

</comment><comment><USER143> One more to the pile. My method:

1) Write down a clear S.M.A.R.T. goal or thing you want to do on a piece of paper (OKR style), a clear definition of why you are trying to do the thing, and when you should have it accomplished by.

2) On a separate piece of paper, define your expectations around how chasing that thing will feel and what you expect to happen when you accomplish it

3) Put the second piece of paper about expectations in a paper shredder - destroy it

4) Create a google doc (or whatever) with large bold letters at the top: My goal is to do X by Z because Y. Make accessing this doc as low friction as possible (a bookmark icon on home screen, a bookmark in browser, etc)

5) Create a consistent schedule (1 hour every other day?) and use the doc to track. Treat this as your personal standup doc: make entries on the disciplined timeline, and plot out next steps at the end of each entry. Review weekly (Sunday night?), take notes on your progress, etc.

6) Finally, at the target date, reflect on where you are, and celebrate anything and everything that happened as a result of your feeling inspired by an idea or goal and making tangible progress in your life because of it. It's beautiful.

For the progress doc, viewing your progress makes it harder to give up on - think of it like "We've gone 100 days without a workplace accident" or "I haven't had a X in the last 50 days" - you build up momentum and commitment to seeing something through for the sake of not letting down the older version of yourself i.e. You make quitting an increasingly bigger deal.

Regarding expectations - of course, I'm joking about steps 2 and 3. For me, living life chasing the vision for something gets in the way of actually getting after it, because by definition it's dreamy, and each step you take closer that doesn't resonate with the dream is another kick in the pants. Soon, you give up and move on because the dream (expectation) is significantly different from the actual experiences you have while taking steps towards it.

For goal setting, I cannot stress the importance of setting S.M.A.R.T. goals and detaching from the dreamy stuff. If the vision is truly powerful and meaningful to you, it will be kept alive and supported by material success on the smaller milestones that you accomplish.

</comment><comment><USER144> When that used to happen to me I realized the reason was that I thought maybe I was making the wrong choice, no matter how carefully I had thought it out. Later I would wish I had finished the project because I understood my life would have been better if I had.

Eventually I learned to accept the possibility that my choice may be second best. It was an insidious form of perfectionism. It was better to finish a project that may not have been the "best" option than not to have done it at all.

</comment><comment><USER145> I find side projects useless. At work I solve real problems for real people, often big problems. Some toy project doesn't feel the least bit meaningful, and any idea I have for something that isn't just a toy is something 100 other people have had as well.

So I help with their implementation instead. Instead of building useless tech demos or starting primitive games I'll never finish, I look up the projects I do actually find useful and see what they need help with.

<comment><USER146> Eight years ago I was really bored at work (they just asked for a couple of SQL queries a day) so I made a poor man's automated trading system for government bonds. The basic idea was to camp for new bonds and look for new opportunities as soon as they presented themselves. I had also done some rudimentary backtesting to prove some simple strategies for buying and selling. I made no money off of this, it was just for fun. During development I learned how to acquire, store and process financial data in a live streaming way as well as how banks handle things, what the fees and taxes are, etc. Also helped me learn web automation, making and deploying my own services to my own servers, etc.

A year ago I started working on hedge fund software and all this experience was a huge help. So if you are busy at work making tools, great. But the benefit of side project stuff is pretty situational.

<comment><USER55> Any chance you've written about this side project and the areas you learned about and how to figured those things out?

<comment><USER146> This is probably the first and only time it was mentioned in public. I do have a private bitbucket graveyard where it resides. Oh and this was done when mongodb was still a thing, so I have some of that going in there for finding sparse stock correlation matrices. And ruby was everywhere at the time, so the bank interface was created in watir instead of puppeteer.

<comment><USER55> Interesting. I've been working on automating some personal finance Google Sheet stuff trying to use watir to automate pulling stuff from Mint. Did you find watir useful for things like this? Or would you say there's ultimately better options for a personal Rails app?

<comment><USER146> google sheets is awesome, they even let you reply to rudimentary get requests and define your own functions with google script. I think it is a hidden gem.

Watir lets you host your own headless firefox or google chrome on a cheap server thanks to the headless gem. All headless does is to start Xvfb and let you execute the browser in it.

What I really like in watir's interface is the wait_for functionality which you can sprinkle everywhere in order to wait until a button or a dropdown is actually rendered by javascript so you can click on it once it is queryable.

These days I use websockets and chrome puppeteer protocol to talk to the browser. It is somewhat faster and more robust than the chromiumdriver, but if I had to use watir again, I wouldn't mind it.

</comment></comment></comment></comment></comment></comment><comment><USER147> You have to know what you want to make before you can make it. Embrace this challenge.

Allow yourself to develop your ideas before attempting to code them up. Draw diagrams, take notes, think about how to implement the systems and subsystems. Do lots of research. Make prototypes to play with ideas.

If you want to make anything that is not trivial you're going to have to spend a bunch of time on architecture and design before you get to execution. Try to see this as a gift rather than an impediment.

Best luck!

</comment><comment><USER148> I have experienced this my entire life.

I'm interested in so many things that I cannot focus on one thing for too long or to completion. This really sucks when people ask what I do with my time because I have nothing fully realized yet I did spend the whole time tinkering in my own way.

I overcome this a little with discipline. I just have discipline and a clear path/plan and go step by step through to completion.

I'm probably going to pick up a book or two that is mentioned in this thread.

</comment><comment><USER149> If it's a real project in my life and not something I'm just playing around with I force myself into a mindset where "It's only worth starting if I can get it out into the world". Start less projects, finish more projects. When I start switching things to do every five minutes, normally is because I'm tired, want to do things but don't have the energy. Then I try to just stop and rest, tomorrow's another day.

</comment><comment><USER150> My way of overcomming this situation is to use the MVP process for my side projects: your side project needs to be as simple, as featureless as it possibly can, so it can be shipped to your friends quickly, before you get tired of it.

It has worked really well for me: simple projects are more likely to be finished, and when you show them to other people, their feedback/enthousiasm fuel your energy to add more features and spend more time on the project.

</comment><comment><USER151> Usually I start projects I want to start, but I tend to finish projects because I have to finish.

The necessity/drive to finish can be internally or externally driven, but there's no mistaking it, so don't sweat what you don't finish. Take it as a signal that you've reached the limit of your interest in that pursuit.

Of course, if the issue is something more fundamental (like ADHD), none of this likely applies, and seek help from a professional.

</comment><comment><USER152> For me, the answer was to make software that I actually genuinely find useful.

Once I got a rough prototype to the point where I was able to get value out of the software as a user, the project seemed to stick.

I naturally return to use the software every few days or weeks or months (because it is useful), and when I do, sometimes I have ideas for improving the UI or what's going on under the hood. So sometimes I knuckle down and spend a day or two enhancing it.

</comment><comment><USER153> How do you perform in your day job? Do you have the same indecision or are you productive? If your productive at work, then perhaps consider what you are looking to achieve in a side project.

For me, my side projects are for fun and intellectual exploration. I've been making art-piece wordclocks as gifts and sell a few occasionally. This is totally orthogonal to my day job. The orthogonally is what I really crave. It gives my mind a nice refresh.

</comment><comment><USER154> Ship early, ship often. Ship a version you are embarrassed by and try and convince some people to use it.

I've had far too many side projects which languished in the "it just needs one more feature..." zone. My productivity with side projects shot RIGHT up once I learned to avoid this.

Remember: if you are disappointed that your project doesn't do something you had planned and you ship it anyway... no-one else will ever know!

Perfect is the enemy of shipped.

</comment><comment><USER155> Same here. I am in very similar spot like you, I start a new game/engine project every day and switch language every few days.

The best tip I can give you is to participate in competitions. Like "make a game in 7 days". It gives you a set timeframe and forces you to push the product into a usable/presentable state. Better to have few working unfinished games than many unfinished projects that aren't even playable.

</comment><comment><USER156> I struggled with this for years. Finally made it over the hump a couple years ago and started finishing things.

The one key question for any side project I consider starting now is:

"Will I use this myself?"

Building something that makes your life easier is a huge motivator to get through the slog days. And if you're considering trying to sell it later it's nice know you have a market size of at least 1, which is more than many startups.

</comment><comment><USER157> Most of the advice you're getting here is to monetize it, find what inspires, you, etc.

While well intentioned, that advice has been incorrect for me at least. What has worked has been to work on small, fast side projects. If you can only work on a project for two days, then pick projects you can finish in two days. Cut scope aggressively.

Frankly, my most successful projects are the ones that have been amonst the easiest.

</comment><comment><USER158> After years of suffering the same problem, I found (so far) a solution that more or less works for me. Assigns days to projects. Max of 5 projects. The most important thing is: Don't work in the project unless it's the day. If there is a need, add it to the backlog of the project.

My curve of interest gets reduce over a day. After one week of not working, it is restore.

Curious if this works out to someone else.

</comment><comment><USER159> I can tell what I figured out about myself so far. Sorry for the long post, it's tough to write concise. It also doesn't help that I'm describing insights that took me 10 years to get sharp.

I have thoughts and intentions.

I have behaviours.

It's always puzzling to me how bad I am at predicting my behaviour purely with my thoughts and intentions. I guess people who are addicted to something that want to quit can relate (my addiction: gaming/YouTube/HN -- I'll get back to this).

Because of this weird mismatch I've said to myself: the predictive value of my thoughts and intentions is 0, it's actually negative even. So all I can do is observe myself behaviourally. Humans are quite bad at this, and research shows that friends help with this. People outside of you observe your behaviour better than you do. So either (1) get help from friends to do this or (2) observe your behaviour like a ninja. Luckily for me, I happen to be an introspective person by default, so I chose option 2 (you can also choose both at the same time).

So do not trust your thoughts and intentions.

So observe your own behaviours.

After 10 years, I found out 2 fundamental motivational triggers. One I found out about recently, and I am still figuring out how to (ab)use it, and the other one has been (ab)used for years.

1\. I work amazingly well under pressure and stress. This is especially the case when my schedule has no minute of spare time and has some vague accountability system.

Example: I was incapable of studying one degree at university, but I was amazingly capable at studying 2 degrees, while working on the side, while having a social life and a girlfriend. I had too little time in my schedule, so I used 4 hour work week tricks to get it manageable.

What I also did was define a priority list. A lot of priorities on the bottom of that list suffered an ill faith. But my most important priorities (and then some) succeeded.

There is one downside with this. Yes, I was motivated. But I also was stressed the whole time, and while the stressed was manageable, I don't think it was a particularly fun time. It sometimes was, and sometimes wasn't, but the pressure felt painful. And while it worked for my motivation, it does do a lot of damage to me existentially.

However, the good part: I do now have skills that I wished to have. And existentially that actually does really help.

So motivation-wise: it works amazingly well. Regarding life decisions: mixed results.

2\. Remember my addictions? I realised that I'm simply motivated by human contact. Not just any human contact, but I am not fully clear on the conditions yet. I know that I must like the person and feel a connection in some cases.

A couple of cases where I've seen this:

A. Making music with someone just watching me (I was super motivated). Making music alone the next day (I didn't do anything).

B. Same story with playing Hack The Box. I hacked 16 hours per day for a month and my buddy was simply putting in a normal work week of it. He said: "you're so much more motivated than me." But I knew if he'd stop playing Hack The Box, then I'd stop playing eventually as well.

C. I thought a lot of university courses were easy, but not easy enough to do nothing about it and pass a test. So I would go to the lectures and be bored out of my mind because psychology is an easy degree :D However, those lectures did actually motivate me to then engage with the course material after the lecture. And the thing is, I thought I would be capable of doing that on my own, but I never was. So I continued going to lectures and be bored, in order to be motivated later.

I am still figuring out how to exploit this, because this motivational factor properly exploited is me winning at life. It has: connection, productivity and a sense of "we're in this together." I'm noticing I find it a bit hard to make friends. I can't just say: oh, I like topic x now and then befriend someone in that topic. If I could, I would be a lot more productive.

(I'm now realising this should become a blog post, moving on :P )

Writing all this gave me a new idea. I'm basically like a framework and I found 2 motivational 'hooks' into it. The thing is, I don't have a lot of control over these hooks, things can stress me out (which motivates me) or things can make me feel connected (which motivates me). If something hooks into my 'motivational code' and I don't want it to be there then I basically tend to say I'm addicted to: games, YouTube and HN (fun fact: I don't like playing games alone that friends did not introduce to me).

This means my mind needs to figure out on how to exploit this, but also it begs the question: how does this work? I am pretty sure it's emotional and it's a need based thing (self-determination theory _definitely_ comes to mind here).

My question to you is: what are your motivational hooks? How does the environment hook into your motivational code?

BONUS FACTOR!!! (I'm not making fun of marketing people :P )

3\. I made a side project for a month called doodledocs.com. It partially came out of motivation factor 2. I was interviewing for a company and they gave the most boring 2 day take home exercise that I saw (make tic tac toe). So I decided to make something awesome instead with their technology, and it took me a month. Just having someone judging my work and me being in the same room as that person helped quite a bit. However, another motivational factor was that _I am frustrated_! I am frustrated with how not far we are with having a pencil natively on the web. So I made this app.

But frustration is definitely less of a factor than the other 2. Frustration on its own doesn't work, but it does reduce the amount of stress (factor 1) or connection needed (factor 2).

So I guess you could say there are necessary motivational factors and sufficient motivational factors. A bit of stress or a bit of connection is necessary but doesn't make it sufficient. A lot of connection, for example, does make it sufficient. Also, for example, a bit of connection + a lot of frustration does make it sufficient.

I hope my self analysis helped you a bit. And if you're curious about why I wrote this all out in the open and not on my laptop: I am motivated by people reading it and reacting to it. My sense of connection (motivation factor 2) is definitely at play here.

<comment><USER55> Definitely blog post worthy. Thanks for sharing.

I've noticed similar triggers and hooks and such with myself as a fellow introspective individual.

I suspect some of this is related to the dopamine hits that come from easy/early successes in things. It's why I've noticed when I get run down, the only games that really appeal to me are idle clickers because they are essentially just dopamine buttons with a front end.

I think you're on the right track with first identifying these things and then figuring out how to harness them. In essence, you have to understand an API's inputs and outputs before you start calling it, and that's what you seem to be describing by thinking of yourself as a framework.

</comment></comment><comment><USER160> Yes, all the time, the time left for coding after work is very little, family and friends always take priority.

Some of my hobby coding projects are more than 10 years old by now.

The only ones I managed to stick all the way to the end were side projects that had a real customer at the end, so I had to actually deliver, or face the consequences of having someone really unhappy.

</comment><comment><USER161> I've been working on a side project now for about 8 months. By far the longest for me. Whats worked this time is I don't work on it every day and sometimes I'll only write a few lines of code if only to keep the momentum going. I think anything you do for your side project is a positive step. Once you give up its done.

</comment><comment><USER162> My software side projects became my career.

I write down my various ideas. I then think about them occasionally for months or even years before committing to working, writing additional notes. This reduces the chance of abandoning an idea for something else after starting development.

I tend to do multi-year projects, so I have to be careful how I spend my time.

</comment><comment><USER163> Self social engineering: tell everybody about it so you're going to lose face if you drop it without a good reason. This doesn't mean you cannot drop a project every week or two, but you must accomplish at least something before doing it or discover it's a dead end. And if you succeed people will cheer you.

<comment><USER162> Apparently that's exactly not what you should do:

[https://www.psychologytoday.com/us/blog/ulterior- motives/200...](https://www.psychologytoday.com/us/blog/ulterior- motives/200905/if-you-want-succeed-don-t-tell-anyone)

<comment><USER164> Don't know about the psychology behind it but I'll add a data point in support of this.

Whenever I do any kind of creative work (programming, music, etc.) I always stall out if I reveal what I'm doing to other people before it's in a near- completed state. Something about the knowledge that other people may be observing causes me to think about a project in terms of how it will be perceived by others as opposed to precisely what I want it to be. The sad thing is that usually probably no one is observing and I'm entirely psyching myself out, but this realization has definitely led me to be more disciplined about secrecy when working on anything.

</comment></comment></comment><comment><USER165> What works for me is enjoying the process, not the end result, and making small incremental progress. I started blogging recently - just little pieces of code or analysis here and there - and found that a sense of making progress strongly motivates me to tackle harder problems, while sharing my progress along the way.

</comment><comment><USER166> This works for me:

Let's say I have an idea and I spend a few hours researching about it and get very excited. I don't start working on it immediately. I sit on it for a few days and revisit the idea, say after a week. If I am still excited to work on it, I'll start working on the project, otherwise I drop it.

</comment><comment><USER167> My therapist recently told me that often it's working on something that sparks (or fuels) the passion for it, not the other way around.

Sometimes you just need to decide to do something and make progress on it, not worrying about the fact that it's not what you're most interested in at this instant.

</comment><comment><USER168> I can relate to this. Here's what's worked for me. Don't work on it alone. Get more eyes on it. See if other people find it useful. Get feedback. It's quite motivating to see your side project helping someone else. But it's also important to know when to stop.

</comment><comment><USER169> I have the same issue. I try to remember a quote, origin I can't remember, "If we want to do anything, we must not try to do everything."

If you're interested, want to help me work on my web project? :-) I'm not a front end web dev and am having a slow go at it.

</comment><comment><USER170> yep. my solution uas simple. listen to my attention. if it's boring (at that instant), why stay? eventually i found and completed several projects, the need or interest driving me. and sometimes, i pick something up off the backburner and bring it closer to fruition.

</comment><comment><USER171> Have you tried B J Fogg's tiny habits? It works like a charm and I can see it can help in your situation. I was exactly like what you mentioned, had (still have?) shiny object syndrome but wouldn't stick with one topic for a stretch.

</comment><comment><USER172> I would suggest to make something over the weekend and set a 7-day deadline and come up with the basic version of the idea. Charge the user a fee, it can be anything.. just put a paywall.

\- Release it on Product Hunt, corresponding Reddits, cold pitch people on Twitter

\- Get a few paying customers

\- Signup for IndieHackers and celebrate your small milestones.

\- Continue the above steps until you get 100 customers

\- Play with the different pricing plans

\- Explore how to get a word out of your product.

</comment><comment><USER173> I have been buried in side projects my whole life and I started finishing more and more of them.

1\. Don't force it. The good ones, you will have a hard time not working on

2\. Take some pride in finishing things. It gives the extra push when 1 isn't enough

</comment><comment><USER174> Keep the scope small so you'll be done fast

Become accountable, e.g. partner up with somebody else

</comment><comment><USER175> I do this, but I realized a while ago that most of the time, what I want to do is learn how to do things, and not actually do them. So that's all I try to do. Because after that, it's not fun anymore.

</comment><comment><USER176> For me I can only keep up my interest in a side project if I know something like that doesn't exist. I've found reading new research papers and implementing them to be fulfilling.

</comment><comment><USER177> Nothing wrong with your situation, you're just experimenting and learning. Keep doing what interests you most, you'll eventually settle on something for longer period of time.

</comment><comment><USER178> It helps a lot if you pick something you think is important, not just start working on some random ideas.

Or maybe you can accept that you like jumping from project to project and that's okay too.

</comment><comment><USER179> Seems you're picking up project idea from your interest. Would it be better if you pick up a project because you deeply feel the pain how it is currently without your solution?

</comment><comment><USER180> Learn a musical instrument. Guitar, Piano or Piano Accordion. You won't be able to do that last one if your currently in a relationship. YMMV. Once you start, you'll really suck at it for a very long time but it's fun and it's a relaxing way to build a skill that is calming and quarantine friendly.

Programmers program, writers write, doctors doctor? No doctors work hard most of the week and a bit of the weekends but they do that so they can have other stuff.

My job is Software and IT. It's less about code and more about clear rational decision making. Not thinking about it all the time makes it easier to think about it when it's time to do that work.

</comment><comment><USER181> Check out the book "Little Bets: How Breakthrough Ideas Emerge from Small Discoveries"

In a way it's the concept of MVP but really from the point of view of picking up projects.

</comment><comment><USER182> I would say don't even worry about finishing. Document what you've got and move on. Eventually you might come back to it, or steal parts of it for something else.

</comment><comment><USER183> For me the best way is to remember that the time will pass and is passing anyways. Might as well have just done literally anything related to the project rather than not.

</comment><comment><USER184> A friend of mine once said about such issues, "you can do it all, just not all at once". Slow down, pick something and work on it. You can do the other thing later.

</comment><comment><USER185> Are you working alone or with other people? Doing anything alone can be very demotivated. Regular calls, chats are important for motivation and a sense of progress

</comment><comment><USER186> Find something you want to do personally and do it. If It will follow you around and demand you work on it when you should be doing something else you found it.

</comment><comment><USER187> Right now financial independence motivates me. I just keep imagining how if I had N customers what I could do with my time other than work for someone else.

</comment><comment><USER188> I have a side project for you. There is currently a very functional prototype and yet I need a technical co-founder to build beyond this proof of concept.

</comment><comment><USER189> Find a problem to solve. Don't focus on tools.

You want to do these side projects to show to yourself that YOU can do it. Focus on the problem not on the skill.

<comment><USER190> This is hard. Either your problem can already be solved with an existing tool or you are not interested in solving that problem (hence it is not that problem:)).

</comment></comment><comment><USER191> Build something that you need (like, scratch an itch).

</comment><comment><USER192> do it for someone not for yourself. you can reach out to domain experts over a non-technical topic you are interested in. offer them your time and a final project in exchange for their guidance.

Be intentional about setting up meetings. don't let the relationship fall into the graduate student advisor communication patterns, treated like a professional relationship and ask them to the same.

</comment><comment><USER193> Use your skills for something or someone fighting for a cause you care as a person? Inner motivation would come naturally, experts say.

</comment><comment><USER194> Another angle, maybe you have to churn through many (hundreds?) of ideas before you get to one you really want to see through.

</comment><comment><USER195> I recently read Angela Duckworth's "Grit" and from reading this, suspect you might derive some value from it.

</comment><comment><USER196> Find a project that is useful to you.

<comment> yoz-y I second this, I was project for a long time until I found out an app idea that was mainly driven by the fact that I really wanted it. Unfortunately this was quite a long process and now that it's done it's back to square one. Lots of ideas but no motivation to follow any through.

</comment></comment><comment><USER197> Offer to solve a local business' solution pro-bono and commit to self-imposed deadlines

<comment><USER197> Preferably a local business that's been hit by covid pain

</comment></comment><comment><USER198> Find something that bothers you in your everyday life and make a MVP that solves that problem.

</comment><comment><USER199> Side projects should always be in a position where you want them to become your main project.

</comment><comment><USER200> what has worked pretty nicely for me is working on something with someone. its nice to know you are working on something and are not alone. it also helps with accountability.

i know not everyone will be able to work with someone but this is just from my experience.

</comment><comment><USER201> Find a problem in your life you can improve/solve with software. Then work on that.

</comment><comment><USER202> Do something small - write an integration package that bridges 2 tools you enjoy using.

</comment><comment><USER203> My problem is quite the opposite. I am able to finish a side project but I lack ideas.

<comment><USER204> Please write down any ideas you may have, at any time. It's rare that an idea will come the moment you sit down with a blank screen staring at you.

I've talking to emailing myself with a specific subject every time I have an idea. Doesn't matter how silly it is. I'll revisit them in a month and sift through. Some still remain silly, some will be upgraded given new knowledge.

</comment></comment><comment><USER205> Which one potentially benefits others the most? That's the easiest one to stick with.

</comment><comment><USER206> Perhaps your passion is not the code, but setting up and maintaining it - DevOps

</comment><comment><USER207> Find a single paying customer

</comment><comment><USER208> Yes: "Stop Starting and Start Finishing"

just write it down somewhere in plain sight.

</comment><comment><USER209> Make something you _need_ , so that you will actually use it yourself.

</comment><comment><USER210> like many folks have already shared...

... the process is sometimes the real lesson-learned.

don't beat yourself up about NOT finishing stuff. sometimes, that's just as good as finishing.

the goal is learning, not necessarily profit.

</comment><comment><USER211> So, I'll take a different tack: Are you interested in finishing projects or are you interested in learning new things? Because those goals aren't exactly 100% aligned.

It sounds like your motivation is more about learning new things. If that's the case, lots of small, half-baked projects can definitely be educational.

You're also mentioning projects that take significant ramp-up time before they might start to get a life of their own.

So, that being said, I have a couple of book recommendations:

If what you want to do is learn software development in a growing way, I highly recommend Mastering Software Technique: [https://software- technique.com/](https://software-technique.com/). It's all about using bursts of time to learn new things as fast as you can. For your situation, it sounds close to what you've been practicing, with just a tiny bit more process.

If what you want to do is actually build something on the side for people other than yourself (which is _not_ a requirement for learning useful things), then I recommend [https://jessicaabel.com/growing- gills/](https://jessicaabel.com/growing-gills/).

For me, I've embraced the non-essential nature of my side projects. I've had quite a few over the years, some large, some small. Being able to put one on the back-burner and come back it later has been very handy. Most of my sideprojects these days are ones I can get to "done" in a day or two, and I have a couple longer-running ones that I pick at off and on. My motivation for a particular project varies, some are meant to scratch a _very_ specific itch:

\- [https://github.com/yumaikas/dirx](https://github.com/yumaikas/dirx) was basically done in a late night and a morning \- [https://idea.junglecoder.com/view/idea/274](https://idea.junglecoder.com/view/idea/274) I've done 3 times, first in bash, then in Go (in a rather late night, to scratch an itch), and then again in Nim (to learn Nim, and compare it against Go).

Some projects I have are a lot longer running. Both PISC <[https://pisc.junglecoder.com>](https://pisc.junglecoder.com>) (now on indefinite hiatus) and Tabula Scripta <[https://github.com/yumaikas/tabulaScripta>](https://github.com/yumaikas/tabulaScripta>) have run a lot longer than my typical project. One quality of both is that they have work at quite a few different levels of detail. Am I tired of parsing work? I can work on prototyping a game in PISC. Do I want to make the performance dramatically better for my artificial Fibonacci benchmark? Great time to break out the Go profiler. Do I want to make it way easier to concatenate strings in a stack-based language? Maybe today I figure out how to write an evalbot. (These are _all_ things I did in PISC at different times).

Tabula Scripta is still early days, I haven't had the time to use it for that sort of experimentation, but it will have a similarly broad set of applications and problems to solve.

And, like other people have said, it definitely helps to do you side projects in a different IDE/Language than your work. And if learning is a big motivator, keeping your projects smaller, or making them the sort of things that's easier to break into smaller parts can be very helpful.

</comment><comment><USER212> Do It with a friend which is equally curious an committed as you are.

</comment><comment><USER213> find a customer for your side project. even if it is one customer, even if she is a friend of yours.

getting a feedback from your early customer will be more than enough to keep you motivated

</comment><comment><USER214> What were you intensely curious about at 12 years old? Do that.

</comment><comment><USER215> Start meditating. It will help your restless mind.

</comment><comment><USER216> Whatever brings some joy, it's the signal.

</comment><comment><USER174> Keep the scope small so you'll be done fast

</comment><comment><USER217> Pick one of your unfinished projects, identify a way to make progress on it, and then make that progress. Repeat this process until all your projects are done.

</comment><comment><USER218> Read Steven Pressfield's The War of Art.

</comment><comment><USER219> Solve a problem _YOU_ have.

</comment><comment><USER220> So many answers already. Here's my take. I have a decent sized graveyard of one-day projects, half dozen serious attempts and one published project with some 10k users. In line with some other suggestions in this thread, the published project scratches my own itch while scrapped ones were meant to be consumed by other people.

If gamedev is your thing, try participating in a game jam or two. They are awesome way to use same limited attention span and actually finish something. If you see yourself spending too much time on graphics/sound, try some heavy constraints. For example, use just 3 colors for everything, or compose all graphics just from single shape.

Introspection is good. Keep doing what you are doing, and keep learning from what worked better or worse for you.

Treat your side project as small sandbox, a place to play. Don't put deadlines, don't worry about sunk cost, allow yourself to write bad code without much planning. You can incrementally get to point where you want it to be. Try to see at which point earliest you can wrap it up and publish as MVP.

I noticed that it is very easy to start, and gets exponentially harder as you go on. When you set up the project, each development time slice doubles the result. First you have nothing, then it's "hello world". Then you put up some dynamic text. Then you hook up some crafty mechanism behind the text. It is exciting and motivating. But after a while the project slows down. It is because there are already some mechanics in there, and each new feature has to be aligned and connected with existing ones. The complexity grows and more and more time has to be invested in each new step. This is nature of software development. Polish also takes surprising amount of time. You have to be aware of it and plan your energy accordingly.

All this accumulated complexity makes your mind crave a new project, a fresh canvas where everything is simple and new. Usually it will manifest in form of new idea that is so much better than the current project. What works for me is to take hour or two and take some notes and flesh out this new idea, and then archive it for time being.

Some more advice I got from other people: A good place to stop the development session is when you are almost done with feature. This will motivate you to pick up the project next day, and you'll quickly get into mindset needed to start next feature.

Don't share with others what you plan to do. There's a psychological effect where you get small amount of gratification by telling others about imagined finished project. You want to delay that gratification until you have something done because it will give you motivation needed to put in the hours. On the other hand, do share your progress on social networks. Getting feedback boosts motivation enormously.

</comment><comment><USER221> No golden bullet for this problem I think but definitely one that is widely shared.

\- __Get rid of your smartphone __and go to a dumb flip phone (avoid distractions).

\- __Dump your ideas __into a system you can review later like [RoamResarch]([https://roamresearch.com/](https://roamresearch.com/)),[Trello](trello.com), or a folder with Markdown Files Check out __GTD method __because these thoughts qualify as something you should dump in your sort bin /inbox bin to go through later. Other things like "I should check the mail", "I should build a fort" all count as distracting tasks to keep track of.

\- __Meditate __and learn to recognize transitive thoughts. I really recommend the [Calm App]([https://www.calm.com/](https://www.calm.com/)) although you really don't need to use an app I found it's [21 Days of Calm by Tamara Levitt] program helped get me started and gave me a handful of techniques to get into a zen state.

\- Use [The Pomodoro Technique]([https://en.wikipedia.org/wiki/Pomodoro_Technique](https://en.wikipedia.org/wiki/Pomodoro_Technique)) to focus on one task at a time and avoid over taxing your focus muscle.

\- __Build and Keep Track of your Habits __. Your habits are extremely important to do deep and meaningful long term work. You need to cultivate them. Check out [The Power of Habit]([http://www.amazon.com/gp/product/B0055PGUYU](http://www.amazon.com/gp/product/B0055PGUYU))

\- All industries that have REALLY important critical life saving tasks use checklists. [HBR: Using a checklist to prevent Failure]([https://hbr.org/2010/01/using-checklists-to-prevent- fa.html](https://hbr.org/2010/01/using-checklists-to-prevent-fa.html)). I use app.everyday.app to do a Daily Habit Checklist but I did this using a tiny Mole skin for a month and it worked great as well. Side note you made me dig into looking up this thing called [Seinfeld Chaining]([https://lifehacker.com/jerry-seinfelds-productivity- secret-2...](https://lifehacker.com/jerry-seinfelds-productivity- secret-281626)) and I found out [Seinfeld has nothing to do with it]([https://www.reddit.com/r/IAmA/comments/1ujvrg/jerry_seinfeld...](https://www.reddit.com/r/IAmA/comments/1ujvrg/jerry_seinfeld_here_i_will_give_you_an_answer/ceiugt5/))

Personally all of the things I listed have some type of associated tool but all can be accomplished with a timer, pen, paper ,etc. Don't let yourself get caught up trying to find the "perfect" tool. Just start doing the things so you build the habits. They are far more important.

</comment><comment><USER222> I am also just like you!

It is indeed irritating and confusing at times. I like to do many things and explore new ideas. Curiosity takes me in different direction. At times, I question my personality and character. Perhaps the feeling of "curiosity killed the cat" is applicable when we are feeling this way.

But let's reframe this!

What if we start to accept this trait, not as a flaw, but as a part of who we are? Once you come to the realization, you start holding yourself accountable.

I have been working on a side project (www.wisecharlie.com) for almost 3 years and continue to do so for many years to come. To give you a background, I am a developer and I enjoy the creative side of code and design. So, it is natural for me to keep exploring new ideas, but I also know the importance of execution. Following are the ways I have held myself accountable to this particular project:

1\. No expectations (goals) other than a form of exploration.

I have a revenue generating product, but that does not mean, my goal is to sell the most I can, get as many people to come visit my project and get the most sign-ups. I care about the topic, constant work-in-progress and iterate over it periodically. The process itself brings me joy.

2\. Sticking to one project at a time removes a cognitive load of finding new ideas.

For some, creative block is a real thing. From the creative standpoint, I have built the website using plain JS/HTML/CSS, then built the blog using Gatsby. I wanted to learn about webflow so I re-built it during Christmas. I don't have to think about new ideas every time I want to learn something new.

3\. Incremental steps as opposed to a giant leap.

I assign myself one task at a time on a monthly basis. That is it. I don't set ambitious goals of 100k users or any of that. This has allowed me to work on this project for over 36 months without feeling burnt-out. It is a turtle race so take incremental steps and make frequent progress as opposed to a giant leap. If I complete my assigned tasks, I allow myself to jump on to other ideas. This allows me to stay accountable and execute consistently.

4\. Pick a hobby that has nothing to do with side project.

With lack of human interaction amid global stay-at-home orders, I find myself to be draining my productivity (rarely, but it does happen). To fix this, I picked up on sketching because I wanted to forget about everything that is happening around me. Sketching helped me with that because if I don't focus, my shapes don't follow the desired form. Here is the link to my sketch work [https://twitter.com/mihirchronicles/status/12160752161594859...](https://twitter.com/mihirchronicles/status/1216075216159485953).

I am sharing these resources so I can share real cases from my own life and inspire you to take steps that may work for you. Good luck! It is okay to feel how you feel, but I would suggest you to make incremental steps, define your process and take a long-term view.

The advice I share took many years of learning and doing. Curiosity brought the cat back and you can too! :)

Cheers and stay safe!

</comment><comment><USER223> It me

</comment><comment><USER224> I like to think that my side projects are primarily _a hobby_ , which I understand as an important venue for "venting off" after work. Notably, if they start to feel too much like work, they're no longer hobby projects, losing their super important (for me) psychological function! I mean, I still do feel guilt often, and am still on a lookout for some way(s) to cope with it... But interestingly, in my case, for one of the projects, my itch was so strong eventually, and I was so often annoyed I don't have this tool, that it kinda "forced" me to find the strength to push through to the completion, even when it was becoming a chore. Since then, I again abandon projects with guilt repeatedly ;) but again also have one among them, that I'm coming back to on and off, when I feel fancy, and trying to push forward. Again, I'm kinda repeatedly getting annoyed I don't have it for myself; when annoyance of not having it becomes bigger than my memories of annoyance developing it, I'm getting back to it again :) sometimes looking at it reminds me too much and is enough to scare me away again, but sometimes I'm just so angry I say to myself screw everything and sit and push through :) Still, also as others said, I look at the unfinished "hobby" ones also sometimes as some kind of research I wanted to do, thus honing my skills or just randomly "playing with my mental muscles" in various ways anyway - kinda as a kid plays in a sandbox however they want. They don't ask anyone for permission to drop the toy car and start digging a funny hole in the sand, just to fill it back with exactly the same sand moments later.

 _edit:_ One more thing from what others wrote that also kinda resonates with me, is that especially with the finished project, I kinda did repeatedly cut corners, and I mean _a lot_ , like freaking brutally, to get to the absolute minimum and absolute most brain-dead simplifications and quick hacks, kinda like taking the machete and just cutting my way through the jungle not looking behind, just to get to the PoC. I cut _worlds_ of ideas from it, leaving them as "TODOs", scribbling in a notebook, or just "mañana-ing" with cruel premeditation, I still hear them howling at me with angry remorse. Uh, sorry folks! Some day, y'know, pinky promise, maybe!... I remember you, I really do (mostly...), but, y'know, kinda different toys now that I'm playing with, y'see... And suddenly, this PoC (wrapped in a pretty readme and asciinema gif, which were actually the most exhausting finish of the whole run... but I was so close, it was like no way, if I don't do this, nobody in the world will know how an awesome tool I made... but they _must know_... it will help them sooo much... I think... I mean, it helps _me_ so much... and let them just see the gif... gifs are pretty!!) kinda proved to be enough, both to me and to tons of other people I wanted to share with and thought may also like it, and closed my eyes and published, saying screw possible bad reactions or just crickets... sweet! :)

</comment><comment><USER225> I really like this question. If I'm honest, it rarely happens that I don't finish stuff. But this wasn't some magical switch that happened overnight. Rather, a bunch of stuff, so this question kind of gives me an opportunity to reflect on what led to meaningful change:

1\. Action vs Motion. A lot of comments alluded to this here, and the best I've seen it articulated was in James Clear's book Atomic Habits. You have 'Motion' which is thinking, imagining, whiteboarding, planning, talking about...everything that goes _around_ the doing. And you have 'Action', which is actually doing. Motion is incredibly pleasant, but it's a trap. Action is never as much fun. Because soon enough you're going to get uncomfortable, stuck, frustrated. At the very least, recognize when you're in Motion and when you're in Action, so you're not trying to fool yourself. See also Shonda Rhimes' "A screenwriter's advice" [0].

2\. The closer you get to finishing something, the greater the resistance is to finishing it. This was articulated in Steven Pressfield's "The War of Art". IT becomes a struggle, and it's not fun, and anyone who tells you otherwise is flat out lying. There is fatigue from the project, and there's also the fact that it's not quite what you had in your head when you dreamed about it. Because you couldn't dream the imperfections. This this is not a fault of implementation (any creator will fess up to feeling this way). So acknowledging all of these and fighting through it is a crucial skill for getting things done.

3\. Without a Process, there's not going to be an outcome. I started as a developer, then switched to writer, and now I do both. It's the switching to becoming a writer that taught me how to get stuff done, because I honed the process. I knew what it would take to get a project from start to completion. Different projects take more or less time, but the stages are clear. When I tackle something now, be it in code or in writing, I set up a roadmap. One that I can say definitively for each step, when it's done, and what's next.

4\. Domain: it really, REALLY, helps to build up domain expertise in something. The tech is the HOW, but the domain is the WHAT and the WHY. Without a good WHY, odds are the project is doomed. A domain is really about mining more interesting questions, and staying engaged with ideas. So that even when you hit into difficulties, the curiosity about the problem helps you push through. I'm kinda not surprised you'd give up quickly on building a solitaire with Y, cause who cares, right? And the answer is...you don't care. You don't really want a solitaire, because you know that problem's been solved to a good enough extent that it simply doesn't matter. It's hard doing things when you can get yourself to feel they matter. With a domain, this happens less.

5\. So another thing writers say a lot is "Show, don't Tell". And at some point in my life I decided to take that mantra seriously. I felt I'm done with SAYING (on my CV and anywhere else) that I can do X, Y, Z. I was going to SHOW it. It just makes life simpler and easier when you can just shrug and say, "Yup, done that, here's the link." So the point here is that even if I'm doing something in order to learn, it HAS to have an outcome that can be offered to others. Whether they like it, or buy into it or whatever is a different question, interesting in its own right. But my view on folders filled with half baked ideas is that it's not good at all. If you've read "The Goal" (if you haven't, I recommend it) - this is is inventory, and it's a liability, not an asset.

6\. Saying No. This is REALLY HARD. There is more stuff you'll want to learn than time to learn it. There are more projects you'd like to get done than the time you're awarded in life. And there is genuine pain in declining to do something you really want to do, because you need to focus on something else. But the alternative to this pain is, ultimately, those folders filled with half-baked ideas. Though I am getting better at saying no, I have yet to get better at not feeling the pain.

7\. Time management. Everyone has the same 24hrs in the day. The only question is, how much of this time gets wasted. A lot of people I respect don't spend time on social media. Author Michael Lewis has talked about how it drains creativity out of you in small bits, like air going out of tires. I wholly agree. [Right now, with the covid situation, deep work is super hard. People are just dealing with it however way they can.]

[0] [https://zenpencils.com/comic/161-shonda-rhimes-a- screenwrite...](https://zenpencils.com/comic/161-shonda-rhimes-a- screenwriters-advice/)

</comment><comment><USER226> You can improve matters by a) scoping projects less ambitiously and b) enforcing a novelty budget on yourself.

A very ambitious project which you will never finish might actually be three small projects which you will finish and seventeen small follow-up projects you'll decide to never take on. Better to get the three under your belt than try to sprint in 20 directions at once and bail with nothing to show for it.

Say that you decide "I'm going to write a personal ontology engine flexible enough to store everything I know, with a snazzy, super intuitive frontend written in <new-to-me framework X>, a plug-in system for easily creating visualizations for specific types of data (oh, like, what if my personal knowledge DB could take FEN+PGN and let me replay and annotate interesting chess games in-line, that'd be so sweet!), a bespoke query language, the whole thing will be backed by <new-to-me storage backend Y> and, hell, I've been meaning to start containerizing apps at work, I wonder if I should be using docker-compose as I do this or maybe like kubectl, ...also I need to dive into the literature around building ontologies, knowledge graphs, etc. Also, it should probably have emacs keybindings. Probably also support for rebinding keys and defining macros too. Also, it should have a pluggable module interface for scraping semi-structured data sources containing things I don't actually know right now but which I would like to learn at some point. Maybe I can use the hyperlink structure of Wikipedia documents as a scaffold to get the thing started. Oh geez, this is really going to need to support multimedia as well, not just text. Really, this kind of thing would be very valuable in many different contexts. It'd be great if it could be used to automatically generate questions about a topic. I could integrate a spaced repetition algorithm with the question generating bit and then I'd have an amazing study tool. Hmmm, I'd better keep the whole thing as flexible as possible so maybe at some point down the road I can productize it! Sure it's a long shot, but it'd be revolutionary if I could pull it off. I'll start tonight!

To steal from Alan Perlis, "When someone says 'I want to build a personal knowledge DB as a side project and I want it to have perfect ergonomics, top grade discoverability, unlimited extensibility, and unparalleled ease of use,' give him a lollipop."

Even if you don't get stuck in feature daydreams or analysis paralysis and manage to start the thing, your "gee it'd be swell if" side project has a five or ten plus year "labor of love" todo list attached to it. The mismatch will sink you unless against all odds this actually is your labor of love.

As a personal example of the scoping into smaller projects which were standalone (though not a good example of enforcing a novelty budget) I wanted to make a personal activity tracker in 2018 or so. Initial conception was the all-singing, all-dancing, kitchen sink Swiss Army knife of personal data tracking and visualization, implemented in all the technologies I'd been meaning to try out. The backend would be a gleaming beacon of modern infrastructure with everything containerized from the outset, code written in Rust (in which I was a neophyte), phone app written in Kotlin (in which I'd only done the Koans, and with no other mobile dev background, but hey, "Anko" seems to be The Thing to use now, hmm)...

Having been bitten by the bug you ask about in the past, I set that aside. Instead, I did a bunch of smaller projects with each on their own bringing a reasonable sense of completion:

1\. Two Python scripts - one to configure desktop OS notifications to fire on a cron schedule ("Nag! Update your data for <x>") and one for CRUD operations on time series metadata and data points themselves. Just backed by local sqlite. Finished in <1 day. Hey look, MVP! Time to start tracking data!

2\. Docker setup for building a Rust binary and then trimming away build tooling to get a deployable artifact. 1-2 days? Containerization itch: scratched. Could be a 101 level blog post.

3\. PostgreSQL docker image with CREATE/DROP TABLE scripts. Half a day? I guess I learned about Docker data volumes. I can refer back to this Dockerfile in the future, which is like 9/10ths of how I make progress quickly on new projects.

4\. docker-compose setup for a Hello World level Rust binary that reads a record from a postgres db running in a separate container and writes it to stdout. Half a day? Hooray, orchestration.

5\. "Hello World"-as-a-Service web app that uses Rocket to send a Hello World application/text response. Not very long to finish. Novelty framework itch, scratched.

6\. Learn about Diesel. Use Diesel to make a single SELECT COUNT(*) query against the DB. Send query result as application/text response on a dummy endpoint. Done. Could probably be broken off into a "Intro to X with Y and Z" type blog post.

7\. Update SELECT-as-a-Service web app to make a meatier query and serialize response to JSON. Learn about Rocket request guards for managing DB connections. Another day or two? If step six wasn't enough for a 101 level blog post on the topic, seven definitely is.

8\. Port the Python CRUD functionality to a Rust REST API atop Postgres. Deliverable: approximately all the backend we'll need.

9\. Update the Python CLI to use the REST endpoints. Another day? Done.

10\. Start doing Android Hello World apps. Using unfamiliar APIs in an unfamiliar dev environment in an unfamiliar (but nice!) language. Eww, this sucks. I'm not having fun any more. Maybe I should first learn vanilla Java Android app development, then Kotlin, then build on that basis with Anko, then...

And then, at that point, I realized that aside from enjoying daydreaming about the idea of a personal activity tracker, I didn't actually give a crap about having an all-singing, all-dancing personal activity tracker. While I'd been happily chugging along building the thing, I didn't care enough about the underlying functionality to bother taking two minutes a day to, y'know, actually track the data when the MVP nag script ran on its cron. When I bailed though, instead of "ugh, another incomplete useless waste of time," I ended up with several completed small projects and more knowledge about what I actually wanted (to futz around building a personal activity tracker, not to have one).

</comment><comment><USER227> Adderall

</comment><comment><USER228> I used to be in this position. Your question really resonates with me.

I think I have broken the cycle, but it is hard to be sure of something like this of course. I have certainly been able to make more progress on projects than I have been able to in the past.

I think this has helped me:

\- Make a Someday/Maybe list. Capture your ideas and put them on the list. This can just be a text file. Feel free to add implementation notes. Then, when you have time, you can come back and see if the idea still compels you. The examples you give, for example, sound like things I might have on my own "someday/maybe" list.

\- Evaluate your ideas/projects. Do they spark interests? What are the reasons why you desire to complete the project? Do you think that desire will carry you through to project completion?

I'll give you some examples of myself:

For a time, I was really unsure what I wanted to do after I became dissatisfied with Ruby. I wanted to keep exploring functional programming, especially pure functional programming. I also really wanted to work with the actor model, and at the time Rust 1.0 was just being released, so I started working on that at the same time.

At the time I played around with a lot of things. But I ended up focusing on learning Haskell, and my goal was to completely work through this book [https://haskellbook.com/](https://haskellbook.com/). I was able to finish this after several "false starts" with Haskell over the years.

Why did I keep working on this project, instead of any of the other myriad shiny things that pop up on HN? Well, a few reasons:

\- I really wanted to familiarize myself with pure FP. I had become dissatisfied with OO techniques, slowly thinking of them as an evolutionary "dead end", and wanted to explore something else. IMO, Haskell was the best way to explore this.

\- I also really wanted to be able to "read" Haskell. Generally speaking, Haskell has become a sort of "lingua franca" in the functional programming community. You often see snippets using its syntax and read concepts explained using its ideas. When I encounter terms like "typeclasses", I wanted to go from "eyes glossed over" to "comprehension".

There are more reasons, but suffice it to say that I thought that given my long term goals, not knowing Haskell had become a stumbling block. So, I decided to change that, and working through the cited book has worked for me.

I didn't _only_ work on this project. I did take a few breaks here and there as needs must, and interest naturally waxes and wanes, but the motivation held and the project is completed.

Having completed it, I have a few new projects that also have compelling reasons for me to work on them. I have flip flopped between them at different times, but there have been good reasons for doing so, and the reasons have not been because I lost interest, but because of external factors.

\- Realize that you will still sometimes just desire to experiment with something for a little bit. That's OK. The other day I downloaded and messed with Electron. It was just something I wanted to try out and satisfy my own curiosity for something random. But you should think of this as being a time- boxed experiment, and not something that you are committing several years of your hacking life to. Unless, of course, it _is_ , but in that case, count the opportunity costs before mentally committing yourself.

\-----

Edit:

I forgot to include this link; I think it might help you too. [http://blog.fogus.me/2015/11/04/the-100101-method-my- approac...](http://blog.fogus.me/2015/11/04/the-100101-method-my-approach-to- open-source/) It has been discussed on HN a few times.</comment>