There is a very real evolutionary component to side projects. They are usually born out of an idea, a will to experiment or just because they sound fun. And they are fun, not necessarily due to reaching a certain goal, but as a way to spend time. You could argue that time is wasted, but not every intellectual or emotional pursuit has to be oriented on externally viable goals. Time you spend on side projects could also be time you spend on playing a computer game, crafting something, or any other hobby-like activity. Even though the remnants of old projects can sometimes feel like tombstones or failure markers, for some reason we don't feel the same way about, say, an old save game file.
But most importantly, I want to circle back to the evolutionary aspect: side projects are explorations. The subject of that exploration can vary hugely, but at the end there is a result. The result may be that the project is not viable or not fun. Or it might be a lesson about programming that will improve your performance further down the road. Occasionally, side projects survive and get to pass on their genes in the form of continued development, or partial re-use, or even a commercial spin-off.
All of this is fine, and it's part of the process many programmers go through. I would like to invite people to embrace the impermanence and whimsical nature of side projects from the get go. Learn to love what you're doing, instead of thinking about what the world will be like when you're done with a project.
> "Even though the remnants of old projects can sometimes feel like tombstones or failure markers, for some reason we don't feel the same way about, say, an old save game file."
Very true. We beat ourselves up over leaving projects unfinished in a way that we don't about other things. It's probably because side projects mean something more to us, and the way we look at ourselves.
Also true that side projects are explorations. It's also more fun to explore with other people than it is alone.
Hi! First of all, I'm new here :) My name is Juan Carlos, but everybody knows me as Derrick Roccka. I'm 25.
I've visited hacker news a lot of times, but I never signed up. So, let's get down to business.
I'm a person who has an anxiety disorder. One of my biggest "problems" is that I'm always trying to create. I force myself to come up with new ideas that make me feel motivated. Unafortunately, this has a really bad side. Though I can imagine really interesting things, when I can't acomplish the "eternal to-do lists" that I have in my head, I feel extremely frustrated. I've tried a lot of things to avoid this kind of feeling, but with no success.
I'm grateful to you because your article gave me a few clues about one part of my problems. Obviously, I have a lot of technical limitations, like everyone, and this world spins so fast. Anyway, being alone didn't help me in the past and I'm pretty sure that won't do it in the future. It seems an easy thing to detect, but you really made me think about it.
About motivation... what can I say that you didn't hear before... You're completely right. I'm like a kid (and I'm sure you guys feel the same): when I'm bored, I quit. That's probably wrong, but I really suffer when I have to do something that completely blocks me. And this is a "double-pain" because there's a new thing in my to-do list that I'm not going to complete, once again.
I hope that your article and your project is helping a lot of people like me.
> when I can't acomplish the "eternal to-do lists" that I have in my head, I feel extremely frustrated.
You are not alone in this. There are several things you can do - in my experience - to manage this.
First: scope. Drastically limit every idea to its absolute core, implement that, and then if you're still motivated (it's OK to not be) built outward from that. What really helped me personally is Ludum Dare, it's a game-making jam, and it lasts only 48 hours. If you can't get it done in that time, lay it to rest. This is immensely liberating.
Second: expectation. I already ranted about that in this thread, no need to repeat it here.
> Obviously, I have a lot of technical limitations, like everyone, and this world spins so fast.
It may seem that way if, say, you're trying to keep up with every single new JavaScript framework that comes out. But it's not the right way to look at it. We live in a world that's keeping legacy software alive indefinitely. When something new comes out, eye it critically, and acknowledge that the menu you can choose from has expanded. There is no need to consume the entire menu or even a large part of it. If you choose to perceive it as a rich, ever-expanding world that gives you more possibilities from day to day, you stop seeing it as a pressure-cooker you have to keep up with in order to stay relevant.
To keep with the game-programming examples, one of the most successful game development stories in recent history was built in Java, as a software renderer if I recall (Minecraft).
Wow! Thank you Udo for answering so fast! Nice to meet you.
You're definetely right. I completely agree with you. I know that I have a problem with the scope and the "pressure-cooker" haha. Jokes aside, it's true that I should eliminate from my list those things that, after a short period of time, are no motivating me, at least the way they are supposed to. I'll try to move in that direction ;)
About the second part... DEFINETELY TRUE. I know it's my fault, but the only thing I can do is trying to focus my mind in what I'm doing, "eat my own food" and when I'm done, then I'll be able to ask for a big dessert if I want.
It's a pretty simple concept, but I liked it!
I think this is getting at one of the root absurdities of human existence in general: the desire to be understood, to socially connect, and the overwhelming truth that real understanding is impossible. We are born, we live, and we die alone.
It reminds me of what Sartre wrote, "Man can will nothing unless he has first understood that he must count on no one but himself; that he is alone, abandoned on earth in the midst of his infinite responsibilities, without help, with no other aim than the one he sets himself, with no other destiny than the one he forges for himself on this earth."
Your outlook on this really depends on subjective definitions of "truth", "understanding", and "alone". I realize it's one of the central hypotheses of the article that side projects need to have a social component - but whether that's true is entirely dependent on someone's personality. The overwhelming majority of side projects will never get shared with anyone, and I differ with the article in saying that's not a failure which needs to be corrected. On the other hand, there are side projects that happen with many people collaborating from the get-go; however, I would be hesitant to declare this a globally ideal format for all programmers doing hobby hacking.
I'm fortunate enough to have someone to talk to, discuss ideas and show the latest and greatest to. It's my wife. She's technical and can do some programming, but most importantly she's interested in helping me and knows how positive and energized I become by working on my side projects.
Yup. My GitHub is littered with them. A side project can only hold my enjoyment for so long. Without financial incentive, I have to be incentivized by my interests which are very volatile.
There's probably an element of "creative destruction" in this. Time is a precious resource, and side-projects like anything else compete for your attention and time. I don't look at dead or dying side-projects as a bad thing, you have to make the best of this time given your goal.
Often a side project of mine will serve as a reference, or even provide snippets of re-usable code.
I can now trace some snippets over multiple generations of projects, slightly improved each time. In this sense code doesn't just grow vertically, even a dead project can yield code that grows laterally too!
But most importantly, I want to circle back to the evolutionary aspect: side projects are explorations. The subject of that exploration can vary hugely, but at the end there is a result. The result may be that the project is not viable or not fun. Or it might be a lesson about programming that will improve your performance further down the road. Occasionally, side projects survive and get to pass on their genes in the form of continued development, or partial re-use, or even a commercial spin-off.
All of this is fine, and it's part of the process many programmers go through. I would like to invite people to embrace the impermanence and whimsical nature of side projects from the get go. Learn to love what you're doing, instead of thinking about what the world will be like when you're done with a project.