1. using branches as short-term scratch spaces for new features. Branches should not be long-lived and if they are they should be regularly merged, unless you are deliberated separating them for some reason (eg 1.x-stable, 2.x-stable etc)
2. You owe it to yourself to get familiar with a SCM ASAP. I use and recommend git. I also use and strongly recommend a paid account at github. Yes, paid! Then give your programmers access and watch it all come together there.
3. I use and recommend lighthouse. I used to dislike it but it's just so frictionless and easy to use that I can't think of anything else I'd recommend.