Software engineers apply scientific and mathematical principles in order to create computer software and solve problems
As a software engineer, you'll work in a constantly evolving environment, due to technological advances and the strategic direction of the organisation you work for. You'll create, maintain, audit and improve systems to meet particular needs, often as advised by a systems analyst or architect, testing both hard and software systems to diagnose and resolve system faults.
The role also covers writing diagnostic programs and designing and writing code for operating systems and software to ensure efficiency. When required, you'll make recommendations for future developments.
Job titles and descriptions in IT are not standardised. Instead of a software engineer, you may be called a systems/software/database/web programmer, engineer or developer, depending on the system you're developing. Alternatively, the programming language you use may become part of your title, such as Java or C# developer. The work of a software engineer can also form part of a multimedia programmer role.
Depending on the organisation you work for, you may have a more defined role and work within a group of IT specialists which can include systems analysts, systems designers and systems testers. Nevertheless, as software engineers often manage the support systems required to effectively run an organisation, the role can also require you to communicate effectively and translate the needs of different teams into systems developments.
As a software engineer, you'll need to:
- analyse user requirements
- write and test code, refining and rewriting it as necessary and communicate with any programmers involved in the project
- research, design and write new software programs (e.g. business applications or computer games) and computer operating systems
- evaluate the software and systems that make computers and hardware work
- develop existing programs by analysing and identifying areas for modification
- integrate existing software products and get incompatible platforms to work together
- create technical specifications
- write systems to control the scheduling of jobs or to control the access allowed to users or remote systems
- write operational documentation with technical authors
- maintain systems by monitoring and correcting software defects
- work closely with other staff, such as project managers, graphic artists, UX designers, other developers, systems analysts and sales and marketing professionals
- consult clients and colleagues concerning the maintenance and performance of software systems, with a view to writing or modifying current operating systems
- investigate new technologies
- continually update technical knowledge and skills by attending in-house and external courses, reading manuals and accessing new applications.
- Typical graduate software engineer salaries start from £18,000 a year.
- The average annual salary for a software engineer is between £25,000 and £50,000.
- At senior or management level, software engineers can earn £45,000 to £70,000 or more per annum. Bonus schemes may be available.
The exact salary you'll receive is dependent upon the company, location and nature of your employer's business. The highest salaries can be found in the finance, pensions and telecoms sectors in London and the South East.
Income figures are intended as a guide only.
Working hours are typically 9am to 5pm. However, longer hours are often necessary towards the end of projects as deadlines approach, as well as during the testing stage so that systems can be tested when they're not being used. In some cases, software engineers may be required to be on call to deal with problems. This can involve evening and weekend work in a shift pattern. Allowances may be available in these cases.
Self-employment and freelance or contract work is possible as there is an increasing market for contract software engineers with specialist knowledge. Career breaks, on the other hand, may be difficult due to the need to keep technical knowledge up to date in a rapidly changing environment.
What to expect
- The job involves spending many hours at the keyboard, so high levels of concentration are required. Regular breaks are essential to minimise potential adverse health effects such as eye strain or back problems.
- The work is mainly office based or in computer laboratories, although full or part-time remote working is becoming increasingly common.
- Projects may be undertaken alone or in small teams.
- Women are currently underrepresented in this profession and gender imbalance across the IT industry as a whole is a recognised issue. Steps are being taken to redress the balance. Women who want to work in technology should visit Women in Technology for information and jobs.
- Depending on the nature of the business, travel within a working day or absence from home at night may be required. This is more likely with consultancy work. More travel is involved in installation and implementation work.
Although this area of work is open to all graduates, applicants will be expected to have some technical ability. Having studied one of the following subjects may increase your chances of employment:
- computer science
- computer software/computer systems engineering
- information systems
Many of the larger graduate recruiters will only employ graduates with proven technical skills and a good degree (2:1 or above) in a computing-related discipline.
Smaller companies generally prefer degrees of a computing, scientific or numeric nature. In some cases, however, graduates with an unrelated degree may be considered as long as their technical knowledge and enthusiasm can be demonstrated.
Graduates in non-computer-related subjects may consider taking a postgraduate IT conversion or technical postgraduate course. Many employers will also look for evidence of continuing professional development (CPD) outside of the classroom. Project programming experience can be used as evidence during the application process to show that a candidate is technically adept and also has effective problem-solving skills.
An HND in a computer-related subject may improve chances of entry and candidates with substantial systems development experience may be considered.
Entry without a degree or HND is unlikely, although it may be possible after gaining considerable experience in systems development as an assistant.
You'll need to show evidence of the following:
- knowledge of computer systems and technologies
- technical competency
- the ability to communicate with clients, colleagues and management to explain complex issues clearly and concisely
- a meticulous and organised approach to work
- a logical, analytical and creative approach to problems
- thoroughness and attention to detail
- business skills and commercial awareness
- the ability to work both in a team and alone and to manage your own workload
- career motivation and a willingness to continue to further your knowledge and skills
- an ability to learn new skills and technologies quickly
- an awareness of current issues affecting the industry and its technologies.
Relevant work experience is a good way of demonstrating a genuine interest in computing and is regarded favourably by employers. Gain experience through course-related placements, opportunities to work shadow or a year in industry.
Software engineers are employed in a very broad range of sectors.
- Specialist IT firms - such as IT consultancies, large IT providers, software development, internet providers and training firms; organisations that use IT software, systems and equipment, including retailers, law firms, business intelligence and market research organisations, education providers, the armed forces, the public sector and voluntary sector organisations.
- Manufacturing industry - including automotive, navigation, telecommunications, manufacturing and construction companies.
- Financial services - including global investment banks, financial/banking organisations, security market specialists and the pensions sector.
- Public utilities - covering energy and water supply, energy extraction and transport.
Depending on the setting software engineering may be offered as part of a wider role, so look beyond the job title.
Consultancy is another area where software engineer jobs arise. The role may include other elements, such as analysis, implementation and support. Small to medium-sized enterprises (SMEs) are a growing part of the IT industry and may also have opportunities.
Look for job vacancies at:
- Bubble Jobs
- Contractor UK - specialises in contract jobs.
- Women in Technology
Freelance work can be found through Freelancers.net.
It's vital to keep up to date with changes and developments in the industry, which may involve using your initiative and taking responsibility for updating your technical skills and knowledge. Software engineers will often take ownership of their training needs, particularly in smaller organisations where they may not be managed by someone with technical IT knowledge.
Large graduate employers often offer a structured programme, where you'll gain experience in a number of team-related projects in different work areas. Most companies offer ongoing training, either in-house or via external courses.
If you're a freelance contractor or employed by a smaller company, you may need to consider the cost and time implications of taking responsibility for your own training.
You can complete courses to obtain a variety of software-specific certifications, like Microsoft Learning, Certified Scrum Master (CSM) and Certified Ethical Hacker (CEH). These courses can be expensive but are recognised throughout the industry and can enhance your career prospects when combined with experience.
Other professional qualifications are available through BCS (The Chartered Institute for IT). BCS Professional Certificates come in foundation, intermediate, practitioner and higher levels. BCS can also help by providing information and guidance to members on recognising and planning learning needs and developing areas of expertise.
Up-to-date information on training and relevant industry-recognised qualifications is also provided by the Institution of Analysts and Programmers (IAP).
To further your career progression, you may consider training in areas such as business, management and finance.
There are different levels of software engineering and promotion is usually dependent upon both ability and experience.
An entry-level post typically involves working under supervision, formulating the scope of, and objectives, for systems and designing code. After around three years, you may progress to preparing detailed specifications from which programs may be written and be competent to work at the highest technical level.
A senior software engineer often supervises the activities of a team of developers for a large project or several smaller projects. This usually requires a minimum of five years' experience.
Progression is mainly into management via team leadership and project management roles, or to designer/consultant via technical specialisation. Transfer between organisations for advancement is often possible.
Software engineers are specialists and may remain within one organisation, and frequently in one role, for much of their working lives. However, others expand and develop their roles to the extent that software engineering becomes part of a much wider role in positions such as technical writing, IT training and education. They can also move on to the role of software architect.
Both BCS and IAP provide up-to-date information and advice on career development.