Take the 2-minute tour ×

I don't know if this question is strictly related to software development, but still I'll give it a try:

Like a lot of programmers, I love to work on hobby projects. Sometimes, seemingly good ideas turn out to be not so good, so I drop the project. But sometimes, something useful comes out of the project. So, I could release it, present it to the world, right?

Wrong. Somehow, I don't seem to be able to make this step. I fear that my code is not good enough, I can always think of things which are suboptimal, of features which could be added. So, I don't release anything, I lose interest, and at one point abandon the project.

Is this normal? How do you overcome such a situation?

share|improve this question
Well, it's good enough for you and "they" get it for free, so why should they complain? –  Joachim Sauer May 25 '12 at 8:21
"I fear that my code is not good enough" -- if you look back at what you did yesterday, and you're happy with it, then you're not improving. –  Roger Lipscombe May 25 '12 at 8:21
If it works and isn't a complete mess of spaghetti release it. In my experience, all code gets criticised, get used to it. Microsoft released a whole load of code for incorporation into Linux. I seem to rememeber it was sent back to be tidied up and ended up with half as many lines. I look at my code every day and think "Oh God. Did I write that? Doh! –  Jaydee May 25 '12 at 9:33
It will never get better without people banging on it. Go for it! –  Scott Wilson May 25 '12 at 19:14
You wish! You should consider yourself lucky if anyone even notices you've released some code :) –  Benjol May 30 '12 at 8:14
show 3 more comments

8 Answers

up vote 50 down vote accepted

First of all, remember: shipping is a feature. It's better to release something imperfect than to release nothing at all.

The other thing to note is that these are Hobby projects. If you don't meet deadlines or lose interest it's not a big deal. You're doing the project for fun after all.

share|improve this answer
add comment

Put it out there.

It is not that difficult to do this with a social coding site such as GitHub or Bitbucket. Most of the stuff of what you'll put out probably won't be used a lot, but that is ok. That is pretty much normal in these social coding sites, and a lot of projects get abandoned (even some useful ones). But the greatest thing is that others can pick off what you've left (given you have a permissive license).

Even though your stuff probably won't be used by anyone else there are several benefits of why you still should put it out:

  • You learn to use version control which is something that a lot of programmers don't know how, making you more hirable
  • People may point out problems for you; all opportunities for you to learn how to do things differently
  • You will have an online portfolio of stuff that you've done, great to have as a complement to your resumé
share|improve this answer
+1 for "People may point out problems for you" - that is one huge benefit to be had from offering code as open source. –  Andrew Thompson May 25 '12 at 14:47
add comment

Getting contributors into an open source project that is already bug-free is probably harder than ones with lots of easy bugs to solve, as these bugs are an incentive for early users to make themselves familiar with the code.

When Linus first introduced Linux kernel, it wasn't a complete, stable, bug-free, and clean code; it was an incomplete, crappy, unportable, and hardwired for Finnish keyboard.

share|improve this answer
I love this perspective. –  TehShrike May 26 '12 at 17:17
+1 for the Linux example. –  Calmarius Mar 17 '13 at 20:56
add comment

Basically, I wouldn't worry about if people like my code or not. Release it under a free license, if it's useful for people, but they find bugs, suboptimal solutions and require more features, they are free to fix it themselves. Using GPL or LGPL will also make it possible for you to find these fixes, and you can apply them yourself if you find them useful/fitting.

share|improve this answer
add comment

I'm sorry but you are doing the exact opposite of what you should be doing!

Release it as soon as possible, listen to people's feedback, and then implement new functionality based on that. Not the other way around!

share|improve this answer
That's only true when you're trying to optimize usability. The OP is clearly trying to maximize street cred, or at least minimize embarrassment. –  Caleb May 25 '12 at 18:27
@Caleb: that's always true. The goal is always to ship a product and it's never to write code! –  Andreas Bonini May 25 '12 at 18:32
Don't forget, version control allows people to see IMPROVEMENTS in code. Seeing someone started out with bad code but was able to shape it up into a fine looking example shows a) They can learn, b) they are willing to improve old code instead of ignore it –  Aren May 26 '12 at 0:11
add comment

What do you have to lose ?

You can also take comfort in knowing that it probably won't be noticed anyways, unless it's really good or fills a new niche.

And, if you get a negative feedback - it's a chance to learn.. Don't waste it.

share|improve this answer
"It probably won't be noticed anyway". Unfortunately, very true. –  user16764 May 30 '12 at 5:25
add comment

Completely normal, in any domain beyond software as well. Make sure it builds in a few different environments, write a README, and toss it to github/codeplex/etc. Getting through this the first time is the only way to overcome the anxiety.

Second, third, and n-th times are where the fun lies!

share|improve this answer
add comment

Here's one reason to release unfinished software: to start building a community. If you want your project to become a useful open source tool, you need other developers. One way to attract them is to release it early, and then continue to (publicly) make improvements. Don't add those features in secret - do them publicly, on the Github page, or wherever. That generates activity in the history.

Other developers don't want to work on an apparently abandoned project. So doing your development work in public demonstrates active, ongoing interest. It's worth intentionally keeping a few features up your sleeve so you can add them in public.

share|improve this answer
add comment

Your Answer


