When developing open source software, one cannot chose who participates on the project. At least not when it’s the kind of open source project “I start something on github/bitbucket/whatever and if people want to contribute, they can do it”.
When developing open source software in a team, for example in a project from your university or so, you can, indeed, choose your project members. You can’t do this every time, because some universities have some fucked up rules that project members get chosen randomly or something, but sometimes you can.
So here are some short notes what you definitely have to take care of when you’re in the position where you can choose your project members:
- Review capabilities
Your project members must be able to do constructive reviews, spreading positive criticism. Otherwise, they’ll freak you out! I gurantee it!
I always try to be constructive when reviewing source code. I try to avoid terms like “this sucks” or “this is complete bullshit” - these just worsen the mood in the team!
- Skills are not enough - you need enthusiasm
You can choose the most skilled guys around. You won’t succeed with your project. Choose people that are not that familiar with the environment but who have enough enthusiasm to succeed. I guarantee you - they will surprise you!
I don’t think I’m the most skilled programmer out there - of course not. But I have enthusiasm which keeps me attached to something and I’m willing to improve myself every single day. I think that’s much more important than skills per se.
- Enthusiasm + Skills + 24⁄7 work = Burnout
This is more an advice for you directly, but it can also help you when choosing your project members. If you have enthusiasm and enough skills to succeed with your project, don’t work 24⁄7. It will kill you! Take a break every 7 days or something. Do something else. In another environment. You will be much more efficient afterwards, when coming back to the original project!
I noticed this myself, after 8 weeks of daily working on a project, I had to stay back for one day. The day after that day was much more relaxed than the days before!
- Less skills, but will to learn is more valueable then the other way round
I also like to suggest: Choose members who are not that skilled but willing to learn new stuff. If you do the other way round, they might do a great job, but they won’t get better and they will do mistakes over and over again.
As I already said, I don’t consider myself as the most advanced programmer out there, but I’m willing to improve. I make mistakes - everyone does, of course! But I always try to think back of previous mistakes I made and I’m constantly trying to avoid making them again.
- If your lifeblood is in the project - always remember that for other project members this is not true
It’s sad, but some people do open source just for the sake of open source, their graduation or some assessment at the end of the term or something like that. Always remember: These people are everywhere. And if they are in your project (you may not notice that when choosing them), you can’t change that. Just take it as is.
When I’m writing software, my heart is really in it. For others, this is not true. I had a hard time learning this, but it’s true. Sadly.
Of course, these points aren’t carved in stone. But they are taken from my experience and maybe others can confirm. At end, everyone has to make their own experiences.