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.