1) Expertise in the relevant application domains where the system will be used. This is important because without this, the team members may not have an adequate understanding of the domain where the software is intended to operation. In addition this is needed when having initial discussions with the customers or commissioners of the system as the better their initial requirements are understood, the greater the chances of success.
2) Experience with specific hardware and software technologies to be used on the project. In a project, there may not be enough time to train the team in a new technology so it may be important to hire staff that already have experience in that technology. For example, if the system has to be developed in a particular programming language, then experience in that language may be considered important as losing time with inexperienced staff could lower the project’s chances of success.
3) Problem solving ability is needed as the team members will need to be able to solve technical problems throughout the lifetime of the project and be adaptable in their approach to problem solving working with other members of the team to collaboratively solve any large problems that threaten the project’s success.
4) Education and qualifications in software engineering are important as they indicate that team members are familiar with best practice and theory relevant to engineering software systems and also this indicates a willingness and ability to learn. All projects involve the team learning and failure to engage in learning can threaten the success of the project.
5) Ability to work in team and get along with the other team members is important as a team member who refuses to work with others and is disruptive can disturb the working of the whole team and threaten the project’s success.