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?
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).
"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.
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.
Ya, sometimes I follow this path as well. I like how you put it.
exactly what I feel
FWIW I've found that there is a cross section between excitement of a new project and the momentum of that project.
Most projects fizz out when the excitement wears off before the amount of work you've already done on it has enough momentum to push you to do one more task.
When I push though that motivational hurdle, I find the amount of work already done incentives to continue on with it. The next task is obvious and relatively easy, because there is something to work with.
Now, losing confidence that everything you've written is garbage and refactoring the same systems over and over again until you give up- that's the hurdle I choke on :D
> Now, losing confidence that everything you've written is garbage and refactoring the same systems over and over again until you give up- that's the hurdle I choke on :D
My recommendation would be to pick a very small project and have specific goals for a Minimum Viable Product (MVP). Try to define a project you can complete in a week or two. Keep the list of specific features you want very short. Then, remember that the code doesn't have to be perfect, it only has to be good enough to implement those specific features you wanted. It doesn't have to handle epic amounts of traffic, etc. It's ok to cut some corners round as long as it does the job for what you're trying to achieve.
Otherwise, just as a general mindset, I try to remind myself that a lot can be done incrementally. Sometimes it's important just to build a working version of your software so you can try it out and learn some lessons by playing with the working software. If you stop and refactor endlessly in an attempt to try to build the perfect system, you'll never get to the point where you're actually trying a working version of your program... Which is the point where you realize what's really important or not to achieve what you want.
Agreed, I have found that as well. I have tried to define how much momentum I need to stay engaged. For instance, I started a YouTube channel. The process of creating videos was a short enough feedback loop (a few days max to start/finish a video) that I was able to stay engaged for longer than normal. I fed off of each finished video as the momentum to keep working on the project of "growing an audience around a topic I was passionate about".
I have also found that I am able to stay engaged in other applications where I have a shorter feedback loop, to maintain momentum.
That's a great example. I experienced something similar with my side project, which was a music magazine app, similar in concept to the (failed) iPad interactive magazine projects that were all the rage back in 2012 or so.
It was very challenging to build something that scaled to phones and tablets while having a magazine-type aesthetic (compartmentalized information on each discrete page).
In the end, I abandoned it, and decided to create mini-zines and post them to Instagram as slideshows. Zero interactivity, but they're orders of magnitude faster to make, layout is constrained to IG's 1:1 aspect ratio and and I already have the artboards as I used Sketch to build my static mockups.
I think you made a good saving of the initial investment and still managed to to publish your content which is mission accomplished. In fact you're likely to be consumed from IG.
I also tend to go to the path of least resistance and do things in batches and the simplest way possible but concentrate on the most important aspect of it, the content. In the end this is the winner solution for me, if I were to take the long road I would most likely stumble upon details that are not important. If they are important there's a possibility to fix one aspect or another.
True, I was stumbling on details constantly. Page load times, optimizing for screen sizes (this was a no-scroll, pure swipe-based mag), and it was very discouraging.
And you're also right about IG, people actually saw it and it would come up if people searched the tags. As a passion project, that's 70% of what I wanted. That remaining 30% probably wouldn't have been worth the effort.
I'd bet a few dollars that this is the most common answer. A little piece of anecdata, being stuck, jobless and confidentless due to too much of this dopamine rush theory, i did propose to write something for my 'boss', at a food store, a little single user vue app .
a few conclusion :
- i did actually deliver something functional (for a change)
- i still had twenty thousand dreamy ideas (as noted in a lengthy TODO file)
- doing something for someone else changes our your brain rolls. you dream less because you want to make them happy
- it was painful at times, dealing with constraints
- but solving these was a good feeling. a bit less exciting but longer lasting. a feeling of knowing more and deeper (much unlike dreamy brainstorming)
- it makes you operate for true progress, you aim at surgical advances instead of abstract designs. that is a great thing. sobering
my 2 cents
 the theory behind it was that I'd do something simple, without pressure, that I may sell, or at least put on my resume (vuejs being trendy)..
