Software engineers are the computer whizz-kids who are responsible for designing and developing effective software solutions to meet their clients’ requirements. The term ‘software engineer’ is fairly generic, and most software engineers actually specialise in a certain area, such as web development or database architecture.
Indeed, if you become a software engineer, you could be responsible for working on anything from web applications and content management systems to databases and operating systems.
Software engineers get involved throughout the entire project lifecycle. Firstly, they get involved with the requirements gathering process, i.e. finding out the objectives of the proposed software solution.
Secondly, they ‘scope’ the project, which involves identifying what needs to be developed, how it needs to be developed and when it should be developed by. They will also choose the most appropriate programming language for the job and identify any development frameworks which can be exploited to speed up the process. Software engineers also need to think about cross-platform integration, i.e. how the solution can be used across various different platforms.
Once this has all been worked out, the software engineer will get stuck into the actual coding of the software system. During the development phase, software engineers will also conduct automated unit testing. This innovative approach, which is known as test-driven development (TDD), essentially involves programming and testing in parallel, making the whole process much more efficient.
Once the development process is complete, more testing will be undertaken. This will involve conducting functional testing to ensure everything works properly, and user acceptance testing (UAT) to make sure the product fulfils the requirements of the end user.
Sometimes the software engineer will also perform extra integration testing to make sure that the new or updated product integrates correctly with other systems.
A software engineer’s job might also involve some database administration. A lot of today’s software systems interact with databases for storing and searching vast amounts of information. Software engineers need to be able to develop and administer databases and also understand and write complex SQL queries from within the code they are writing.
Once a product has been developed and implemented, a software engineer will also be responsible for detecting and fixing bugs. Finally, they might work alongside a technical author to put together user manuals and other technical documentation.
Salary & benefits
Entry-level software engineers tend to earn between £22,000 and £30,000 per annum.
Senior software engineers, however, can earn anywhere between £35,000 and £70,000 a year.
Freelance contractors can earn considerably more—sometimes up to £450 a day.
Software engineers typically work five days a week from nine-to-five, although extra evening and weekend work may be required from time to time to meet project deadlines.
To enter this line of work, you will need an undergraduate degree in any discipline. However, studying a subject such as computer science, software engineering, physics, maths or electronic engineering may boost your chances of securing an entry-level position.
If you don’t have an applicable undergraduate degree, it may be advisable to complete a postgraduate qualification in a relevant subject, especially if you wish to access the profession via a graduate scheme.
Another way to boost your employability is to get work experience with a digital agency or I.T. company. This will give you fantastic hands-on experience and will enable you to build up a network of useful contacts.
Training & progression
The majority of your training will be done ‘on-the-job’ under the supervision of senior software engineers. You will also have the opportunity to attend in-house training sessions from time to time.
Working in I.T. is a constant learning process and, in order to be successful, you will need to keep on top of industry developments and teach yourself new skills all the time.
Once you have gained a decent amount of experience, you may step up into a lead software engineer position with team leading responsibilities. Eventually, you may advance your technical knowledge even further and begin working as an enterprise, systems or applications architect on major projects.
Alternatively, you might decide to branch out and work in a different area of the I.T. industry, such as systems analysis, technical project management or I.T. consultancy.
Many software engineers become independent contractors and work on a freelance basis for a variety of clients.