Building Software Teams: Ten Best Practices for Effective Software Development