37

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?

8 Answers8

51

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.

Tom Squires
  • 17,835
23

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é
marco-fiset
  • 8,791
Spoike
  • 14,771
15

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.

Lie Ryan
  • 12,496
6

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.

martiert
  • 359
5

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!

Andreas Bonini
  • 1,073
  • 1
  • 9
  • 16
4

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.

Evgeni
  • 461
3

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!

Matt Stephenson
  • 279
  • 1
  • 3
1

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.