What is the Difference Between a Software Engineer and a Computer Programmer?

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. 

The Nature and Scope of Software Engineering

Software engineering looks into designing and implementing software applications and also modifying them so that they are better suited to client requirements. It is one of the most important aspects of software development and is a must to be implemented in any organization that has undertaken software development activities. Though a basic engineering degree in computer science is enough to work as a software engineer, a better advantage would be to have a license. In the U.K, it is the British Software Society that licenses software engineers. In Canada, they have the Professional Engineer (P.Eng) designation, though as per the law, there is no necessity to have such qualifications.

There are several sub-disciplines into which can be divided. These are software requirements, software design, software development, software testing, and software maintenance and software configuration management. The need for software engineering came about because of computing history. Problems such as the ‘software crisis’, ‘complexity barrier’ hindered progress which were in course of time resolved through various techniques that came to encompass as a whole.

While a software engineer also takes on the role of a programmer, a programmer will not take on the role of an engineer, which basically involves dealing with theoretical constructs of software and hardware development. There are many job domains and these include programmers, hardware administrators, network specialists and system testers. The overall purpose of this is to develop and maintain systems that work reliably and which can meet up to the expectations of customers and which process information in an efficient manner. A point to be noted about this field is that though it incorporates programming, it also looks into factors such as understanding client requirements, designing principle and testing to ensure that the application conforms to standards that have been set.

Understanding Software Engineering

It is a systematization of the process of software development to ensure the best solution most economically. Its goal is to produce high quality software at low rate.

Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. A typical software development project will need to go through the phase of Analysis, Design, Programming, Testing and Implementation. Software Project Management (SPM), Software Quality Assurance (SQA) and the use of Computer aided Software Engineering (CASE) would run parallel with the other phases and finally comes the maintenance phase. It is always said that more than 80% of the costs go towards maintenance of the software.

Software Methodology

It is a step by step plan for implementing a method using certain tools and procedures. It often describes the entry criteria, exit criteria and checkpoint for each of the activities or components in software engineering. Some of the popular methodologies today are based on structure techniques or information engineering or object-oriented techniques. Methodology selection depends on the nature of the project, the type of application, the tools proposed to be used and the kind of controls and documentation that would be required.

Waterfall, Prototyping, Spiral, Rapid Application, Stepwise Refinement, Industrial and military standards, Assembly by reuse, Application generation, Continuous transformation and Knowledge based software automation are some of the popular methodologies.

What factors would influence the choice of model for software development?

It depends on the nature and size of application, whether it is an in-house development or development through an external agency, the availability of various tools and resources, time frame and budget, etc.

Who is Software Engineer?

A software engineer is someone who applied engineering principles in the co-operative development of software. A good software engineer should not only generate computer programs but also learn the skills to produce good documentation, database and operational procedures for the computer system. He should be well defined about the components or modules of software engineering.