I feel so related to the third point.
I think it's a subtle but important one actually, the dopamine rush is a bit a self pleasuring quest, so thinking for others is already a step in the right direction
That's also an idea I keep having about general adult life, career and happiness. Youth is all about intense self satisfaction, but running this race too long is a dead end, and it should be hinted that working for other citizen is actually a good thing for you (because it avoids this dead end)
I found having an ideas sheet is good for this. You can know the idea is recorded and that removes the desire to immediately work on it. And you can later logically choose the best thing to work on from the list
Yeah, I recommend keeping a sketchbook/journal to write down and plan out the side-projects, then when you have more available time pick which one to start on given how feasible and interesting they are now. From my own experience I have found that if something still sounds interesting two months after writing it down then it's something worth spending time on.
I was reading a book called "You're Not Crazy - You're Codependent" (not relevant, except the source of what comes next in my comment) wherein the author made a distinction between "dreaming" and "fantasizing", the latter being destructive (in some cases) or unsatisfying.
I feel the distinction is valuable for me, but I've also been helping my teenager work through his challenges wherein he hits the first speed bump and invariably gives up on something. Getting "through" the challenge has been a learning process for him.
He realizes he doesn't want to kick things up over and over again, only to hit the first roadblock and then lose interest.
Interesting distinction between "dreaming" and "fantasizing". Does the author define the two as the same process with the only difference being the effect the action has on you (e.g. destructive/unsatisfying)?
I don't have access to the text right now, but when you consider the literal definition of "fantasizing", it's pretty heavy: "to imagine things only possible in fantasy"
I was thinking the same thing. The rush from the possibility versus the actuality applies to relationships as well.
I frequently think about how lucky I am that my dopamine rush is linked to seeing projects finished. People ask me how I get so much done, but there really isn't much of an answer other than "I like doing them and I enjoy seeing them finished".
Here's a beeping ball toy I made for my blind cat yesterday:
Very cool! How did you make this? I wonder if having the vocalizations of a prey animal (i.e. mouse) would provoke a stronger response in your cat than a generic beeping.
I used an ESP8255, a motion sensor (a spring in a tube with metal walls) and a buzzer. Something better-sounding than a beep would definitely be preferable, but I don't think the buzzer can really play anything other than a beep...
I'll have to do some research, maybe it can do some rough approximation, thanks for the idea!
I like this too. At the same time is this only making you feel better and not addressing the problem?
You definitely dont want to beat yourself over losing interest in side project. This is something many people including myself do, especially when side projects are a hobby. But if you want the side project to be more than 'a hobby' you still need to address staying power.
I see a big disconnect between:
“ 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.”
“If you are no longer interested in a project you started, maybe you already got what you came for.”
There is no way that you got what you came for in those five minutes.
There’s several orders or magnitude that fit into this disconnect and it just says “ADHD-I” to me.
...and I feel my eyes roll back into my head when I read this:
“...a personality type (that is definitely not ADHD)”
...because the invention of new personality types and the stigmatic treatment of ADHD is just... very shallow.
I'm a guy who got diagnosed with ADHD-PI when I was 28 and it instantly made so much of my life make sense. (I went from an unfulfilling career I hated to self-teaching CS and software dev & getting a job in the field within about three years.) And yes, I also got very strong ADHD vibes from this post. Having said that, I'm certainly not a doctor and there are a lot of things besides "can't stick with side projects" that go into a diagnosis.
But if the OP (or others reading) also experiences issues with working memory, losing items like wallets or keys, following directions (not because you dislike them but because you just can't keep them straight), sleep issues (generally, staying up significantly later than average), physical restlessness such as restless legs, forgetting appointments, lots of emotional impulsivity via outbursts, a very strong pull towards stimulating things like reckless driving, dangerous levels of drinking or drug use, etc., among others, they might benefit from discussing with a doctor.
I'm scared of how accurately your second paragraph describes me. Well, there are a few differences (I don't lose things, mainly). Thanks for the glimmer of hope.
I have zero issue with focus or any aforementioned issues (save occasional insomnia) but still identify with OP.
My god, literally everything in that second paragraph is what I do.
Ignoring the fact that “five minutes” was probably just hyperbole, you can absolutely get what you came for in five minutes. Five minutes is long enough for me to validate an idea from “wouldn’t it be cool to do X?” to “man I really don’t want to do X”. And I’ve just gotten what I came for, validating (or invalidating) an idea.
Just because you have an idea doesn’t mean it’s worth pursuing that idea, especially if it turns out you’re not interested in that idea after all.
I think this is a pretty important point. Often times I think I'm interested in doing something or I like the idea of it, but it doesn't take me very long to realize that I'm completely disinterested because of the actuality of the thing. I'm OK with that.
I think the parent is probably trying to say that you definitely haven't done enough exploring on most subjects in a short time to find and glean all the interesting bits, and I agree with that as well. There are work projects that I would have abandoned long ago if they were personal projects that I have got A TON out of by sticking with them and working on them for years. But in those years there has been a lot of slog as well, and it's probably not the optimal way to mine all the knowledge nuggets...
> “If you are no longer interested in a project you started, maybe you already got what you came for.”
I found a method for this which works for me. I have a book labelled "Ideas & Inventions" and when I have an idea, I write down everything that suddenly hit me, and I keep writing until I feel I have exhausted the idea. If the idea then goes, I leave it in the book. If the idea remains, I write about it again, until, if it remains and I have to implement it, I do so.
Sometimes it will be a game idea (I've spent time as a game dev, the last idea cost me a couple of years & my family before I realised it wasn't worth it), sometimes it's an invention (electronics, mechanical, or both), and sometimes it's just an idea in general.
I find that the feeling that I have to make something is my way of preserving an idea, and to simply write down the idea often fulfils this need. And of the many ideas I write down, only the ones which really matter make it past the notebook phase.
Hope this helps others out there, and if you do try this method and find it helps, please let me know!
Thanks for the tip, will probably try to rewrite the idea myself.
I dare to suggest meditation. We all get X number of ideas/thoughts/images/etc flying through our brain every waking minute. To be able to focus and do "deep work" we need to either break through the noise/clutter on our minds, or meditate/use yoga to teach our mind to be "quieter". I managed that after "a while" with Iyengar yoga (I assume that most types of yoga will do) but I liked this one better for its discipline.
For the question, another simple way is to dedicate "X amount of days". Increase the "5 minutes" to "5 days". 5 minutes can be misleading. 5 days is enough time to (for sure) know if you want to proceed or drop. You can try your period to be fewer or more (days), but definitely NOT a 5-minute-cycle.
If you weren’t that serious about making a rogue-like in the first place and what you really wanted was the rush of starting a rogue like project, then sure you got what you came for.
Much like a kid might say they want to be a footballer or musician - what they really want is the fame and recognition of being a footballer, not the 6 hours of intense training every day for years without any fame and glory. We see this much more in tech than we did 10 years ago, because now everyone wants to be a rockstar CEO hacker startup founder making a $1 billion exit at 19.
And in fact in some cases you can suck it up, major in CS, get a prestigious tech job, and then after a few years burn out because you realize you never really liked CS/programming in the first place, you just liked the social stickers that were on it. I’ve seen it happen many times in my career. Often these people will pivot to being PMs or some “tech lite” function and be much happier for it.
The fact that people suck at knowing what they really want doesn’t make the observation any less valid.
What that means is that you have to get really good at knowing what you actually like and enjoy - not what you enjoy on the surface of it not for its own sake, but for some values attached to it.
If this is a pattern that persists throughout this individual's life, it's highly correlated with ADHD. We're talking about someone who literally changes their mind within about 5 to 10 minutes, multiple times a day. At least, that's what would happen to me pre-diagnosis.
You don't necessarily need ADHD for this to be a trait. Source: me. I don't change my mind every 5 minutes, I just lose interest in certain projects.
I can relate this to part of my experience picking up stuffs and putting down in a couple of weeks.
Sometime I can feel that I'm in this or that because of some ego or future bragging and they dropped dead quickly.
But then again this probably roots from my childhood as I tended to appease to my teacher or parents to do a lot of things I don't enjoy. So it's really difficult to tell nowadays if I really enjoy doing this or not.
I read "five minutes" as being hyperbolic, but it could simply be a rapid deflation of interest even without gaining new knowledge. I've read about creating a roguelike but didn't have the interest to really go forward with it.
> If you are no longer interested in a project you started, maybe you already got what you came for
This line alone got me to go buy the book.
As someone who's constantly churning through ideas, and who feels afflicted by ADHD just enough to worry about it but not quite enough to actually think I have it, I've found myself abandoning a bunch of projects when at a 'mostly done' state. Generally, I tackle the interesting parts of a project, and once I've gotten the proof of concept working (whether it's a visual PoC or technical PoC) and the only parts left to do are the boring user registration / billing parts, that's when I lose interest.
I've watched my prototypes languish, and over the years I've seen other people execute them after I have and go on to great success, and have decided to make peace with the knowledge that I'm probably not the guy that would have devised a strong marketing plan, beat doors down or cold-called for sales, etc., but a part of me laments that I didn't bother finishing them at the time so as to at least act as social proof to point to and say "I did that first," even acknowledging the pointlessness of it.
Thanks so much for the recommendation.
> I'm probably not the guy that would have devised a strong marketing plan, beat doors down or cold-called for sales
Ever considered pairing up with someone from a nontechnical background?
I've tried a variety of things. The first big step once I realized that I was sloughing off the boring bits was to try tackling the boring bits first. Start with a basic app that included user registration, an empty FAQ page, etc., but that generally meant quitting the project earlier rather than later. Then I thought well, maybe I'll just build up a library of reusable components for that, but hey guess what? That stuff is boring
So, that's the long way around, but yes, I have partnered up with people who might compliment my lacking skills, but it's tough finding people motivated enough that I feel like I'm letting them down if I don't keep up. I'm generally great at getting projects going through the hard bits, but in my experience, most other people fall off or lose interest in the project before it even gets to the point that I might.
To date, the only thing that reliably ensures I'll complete a project is paying me to complete a project. Weirdly, if I'm getting paid for something, my mind doesn't suffer any of these ailments. I will still cherrypick the most interesting work to do, but if there are features with deadlines, so long as there's money in it, I have no problems getting myself back on track.
I'm exactly the same way 100%. I've gotten incredible things done at startups and companies, where my work alone was floating the companies, and the products I created became the main product of the companies.
But every time I realize "Why am I handing someone else all this value", and venture out on my own, I can't seem to motivate myself in the same way. It blows my mind and I can't seem to figure it out.
Maybe I need to invent an imaginary supervisor to report to at the end of the day.
> Maybe I need to invent an imaginary supervisor to report to at the end of the day.
Heh, someone had that idea too and turned it into a startup: Boss as a Service https://news.ycombinator.com/item?id=18512197
That struggle is real. I've got a ridiculous amount of half-finished MVPs that I simply got bored of. It often makes me feel like an absolute failure, especially when I've told others about something I'm working on. When they ask "Hey, how is that project X you were working on 3 months ago going?" I'll have to think about it because it was probably 3 projects ago.
But I think you're spot on. From each of these projects I've gained something, and once I've hit that point the drive has gone away.
While I often feel like a failure with all of my "failed projects", in my day job people are often blown away by how I seem to know a lot about everything. The truth is it's because I end up trying most things in some fashion with one of these many projects.
> in my day job people are often blown away by how I seem to know a lot about everything
This has made my meandering journey worthwhile as well. I don't have many completed projects under my belt, but I have gathered quite a bit of design and coding techniques, different languages, technologies, etc.
The one completed project (completed in a programming sense, but not a business sense), was one that was done just quick and dirty with no patterns, no architecting of any kind. I resolved to not learn anything in the process (besides understanding the dataset I was parsing for human consumption). In this way, I was able to actually "finish" something. That said, I did learn about deploying on digital ocean, about the importance of having a repeatable deployment process, etc, so it was actually a good learning experience in the end.
I’ve been working on the same project for over 15 years. It’s been written in C, C++, Python, Ruby, Java and Scala. It had an XWindows front end, Swing front end and now a simple web front end (but there is talk of moving to Vue or React.) It ran on the local machine, then shared web hosting, and now AWS. It’s used flat files, SQL and Mongo for storage.
Currently it’s in the shop because I decided to rip everything into microservices and deploy it using Kubernetes.
Along the way I learned 2 things. First, I like solving the same problem over and over again with different technology. You learn both the new technology and uncover aspects of your problem you hadn’t seen before. Second, it’s important to release. I’ve got a website with 75% of the links broken, and the only visitors are me and the googlebot, but it’s released. There’s an artifact I can show my wife or my brother without firing up an IDE. It makes a big difference with respect to a sense of accomplishment (despite the broken links.)
That's awesome! Maintaining the same project over 15 years, having gone through many transformations, has got to be an incredibly valuable experience.
I always try new problems with new technologies, but I can see the benefits of sticking to one problem over and over.
I feel this comment. I always have multiple stacks of physical drawings and notes for different projects that I'm working on but don't always finish.
However, the best thing about all of these unfinished projects is it gets easier and easier to learn different things. Even when my interests don't have overlap they seem to add value to each other.
> half-finished MVPs
What I would give to have half finished MVP's! I have a long list of ideas that I can't decide which one is the most worthwhile to pursue, so none of them get started.
at least you don't waste much time...
I feel your pain.
If we can minimize the amount of time & effort it takes to go from idea to launchable MVP, then all of these side projects and future ones suddenly become significantly more viable.
I wrote about this goal in-depth here: https://blog.saasify.sh/finding-your-passion-as-a-developer/
> “If you are no longer interested in a project you started, maybe you already got what you came for”.
I also realized this at some point but as a compromise I now take the time to write some text to document some conclusions.
This helps with two things:
It feels more finished, which is important for my mental hygiene.
And when I do come back to something at a later point I can re-assess quickly what the circumstances and the value was, which can be very practical, especially if it was just some small exploratory thing.
This is exactly one of the tips the book provides. Good validation of the book I guess.
My "projects" folder on my PC is scattered with numerous projects that I've started and never finished. These range from games, tools and webpages - written in every language that I found an interest in.
I think you're right in that it's the journey that matters to some, not the destination. As I've gotten older, I feel less pressured to finish these side-projects.
When it comes to actual day-job work. The final 20% of a project is always the hardest for me. As I just want to move onto the next great thing. The last 20% is always the worst part for me (testing, bug fixing, documentation). It's what they pay me for though :)
> The final 20% of a project is always the hardest for me.
I'd be more than happy to get to the 80%. It seems like I used to be able to do that when I was younger. It could be that I aimed lower.
I like the saying I read/heard somewhere, that's I believe based on Pareto principle, saying more or less: "After getting through 80% of a project, what's left to do, is just to complete the remaining final 80%" :)
My pshrink told me the same "maybe you just like to learn the new technique, not to finish". Like that I have welded a ton of steel into a carport, then left it unpainted. Given the fact that I always focus on the hard parts and the struggle to finishe the "details" and that throughout my career I've been inclined to do POCs, MVPs, and never finish things. That and the fact that every single day it takes me several times to cross the door because I forget the wallet, keys, phone, etc, make me wonder about ADHD Is there a "cure" for it or is it just a label to get and use as excuse?
edit: I got bored of the pshrink after 5 sessions
ADHD is absolutlely a real thing, it is treatable, and there is a large adult population that is undiagnosed. If you're struggling and you suspect it may be related to ADHD, you should look into getting tested.
My girlfriend got her diagnosis just a couple years ago (she's 38 now). The impact Adderall has had on her organizational capacity is immense.
Hmm I do have ADHD but your first statement "learn the technique, not to finish" definitely could apply to me both in technical (software engineering and coding) areas of my life as well as artistic (music, recording, mixing, etc.).
ADHD isn't an excuse, there is treatment.
Awesome thanks for the book recommendation, just picked it up.
For me, this has been the defining struggle of my adult life. I've only just become truly aware of it though but when I think back to stuff like when I was a kid playing MMORPGs I would utterly struggle to make a character to level 10 before re-rolling for something more appealing.
Now it is almost a pathological issue I have where I just can't seem to choose something that interests me because honestly, everything is just as equally interesting. Painting, guitar, cooking, lifting, game development, ios development, etc. Its like paralysis by analysis to the nth degree. It's easy to say "just try some things and stick with what you enjoy" but eventually the going gets (slightly) tough and i just wimp out and quit. Except for lifting...for whatever reason I've been obsessed with that for almost a decade now.
>Except for lifting...for whatever reason I've been obsessed with that for almost a decade now.
My hypothesis is that exercise, especially weight training, is one of the few activities where the growth curve is front-loaded with improvement. The phenomenon of "noob gains" provides positive feedback much quicker than other activities, and that feedback is much easier to get--just look at how much you lifted this week compared to two weeks ago, or how fast you ran that last mile.
By the time your gains start to slow down--whether that's six months or a year from now--you've already developed a habit.
In my twenties, with no responsibilities and with some money, I thought to get a motorcycle and learn to ride it. I stopped when I looked at my room and saw the vast number of things I was already dabbling with and deep-diving. I knew that if I got a motorcycle it would consume my interest for something like five years as I had to understand how every single part worked down to the bolt.
That could be a great thing. But for me, then, I didn't want to go into suspended animation for half a decade and wake up with deep motorcycle knowledge. So I completely dropped it.
I totally have the same issue. Now that I know this pattern about myself, I pause before doing anything because I know that the n-th state is me stopping the project. But I’m learning to push through and just engage in projects, because the paralysis is way worse for me than the doing and stopping.
Similarly I've managed to stick with lifting, and cooking. The others aforementioned have faltered, but I am finding enjoyment in reading and research, and games. I think when I've reduced the pressure on myself to produce creatively at my leisure, so too has the stress. But I still do want to be creative.
> “If you are no longer interested in a project you started, maybe you already got what you came for”.
That's definitely the case with many of my unfinished projects. My "operating system" is a good example. I have an OS written completely from scratch for RPi3 that can run concurrent processes (and pretty much nothing else). I started to look into using the MMU but quickly realised that it's very hard and I'm not really that interested in it right now. All I really wanted to know was how to write an operating system. Now I know, but I'll almost certainly never actually write a proper one.
This seems to be answering "how can I stick with a side project?" with "you don't need to." Maybe it's good advice, but OP specifically emphasized asking folks how to finish.
> Has anyone else experienced this, and, more importantly, found their way out? How?
In Myers-Briggs they'd call that either the INTP or ENTP type.
Similarly, I'm more interested in research, learning. I'm in the wrong profession.
INTP here. Starting projects and having multiples at once sure seems comfortable, but, ADD does not. It is a measure of rigor that there are projects that get done. Now, there's something to be said for projects that were always "low priority" and are waiting for the right moment, but there are also ephemeral, same-day kind of projects that come from having the tools/resources available to you to scratch whatever itch you have.
IMO, OP's problem isn't that he/she can't decide which side project to do, it's that they have already decided that the side project involves coding, and they're already a good coder. Doing your job as a side project seems...boring. Pick something you don't know how to do, but wish you did. Learn CAD, use a bandsaw, 3D print a D20, or just take your bike all the way apart. This idea that every software engineer needs to treat software as their hobby is frustrating to me. Bankers, lawyers, and doctors don't do that, why should software engineers?
I think the origin of this idea comes from the time when personal computers started becoming available, and a generation of then young people started tinkering with them.
Some of us then went on to do some version of this hobby/passion professionally. In that case, having software side projects doesn't seem so weird.
Analogies that come to mind are folks like climbing instructors and mechanics, who also may have had these activities as fun hobbies before making a living at them.
Nowadays there is a higher percentage of folks who got into software (or hardware or whatever) the same way the bankers, lawyers, and doctors did; it was presented as a good career choice if they learned it.
I agree that expecting those folks to have side projects is unreasonable.
I can agree that yet more coding as a hobby is the dullest thing imaginable, when it's your job. Honestly between reading/research, gaming, music and exercise/outings my leisure time fills up quickly enough. That being said I had long clung to the idea of having something to show, a creative effort. I've tried writing and that's been sputtering.
And in Ayurveda it's called a Vata mind!
I always attributed this behavior to undiagnosed ADHD, but "Scanner" is a, unique but fitting, group I never heard of. Thanks for sharing!
Zoom Party would be great! ;)
...unique, unresearched, vague, made up, not treatable unlike ADHD, but lacking in negative stigma because it’s new and exciting and therefore even more likely to appeal to someone with untreated ADHD...
> “If you are no longer interested in a project you started, maybe you already got what you came for”.
Agree, I've been through this myself plenty of times. I think there's a way to turn this into a tactic though: a completed project has loads of gaps and finishing touches that a learning prototype lacks, and it comes with it's own interesting challenges that are hard to predict.
So if you're interested in learning what a finished product would entail, you can only achieve that understanding by finishing a product. I've found that there are some products where I'm interested in understanding all of the details, and some which I'm not, and that's sometimes helped filter which projects I should stick with.
The worst outcome is when I have to shelve a project because the tooling just isn't mature or usable enough to make the project fun.
I'll definitely get the book.
I don't know. It's one thing to leave a project unfinished, or to loose interest when it's time to fix the UI, but it's another thing to not be able to make progress at all.
In my side projects I always keep todo.txt. There's a line for each thing I need to do, in order. Putting new things in that file and removing ones that get done becomes a kind of game. Try that on whichever idea you find yourself coming back to again and again.
I'm in the same boat. Another thing I've realized is that while my interest may jump between half a dozen different things, if I just let it run its course, it tends to circle around. I.e. I don't leave an endless trail of projects in my wake, I revisit different ones as that interest rekindles. But before I realized this, I would be really hard on myself about switching, trying to force my interest to sit still, which really just killed my interest in all of them.
Bottom line: don't try and pin down your interest, open up to it and let it run its course. The course may not always make sense but it knows what it's doing.
I can recommend this book, too. Most helpful for me was the concept of the scanner personality.
Sometimes it just seems as you are not finishing things, for me, it's more like I'm letting some things rest for quite a long time but pick them up again later. I'm just craving variety to get fresh input for all the other things and I see this as a skill. Today I am glad that I haven't unlearned to play around.
It has its benefits, tons of it, I was only unhappy with it as long as I've let others stigmatize me as lazy or undisciplined for how I am.
Yes, but I think successful entrepreneurs know when to move on, when to pivot and when to stick with it and PERSIST. I have quote framed at my desk that goes something like this:
"Nothing in the world can take the place of persistence. Talent will not; nothing is more common than unsuccessful men[women] with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and determination alone will bring success."
Hey, I just wanted to say thank you for this comment. After reading it I started thinking about what I want from my side projects and realized I need to, among other things, to switch the focus from "what will happen when I finish this" to "what will I learn along the way" and to provoke my curiousity. I've been much more focused the past few days, hopefully it sticks. Thanks!
I've got this problem except with learning / studying.
I realized I am a lot into science and engineering late in life. Now I want to do all of the Khan Academy in Chemistry and Physics; learn nano-/bio-tech; learn cybersecurity... and probably should just stick to learning backend dev in order to get a job.
People call this being a polymath, but I am seriously concerned for myself. The best I can do is take it one subject at a time.
On the building side, I simply have no ideas I am interested going for.
> "If you are no longer interested in a project you started, maybe you already got what you came for"
Very much this - I have very few finished side projects, but in hindsight I can track the course from even my first personal project in school to where I am today.
I’m also just like you. So much so that what you just described speaks volumes to me. I’m going to read the book you just recommended. Thank you!
Also, I’d love to share notes with you or others because I haven’t met a ton of people that struggle with this. Zoom party?
I used to be a lot like this too. Eventually I got tired of it because I felt like I never had anything to show (mostly show to myself and feel proud of).
For hobbies/projects where the goal is just to unwind and enjoy myself, sure, I still do this. But that's often still not satisfying to me. I started making the intention to just complete the damn thing, even when it wasn't fun anymore. Motivation is hardly worth anything tbh. I used to only work with motivation, and while it felt good at the time, nothing ever got completed and I probably felt how you do a lot of the time.
Second, learning is hard. If you think you're comfortable with a new language, framework, whatever.. but you lose steam when working on whatever your building with it, you might not know it as good as you think you do. It's a lot easier to keep steam when there aren't roadblocks, but when you continually come across roadblocks, it just doesn't feel like your moving towards your goal with much speed. But this is generally where the learning takes place.
And I've also seen, finishing one project to completion makes it a lot easier to finish the next project to completion. It's a skill you have to learn (to do a personal project even when it's not fun, and there's nobody telling you you have to do it)
tl;dr: for enjoyment and relaxation, don't finish projects if you don't want. For learning / creating, make it the goal to finish and know that it'll probably be not fun sometimes
I might also add that you may want to scope your projects small. If you try to boil the ocean, you'd never get done.
This speaks to me on an almost spiritual level, I need to get this book!
Yeah you're getting dopamine.
Those that are more successful can get past that and make something more profound. There's a lot more than dopamine when you make something you can be truly proud of, that can potentially be a living for you as well.
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.
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.
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
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.
Honestly the goal is to just write everything down. When I had been working on some too big to swallow projects during highschool I had lots of ideas but I couldn't implement them quickly. What happened is that by the time I was done with one major feature I had already forgot all the cool features that I planned in my head. Now I just write everything down even if my issues in the ticket system consist of just a title with no body. That way you can stop working on a project for 2 months and pick up right where you left it. The projects end up having a 50:50 split between issues and actual commits. In theory it also makes it easy for other people to contribute.
I'm picking up this approach
> I prefer not to talk about my future dreams for a project.
I feel this way as well, but my reasoning is different. I do much better work when I feel like I don't have to do something, but I can choose to do something. I've almost always done more efficient work on my own side projects than on the things I've been assigned to do.
When I talk about an idea that I haven't really built out yet, it creates a sense of obligation to do that work. That sense of obligation makes me not want to do the grunt work required to get the project done. I do better if that obligation is all internal. In that sense, writing in a journal about my ideas and vision is much more beneficial to me than talking with people about it.
That said, I try to be careful about recognizing when I do need to talk with others. If I went too far in the internal approach, I'd end up doing years-long projects without ever validating that they're meaningful to other end users.
This is good advice, and both parts rely on being aware of your own mind and even tricking it a bit. This reminded me of a Moxie story about nearly dying while sailing :
> Strangely, I could feel myself drawn towards the temptation of giving up, even though I knew failure meant certain death. In hindsight, I think it's because the act of giving up feels so similar to the sensation of success, at least in a superficially immediate way.
Over the years, the mantra that "giving up feels like success" has really helped me not give up simply to access that feeling.
With regards to point 2, I seem to remember reading once that if you allow yourself to think too much about success in the future, it steals away your motivation to complete the task in the present. It gives your brain that satisfaction without actually having succeeded at anything, and then you stop trying because you are no longer motivated.
#2 so much! When I tell people my ideas I can feel the motivation dissolving. Trouble is, my ideas sometimes suck and I need another person to tell me they are good. But if that person doesn't get excited about the idea it takes the wind out of my sails. I think this speaks to why I became a developer in the first place; I want to solve people's problems. I want to be useful. If I tell someone my idea and they aren't interested I feel like everyone will feel the same so it must be a bad idea. But what if they are right. Do you ever finish a project only to find that nobody cares about it? Isn't that worse than not finishing?
It depends. It is not worse than not finishing if one learns from the experience. Secondly, personal projects do scratch some itch and bring a certain satisfaction and if if others appreciate it then that's a bonus.
Point 2 is such a golden piece of advice and so obvious in hindsight, yet this is the first time I've encountered it online.
If you have any online written pieces or blogs, please share them.
>Peter Gollwitzer, Paschal Sheeran, Verena Michalski, and Andrea Siefert published an interesting paper on this topic in the May, 2009 issue of Psychological Science. They argued that important goals like pursuing a career path involve a commitment to an identity goal. ...
>They suggest that when people announce an intention to commit to an identity goal in public, that announcement may actually backfire. Imagine, for example, that Mary wants to become a Psychologist. She tells Herb that she wants to pursue this career and that she is going to study hard in her classes. However, just by telling Herb her intention, she knows that Herb is already starting to think of her as a Psychologist. So, she has achieved part of her identity goal just by telling Herb about it. Oddly enough, that can actually decrease the likelihood that Mary will study hard.
You might find this interesting: https://philmohun.substack.com/p/work-with-the-door-open
Not a written content, but Derek Sivers' TED talk https://youtu.be/NHopJHSlVo4
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.
I really like that three kinds of developers take. I've never thought about it in that light before but it seems to ring true in my (albeit limited) experience. And I'm definitely a kamikaze as well.
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
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/
Deep Listening at the Recurse Center: http://glench.com/DeepListeningAtTheRecurseCenter/
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.
just read your "why I quit" blog. thanks for documenting your journey as it will help other travelers give themselves 'permission' to explore new paths.
Agreed, another one on this topic is here: https://medium.com/@dvassallo/only-intrinsic-motivation-last...
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.
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.
> 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'.
Can relate, my personal solution was to talk about the project to people around me (often non-technical), some would be interested to try, and when I feel like giving up, they are the one reminding me they are looking forward to use it.
> 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]
>> 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!
This is fantastic advice.
Just because we could possibly code some amazing concept project, doesn't mean we'd enjoy it. Or that it wouldn't end up causing us huge amounts of stress.
A lot of us are stuck at home, bouncing off the walls and feeling like we're not doing anything.
THAT IS OK!
We're in a world that is both scary and new, we don't know quite what is going on, and we need time and effort to process that. By "effort" I mean intellectual, spiritual, physical, and emotional. (If you're not religious, think of a workout in a gym: spiritual effort is stretching and flexibility, and emotional effort is strength/weights. Or perhaps that spiritual is subconscious and long-term, while emotional is conscious and shorter-term.)
tl;dr - too much heavy shit happening, don't overburden your head.
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.
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.
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.
> Get people using it. Period.
Or find people that code with you, like a hackathon.
I recently wrote an application 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.
I second that.
To combine with "starting small" it can be a simple single-page app, or a blog post, or anything. At least for me, feedback is the fuel (even negative feedback >>> no feedback).
> Get people using it. Period.
This is a good TL;DR
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.
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.
I read that in the section Commitment and Consistency of the book, Influence - https://sites.google.com/site/724ecialdiniwiki/home/commitme.... If you commit to something publicly to someone especially written, you are more likely to do it.
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.
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.
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.
> 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.
Do it anyway. Or think about how you can improve it. If it's open-source look at their code and collaborate with them.
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.
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.
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.
As someone who has been failing on side projects for over 20 years, I feel qualified to answer this question.
These tips above make failure cheap. Success is built on the many failures.
- 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.
I also have general tips on side projects that make them more fun and less like work:
I also have these general tips based on mistakes I made in the past:
- Use a different editor/ide to $job. - Use a different programming language.
- Read other peoples solutions on github. Its inspiring. - If you get stuck take a break. Its not work and you can slack.
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 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.
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.
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.
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.
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.
> 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.
With portfolios it's perfectly ok to take existing ideas. Especially for learning purposes there is no way around duplication.
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. 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.
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.
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://github.com/fullynotanalien/bozorun (edit: formatting)
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.
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
Find a problem you want to solve for yourself and then build a solution.
I created 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.
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
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!
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.
There is one very simple piece of advice that I have found helps me with this:
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.
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.
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
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:
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.
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.)
Thank you very much.
I'm quite scared of medications, tbh, but I'd very much like to explore improving techniques.
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 ;)
Yes, I used to go really heavy on it. Had to quit it almost entirely, for both heart palpitations and anxiety.
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.
Exercise and mindfulness also worth mentioning. Good sleep also a biggie.
ADHD seems to be a popular diagnosis in the west (mainly US).
But it can just as well be that you have depression and anxiety disorders or anxiety based personality disorders. (E.g.: Obsessive Compulsive Personality disorder which includes dysfunctional traits like perfectionism that can interfere with your ability to complete projects).
What I am trying to say is that if you feel that psychological counseling can help you figure out why you are stuck in life or some other thing in life in particular, please do not try to diagnose yourself. Go to a good hospital that specialises in mental health and get a proper diagnoses by a qualified psychiatrist.
It is very easy to go the wrong track and come to the wrong conclusion while self-diagnosing yourself as many symptoms overlap with many related mental ailments.
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.
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.
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..., 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.
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.
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?
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.
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.
Have you considered productizing some of these devops tools?
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...).
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.
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.
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.
For me, writing a thing down gives me the option to forget it. People are different I suppose.
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!"
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.
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.
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.
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.
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.
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/
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.
(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.
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.
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 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:
My two cents.
- 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.
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.
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.
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.
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.
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
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:
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.
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...
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.
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.
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...
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.
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.
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.
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.
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.
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.
What projects are you working on?
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), 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.
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.
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.
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.
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.
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.
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!
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.
I write a blog (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.
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.
e.g // implement GetUser()
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 :)
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.
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.
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...
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
Yeah I totally agree. I need to be useful to other people to feel happy and maybe I should be OK with that...
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.
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.
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). 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.
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.
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).
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.
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).
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.
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.
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.
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.
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
I do exactly this!
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.
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]. This has been the longest i've worked on a side project and I'm really proud of that.
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/
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Do it with someone else. You're then not just accountable to yourself.
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.
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.)
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.
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
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?
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.
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.
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.
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.
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.
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.
Any chance you've written about this side project and the areas you learned about and how to figured those things out?
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Apparently that’s exactly not what you should do:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Keep the scope small so you’ll be done fast
Become accountable, e.g. partner up with somebody else
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.
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.
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.
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.
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?
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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:)).
Build something that you need (like, scratch an itch).
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.
Use your skills for something or someone fighting for a cause you care as a person? Inner motivation would come naturally, experts say.
Another angle, maybe you have to churn through many (hundreds?) of ideas before you get to one you really want to see through.
Offer to solve a local business' solution pro-bono and commit to self-imposed deadlines
Preferably a local business that's been hit by covid pain
I recently read Angela Duckworth's "Grit" and from reading this, suspect you might derive some value from it.
Find a project that is useful to you.
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.
Find something that bothers you in your everyday life and make a MVP that solves that problem.
Side projects should always be in a position where you want them to become your main project.
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.
Find a problem in your life you can improve/solve with software. Then work on that.
Do something small - write an integration package that bridges 2 tools you enjoy using.
My problem is quite the opposite. I am able to finish a side project but I lack ideas.
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.
I felt like this for a long time, then I started to open my eyes to all the problems around me. For example, I started github.com/rmpr/atbswp because I used something like that on Windows, and when I switched to Linux I missed it, on simple solution was to start working on something similar...
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.
Which one potentially benefits others the most? That’s the easiest one to stick with.
Yes: "Stop Starting and Start Finishing"
just write it down somewhere in plain sight.
Perhaps your passion is not the code, but setting up and maintaining it - DevOps
Find a single paying customer
Make something you need, so that you will actually use it yourself.
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/. 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/.
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 was basically done in a late night and a morning - 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> (now on indefinite hiatus) and Tabula Scripta <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.
Do It with a friend which is equally curious an committed as you are.
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
What were you intensely curious about at 12 years old? Do that.
Start meditating. It will help your restless mind.
Whatever brings some joy, it's the signal.
Keep the scope small so you’ll be done fast
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.
Read Steven Pressfield’s The War of Art.
Solve a problem YOU have.
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.
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/),[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/) 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) 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)
- 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). 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...) and I found out [Seinfeld has nothing to do with it](https://www.reddit.com/r/IAmA/comments/1ujvrg/jerry_seinfeld...)
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.
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....
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!
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! :)
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" .
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.]
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).
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/. 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.
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... It has been discussed on HN a few times.
please vist below website for poetry https://bit.ly/2yErlmt