I don’t know if this is something that every developer experiences – regardless of what level of the stack you work on – but I know that for those who truly care about getting better at what we do, there’s often this constant feeling of “I think this could be better.”
Or, perhaps another way of saying it, is that one of the challenges in writing open source code is the criticism that can come that infuse a level of self-doubt.
For example, how many times have those of you who have contributed to a larger project, built something of your own from the ground up, or simply tried to write a small add-on to an existing solution, ended up with something that works, but have this sinking feeling that this just isn’t as elegant – or, I dunno, optimal – as it should be.
I mean, surely it’s not just me, right?
Writing Open Source Code
To be more complete, when it comes to writing code – be it full on software, scripts to help automate tasks, or anything of the like – I’d like to think that many of us are very much aware of what we don’t know.
But this isn’t necessarily true. In fact, I think it’s only true for those who continue to try to better themselves in their field.
To that end, the double-edged sword of constantly trying to grow in your skillset is that you become even more aware of what you don’t know.
- You read books,
- You contribute to other projects,
- You study the source code of existing application,
- You read articles, blogs, and other material put out by developers more experienced than you,
- and so on.
When you do this, you’re not only simultaneously improving and giving yourself more to work with in your next project (or when you go back to refactor something you’ve already worked or that someone else has worked on), but you’re also becoming aware of how much you don’t know.
And sometimes, that can be a near-crippling feelings especially as it relates to putting out open source work.
Now, I don’t think this would be such a problem because one of the largest advantages of open source code is in its very nature – as a community (or microcosm of a type of community, really ) – the idea is that you’re working with others to build something greater than yourselves.
And we all love to espouse how great it is to have other people help us, and we love to pat one another on the back about how much we appreciate their input, and we love the idea of community, and all of that fun stuff.
I don’t mean to reduce this stuff as if they are mere platitudes. I don’t think that these are bad things – being gracious is a good thing.
We need more of it.
Here Be Dragons
But one aspect of open source software is that there are plenty of people who are quick to judge, comment, critique, and simply insult you based on whatever code that you’ve openly shared via your blog, your public repository, or whatever you committed to a given codebase.
Now, I’m not one to say that “just because it works” is a reason to ship anything, but c’mon, you’ve gotta have a stance on this:
- Either you appreciate that people are making an effort, are willing to learn from those who are better, and/or help teach others why their code needs to be improved a bit
- Or you need to be a person who simply believe that s/he is better at what they do than the majority of others committing to the project and embrace that.
But whatever it is you choose, stick it with, and embrace it because I don’t believe it you can be both.
And I know: Polarizing ideas like those above aren’t exactly the type of things that are welcome to an “open” community; however, when someone is trying to get better at what they’re doing, you can either help them, or leave them alone.
Those of us who truly care have no time for the negative attitudes, and if we have to be critically honest, I don’t think that attitude and its approach has a place.
No one just happened to discover that they are an adept programmer, nor that they have above average engineering skills and simply opted to apply it to a certain field. Sure, some people are more talented or are predisposed in some areas than others, but no one just is a certain way.
The world doesn’t work like that, no one should act like it does.
If you’re further along than someone else who is honestly trying to get better, it’s disrespectful and to shun those people.
A Call To Action (or Inaction)
So here’s how I see it:
- If you’re someone who’s just stepping into open source, please continue to contribute, but be aware that there are jerks among us.
- For those of us who have been here a while, try to continue welcoming those who are getting started, and continue to collaborate with those who have been around a while.
- For those who get their kicks and giggles out of simply critiquing without offering any form of a solution, I don’t see what value you’re adding to the project or to the people who are working on it. I’d go as far as to say that you’re not really needed, so why do you bother wasting your time?
Above all else, respect those people who are coming up behind you, and try to help them, learn from those who are further along, and ignore the critics.