immeasurable way. It’s hard to even imagine a programming world without
freely available libraries, code snippets, and tutorials today. So why
are developers so afraid of putting their code out there?
The answers to this question are largely unfounded, and I’d like to offer reasoning to combat the common responses.
Answer #1) My code might not be good enough
This has to be the most common response.
Everyone who has opened their code to the public has felt this way.
Software is a deeply personal form of expression. There are endless
solutions to a problem and the way you chose to solve it can speak
volumes about you and your skill level. It’s natural to be nervous about
Think of it from the other side though. How often have you accepted
someone elses work without so much as looking at the underlying code?
Probably the vast majority of the time. Even beyond that, when you’ve
discovered a problem or found an inefficient solution in their code, how
often have you thought poorly of the developer or been mad? More likely
you were grateful that you were saved a bunch of time along the way and
maybe you checked in the improved code for them as a thank you. It will
be the same with your code. Do your best, obviously, but put your work
out there for others to benefit from and to improve upon. They’ll be
grateful you did.
Answer #2) I don’t want my software criticized
This is another natural answer given to the problem. It’s true, the
internet is filled with terrible people who hide behind anonymity and
behave like animals. Developers in particular can be real jerks as
everything turns into one giant pissing contest around different
approaches. That’s the nature of software engineers however. They’re
defensive, egotistical, and at the same time, self-conscious.
Here’s the thing though, you need to be able to take criticism. At
the same time, you need to recognize a trolling jerk and be able to
brush them off. Constructive criticism is something that can help you
grow as a person and a developer more than almost anything else save
experience. Gain insight and perspective from others when they’re
contributing. Ignore needless jabs along the way.
Answer #3) It’s a security concern
Well, potentially. You should be careful not to publicize anything
that exposes sensitive information or access protocols of course. If
we’re talking about securing or encrypting sensitive data however, I’d
argue that you’re better off making the code public as early in the
development as possible. By doing so, you open your methods up to
scrutiny by folks who may have more expertise. Someone may point out a
gaping hole in your strategy early on that may have gone unnoticed. In
the end, you’ll end up with a more secure product, not a less secure
one. Any security that can be broken simply by knowing the coding is not
secure anyhow. Think about OAuth 2.0 security. Its open design and coding is coupled with a thought out and secure methodology.
Answer #4) Someone will steal my idea
The general public overestimates this point to an absurd degree. I
can’t tell you how many times someone has approached me saying they have
the next big idea, but refuses to discuss it without an NDA. Nobody is
going to steal your idea, in fact, you’re probably doing something
that’s already been done (and maybe even open-sourced) anyway.
I’m not suggesting you open-source your entire ground up solution and
your whole business model. I’m suggesting you open-source reusable
components and libraries that can be shared and made better. Take Square
for example. They’re a fast growing and valuable company who has opened up a vast library of code to the public.
They hold back their core business logic of course, but chances are
that particular code isn’t reusable anyway. What they have released has
improved the quality of Android and iOS software for millions, and in
return, developers from all over the world have contributed and improved
Square’s libraries – for free.
It seems scary. Putting yourself out there like that can be anxiety
inducing. The fact of the matter is that you have far more to gain than
to lose. Your code will be better, your ability to take criticism will
be improved, and you’ll gain satisfaction from the knowledge that others
are benefiting from your creation. You can start out small too. Put
some code snippets up on Gist, build a library of helpful functions there. After a while, put your first project up on Git, anything that you’ve found useful, and go from there. You won’t regret it and it will soon become second nature.