Software engineers?apply the principles of engineering and science to the solution of technological problems that can be solved by the use of software controlled devices. They frequently work as members of large teams or as leaders of smaller teams that are responsible for determining customer needs, synthesizing alternative solutions, and selecting optimal solutions within economic, social, and resource constraints. Their wide-ranging role involves creating products and systems that meet the immediate needs of customers, and which can efficiently evolve over time to satisfy needs that are unknown at the start of the product.