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?

  • 11
    Well, it's good enough for you and "they" get it for free, so why should they complain? Commented May 25, 2012 at 8:21
  • 42
    "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. Commented May 25, 2012 at 8:21
  • 9
    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
    Commented May 25, 2012 at 9:33
  • 4
    It will never get better without people banging on it. Go for it! Commented May 25, 2012 at 19:14
  • 4
    You wish! You should consider yourself lucky if anyone even notices you've released some code :)
    – Benjol
    Commented May 30, 2012 at 8:14

8 Answers 8


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.


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é
  • 3
    +1 for "People may point out problems for you" - that is one huge benefit to be had from offering code as open source. Commented May 25, 2012 at 14:47

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.

  • 3
    I love this perspective.
    – TehShrike
    Commented May 26, 2012 at 17:17
  • +1 for the Linux example.
    – Calmarius
    Commented Mar 17, 2013 at 20:56

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.


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!

  • 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
    Commented May 25, 2012 at 18:27
  • 2
    @Caleb: that's always true. The goal is always to ship a product and it's never to write code! Commented May 25, 2012 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
    Commented May 26, 2012 at 0:11

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.

  • "It probably won't be noticed anyway". Unfortunately, very true.
    – user16764
    Commented May 30, 2012 at 5:25

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!


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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.