Software engineers and computer programmers both develop software applications needed by working computers. The difference between the two positions lies in the responsibilities and the approach to the job. Software engineers use well-defined scientific principles and procedures to deliver an efficient and reliable software product.
Software engineering treats the approach to developing software as a formal process much like that found in traditional engineering. Software engineers begin by analyzing user needs. They design software, deploy, test it for quality and maintain it. They instruct computer programmers how to write the code they need. Software engineers may or may not write any of the code themselves, but they need strong programming skills to communicate with the programmers and are frequently fluent in several programming languages.
Software engineers design and develop computer games, business applications, network control systems, and software operating systems. They are experts in the theory of computing