The terms software engineer or computer programmer may be confusing to the average computer user. Most of us associate computer programs with the generic term 'Software'. To us it may seem that the terms are interchangeable. That is not so. The role played by a software engineer is significantly different from that of a computer programmer. Before learning what the difference between a software engineer and a computer programmer is, let us see what is meant by the term software engineering and how it relates to computer programming.
Software engineering is a rigorous approach to development, maintenance and testing of software. These are engineers who must be knowledgeable about software requirements, design, development, maintenance and testing. They must be well versed with the tools and methods used for the development process as a whole. It is thus a convergence of the fields of computer science and systems engineering with a great deal of project management added for good measure. They are expected to have technical skills in addition to managerial skills.
A computer programmer on the other hand, is required to develop, test and maintain code that is to be run on the computer. He is responsible for converting the specifications provided in the software requirements definition phase into working code for the computer. Computer programmers are involved with design and maintenance of websites too. They should be proficient in analysis of programs. They are required to collaborate with manufacturers in developing new methodologies for software with evolution of hardware. Training, documentation and generation of reports are also tasks that should be handled by a computer programmer.
We can observe that the skill set required by a computer programmer is a subset of the skills expected from a software engineer. The computer programmer is a specialist in some areas covered by software engineering. A software engineer is in charge of the overall software development process and is expected to improve the reliability and maintainability of this complex process. A software engineer may have a team of computer programmers working under his supervision.