Software engineer: job description
Software engineers apply engineering principles to the development of software, from liaising with stakeholders on required functionality and features to improving and maintaining software post-release.
Software enginers ensure that development follows key scientific and engineering principles.
Software engineers work to develop and create computer software and systems. They apply engineering discipline and scientific methods to the process of coding.
Some employers use this job title interchangeably with that of a software developer or a systems developer. In many organisations software engineering is seen as a more ‘technical’ role, whereas software development roles can offer more opportunities for creativity. However, the exact responsibilities of the role will depend on the employers and, within the sector, there is a lot of crossover between these job functions. IT professionals often debate the definitions between themselves.
Software engineers are typically involved with development projects from the very beginning, liaising with clients and stakeholders to understand the required functionality and features of the system or software. They will then write requirements and plan what needs to be developed and how (such as choosing frameworks, tools and languages). They also ensure that development follows key scientific and engineering principles, as well as the established processes for development. This aspect of the role is especially important in the engineering and manufacturing industries.
The actual coding of software may be done by a separate team of software developers or by the software engineers themselves, depending on the employer. After the development of the product has been completed, engineers will be involved in analysing and identifying any potential problems in order to improve and maintain the software in the long term.
To find out more about working life as a software engineer, as well as about developments affecting the field, read our profile of a principal software engineer at BAE Systems here.
Employers of software engineers include:
- software development companies
- websites and any organisation that manages websites
- engineering firms
- technology consultancies
- telecommunications companies
- banks and financial services firms
- public sector organisations
Jobs are advertised online, by careers services and specialist technical recruitment agencies, in newspapers and in relevant industry publications such as Computer Weekly and TARGETjobs IT & Technology.
Graduate roles typically require applicants to have a 2.1 degree in a STEM (science, technology, engineering and mathematics) subject. Some roles may ask specifically for computer science or software engineering degrees, or a masters-level qualification. Some employers will accept applicants with 2.2 degrees or degrees in non-STEM subjects.
Applicants may also need to have experience in certain programming languages. Commonly asked for languages include Java, C++, C#, MATLAB and Python. However, on-the-job training in these languages and in other necessary technologies (common examples are SQL and .NET) are frequently offered for graduate-level software engineer opportunities.
Useful skills for software engineers include:
- teamworking skills, as engineers will need to work with colleagues from all the other roles in the development process
- problem-solving skills and the ability to ‘troubleshoot’ issues
- analytical skills
- communication skills, including the ability to communicate technical concepts to non-technical stakeholders
- resilience and the ability to adapt to different situations.