Long story short, I’ve spent the last two years in an entirely new career, transitioning from academia to a data analyst role (working towards a data scientist). Before starting at my current company, I knew next to nothing about coding, save for teaching myself SQL for a few hours per week over a couple of months. Besides SQL, I have since become conversant in Perl, have used PHP a bit here and there, and have made some headway into learning other languages (primarily Java and C). So, I still have a lot of catch-up work to do.
In order to teach myself things, I’ve built a few side projects–a lot more sophisticated than "Hello World, my name is $name."
, but not as complicated as, say, Minecraft or a device driver. I’d like to release the code for them in order to learn from constructive feedback and to build a portfolio to sit alongside my resume. However, a lot of these things are works in progress and, to be honest, I feel some trepidation at putting code out there for all to see that’s not completely, 100% “done” and polished.
Am I worrying over nothing? If not, is there some minimal polish threshold a project should have before releasing it as open source?
The things you need to worry about are:
- Can I build it in one step?
- Is there a clear description of the purpose for the project?
- Are the working features known?
If your project does 100% of what it’s been coded to do, then release it. You’ll probably never get to the point where you are 100% satisfied with it and never want to improve it.
It would also be great to make sure they have Unit tests as that is also a form of documentation and proof that your project is “good.”
In all seriousness though if your projects are very specific to things you’ve worked on in the past most people won’t find them unless you go out of your way to link to it from other forums. But if it solves a problem current developers are having it has the potential to take off.
As long as your project builds and has documentation on what works and what is broken or to be done, I consider that it can be released as an alpha/beta.
In fact, this is what many open-source projects do; if your work has potential to solve a larger problem, this can attract developers to work on the missing/incomplete features.