Software engineering is the engineering to design, develop, and maintain software for a device. Software engineers instruct a computer or a device how to perform a desired function by using programming codes. A software engineer is different from a programmer. Software engineer creates the designs which the programmer implements and creates the codes that make a program run. Software engineers develop many types of software, such as software for operating systems, network distribution and for compilers but are often more concerned with developing algorithms and analysing and solving programming problems than with actually writing code.