All excellent is always small and compact. The ideal dedicated software development team should consist of people with the following roles.
Project Manager – a person in a team who will control the projects performed by your software development team. He will follow the execution of the software project, control time and budget. He should be organized himself and have excellent organizational skills. He is responsible for the software team’s activity, and project accounting.
Business Analyst – a person in a team who will deal with customers and specify the direction to the software project. This person should analyze the requirements, work out the project strategy, write documentation and lead the project to the successful completion. He should posses technical, managerial and creative skills.
Software Architect – a person in a team who will develop the design of the software product taking into account customer’s requirements. This person is not only a skillful software developer.
Design Architect is a “guru” who is able to work out software architecture for any complex system.
Designer – a creative person who is responsible for product look-and-feel taking into account customer’s requirements. He should be a ‘hybrid’ designer who doesn’t strain at Photoshop and can write CSS-code. He should be familiar with visual design as well as with web standards, should be a professional in usability, universal design, accessibility, etc.
Software Developer – a person in a team who will develop the product. Software Developer should be an expert in various spheres of software development (mobile application development, web application development) and should study all the time to improve his knowledge and competence. But at the same time, he should be a good team player.
Software Tester – a person who will test the software during the course of software development. He should be familiar with various techniques and methods of software testing (black box testing, smoke testing, etc) and should very patient.
In the software development team, every member should understand what other members are doing, should be ready to take some of their tasks in case of necessity, should be a good communicator (should be ready to take part in meetings with customers and negotiate some issues). Only in collaboration the success is guaranteed.