Software Engineer jobs
(Also known as Software Developer)
A software engineer is responsible for the development, maintenance and operation of computer software to enable businesses and organisations to function as efficiently as possible. Software engineers work in a range of industries, from offices to manufacturing companies developing, operating and maintaining specific software to allow the company’s work to be carried out with as few disruptions as possible. Typically, a software engineer works with a business analyst or computer programmer to identify the needs of a company and to develop the specifications of the engineering project. Working with a small team of IT professionals, the software engineer completes the project following a particular development plan which covers each stage of the project, including testing, software analysis and the installation of completed IT systems.

Salary

Recent graduates and newly qualified employees typically earn between £19,500 and £24,000 a year. With experience this can rise to between £25,000 and £38,000 depending on the size and nature of the company. Senior software engineers and those working in a more managerial role usually earn up to £45,000 a year.

Responsibilities

A software engineer’s job varies according to the demands of the business or organisation but typical responsibilities include:
  • Programming computer controls which are used to activate machinery in manufacturing industries
  • Working with a business analyst to develop a project development plan
  • Setting up new IT systems
  • Modifying IT systems already in use
  • Building administrative and database systems for offices
  • Writing documentation
  • Developing code
  • Programming a test model of a piece of software
  • Testing the model for compatibility and installation problems
  • Analysing test results
  • Fixing any technical problems that arise through the test
  • Installing a complete version of the software
  • Testing the software again before it is ready for use
  • Testing and operating software once it is up and running
  • Fixing any problems that arise with the software when it is in use
  • Advising clients on the new software

Qualifications

Software engineers are usually required to have a good first degree, BTEC or HND in a relevant subject such as computing, computer science, information technology, software development or software engineering. For graduates with a non-related degree it is possible to sign on to a graduate training scheme with a company, which will provide professional training in software engineering (candidates wishing to embark on a graduate scheme will be required to demonstrate an enthusiasm and commitment to the job) Alternatively, many universities offer post-graduate conversion courses in IT related subjects which may be a quicker, but more expensive way, of getting a job.

Skills

A software engineer is a highly skilled job and requires expert knowledge in computer programming and software development. More specifically the job requires:
  • An excellent working knowledge of hardware, software and programming languages (e.g. Javascript)
  • The ability to develop and interpret technical plans
  • A creative approach to problem solving
  • An excellent understanding of CASE (Computer Aided Software Engineering) tools
  • Excellent communication skills, both written and verbal
  • A good understanding of customer care
  • Excellent interpersonal skills
  • Good team working abilities
  • The ability to explain complicated processes in non-technical language
  • Good project management skills
  • The ability to work to tight deadlines
  • The ability to thrive under pressure
  • An awareness and respect for confidentiality and data protection issues
  • The ability to concentrate for long periods of time
  • Good manual dexterity
  • Good eyesight

Working Conditions

Typically, software engineers work between 37 and 40 hours a week. Most of their work is done during normal office hours but the job can entail some evening or weekend work, particularly if an unforeseen problem arises with the client’s software. The job is office-based but can involve working away for long periods of time depending on where the client is situated.

Experience

It is essential to have some relevant practical experience of software development to go alongside the theoretical knowledge gained through a degree or diploma. Some degree courses have a placement dimension which is crucial for learning how to apply knowledge gained in a professional environment. Most employers require a good working knowledge of the main languages of programming so experience of languages such as Javascript, C++, Smalltalk, Visual basic, Oracle, UML, Linux, Python, Perl and Ruby is essential.

Employers

Computers are used in almost every industry so software engineers are in high demand. Financial services, businesses, local authorities, public institutions, manufacturing companies, schools and universities usually employ full-time software engineers but most other organisations will call on a software engineer for a temporary period of time. As an alternative to working for one organisation, software engineers could get work as a sub-contractor or work on a consultancy basis. With enough experience, software engineers often decide to set up their own business. This can be more lucrative in the long run but it is wise to get experience working for someone else in order to develop contacts and get an idea of what is involved in running a business.

Career Progression

Software engineering accounts for almost a third of all IT jobs so prospects are good and there are plenty of opportunities for professional development and on-the-job training. Many employers offer software engineers the chance to develop their skills through a professional qualification, such as a British Computer Society Certificate or a Professional Graduate Diploma in Software Development and Engineering. There are also training courses available which are run by a specific software company, such as Microsoft Certified Solution Developer, Sun Microsystems Java Certified Programmer and Oracle PL/ SQL Developer. Further accreditation and professional development courses are offered by the Institution of Analysts and Programmers With significant experience of software engineering, employees can move into a more senior software development role. This will usually involve supervising a team of engineers, liaising directly with clients, researching products, advising clients and colleagues, reviewing the work of other team members and taking more responsibility for the project management side of the work. Working as a software engineer also lends itself to work in other IT related jobs such as systems design, IT architecture and systems analysis.
Software Engineer Simon Davy is 30 years old and works for X-Lab Systems as a qualified software engineer. He gives us the inside story… After doing a computing degree at the University of Leeds I decided I wanted to undertake some further study so I spent 3 years doing a PhD in computer science (this isn’t necessary to become a Software Engineer but it meant I found it really easy to get a job once I’d finished studying). It’s quite hard to describe what I do in a typical day at work without going into a lot of technical language. Put simply, I meet with colleagues, clients and vendors, write documentation, develop code and draw big messy diagrams on white boards! Most of the time I really enjoy my job. Solving technical problems is fun and I enjoy the constant learning that comes with technological improvements. A software engineer requires a certain level of expertise so I enjoy the respect that sometimes comes with the job! I don’t like it when I am forced in certain technical directions for political reasons and I find it very difficult to work with managers who think they understand technology but don’t! Writing documentation for people who don’t understand code is also a necessary evil that goes with the job. Assuming that potential software engineers can already programme to some degree then I would advise people to diversify their skills. Learn some dynamic languages such as Python/Perl/Ruby/Javascript and familiarise yourself with both Unix and Microsoft platforms and tools. It is also important to have a good understanding of important standards: XML, HTTP etc and to develop good discipline in using revision control software and testing tools. Most importantly you need to learn, write and communicate well in emails, code comments and in specification and user documentation. My final tip is to make sure you actually enjoy developing code: if you don’t then a software engineer is probably not the job for you! After I have had more experience as a software engineer I expect to go on to a team management role or a more senior software development job. There are good opportunities for career development in software engineering providing you are committed to the job and willing to learn as technology improves.