Posted on October 5, 2017
The number of different types of engineering jobs posted on job websites can be mind-numbing to the layman. It can even befuddle experienced professionals who have spent a lifetime working in an engineering trade, because most of these job types did not exist until the rapid adoption of personal computing and intranet in the eighties and nineties.
The coming of the internet age has created endless engineering job opportunities for computer science students. In a large computer software and services company, each software programming team is a led by a dedicated engineering project manager. The manager draws work plans to meet specific objectives across the project lifecycle and allocates work to the software programmers.
In smaller companies, each project manager handles several software engineering projects. Although the engineering project manager is not expected to do programming himself, he should be aware of the challenges faced by his team members to ensure optimal resource and time allocation.
The project manager works in conjunction with a client-facing senior engineer called a software business analyst. The business analyst discusses the top-level project objectives and elicits specific system requirements through consultations with the client. Before the requirements document is handed over the engineering project manager, it must be signed off by the client. The requirements document is legally binding as the terms of the contract between the client and the software company with regards to the specific functionalities desired in the software.
After the client’s approval, the requirements document is handed over to the project manager. The project manager reaches out to a software engineering architect to draw the high level game plan regarding technical architecture of the software. It includes information such number of modules, programming language, and coding platform to be used etc. The software architect’s contribution becomes the blueprint for all other programmers. After the software architecture has been defined, the project manager makes project plans accordingly.
Next, the software programmers are handed over task-level requirements of each software module. The code written by the software programmers is neatly documented for future testing by qualified software quality engineers. Software quality engineers can use either manual testing for all modules of the software or create automated testing scripts. For large software engineering projects, manual testing is practically infeasible.
The software quality engineers provide their inputs back to the programmers regarding any errors in the programming. The software programmer then revised the code accordingly and sends it back for another round of testing. The process is repeated until the quality engineer has finally approved the code completely.
Posted on October 4, 2017
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.
Posted on October 2, 2017
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.