8 most important roles in software development team structure