What is software engineering? A guide to new developments, challenges and graduate careers
What do software engineers do? We spoke to a principal software engineer to find out about life as an engineer, how projects works and what aspiring software engineers need to know.
Software engineering is a fast-moving area of technology and so the skills that I used in the beginning of my career are completely different to the skills that I use now.
Software engineering combines the processes and disciplines of engineering, with the coding and programming of software development. There are many opportunities for graduate software engineers, across all sorts of industries. To find out more about careers in software engineering, developments in this sector and advice for students interested this area, we spoke to Jack Sawyer, a principal software engineer at BAE Systems.
What is software engineering?
To me, it’s computer programming but with some more rigour and discipline behind it. It’s not just putting together code; it’s also writing requirements and implementing, testing and maintaining software.
The work of a software engineer interacts closely with people in other disciplines. I usually sit in a team with other software engineers, systems engineers and hardware engineers, each of whom will use their expertise on different stages of a project. It’s far from the stereotype of coders working alone in a basement somewhere.
What does a typical software engineering project look like?
A typical project begins with my team receiving a series of requirements from a customer. This is then passed onto our group of systems engineers, who do some top-level design of a system as a whole. From then, our software engineering team takes the allocated requirements and starts designing and coding. We primarily use UML (unified modelling language), MATLAB Simulink and C for this.
Throughout this process, there are many stages of testing and verification that the code needs to go through. This includes the instrumentation phase and testing the code alongside the hardware. This generally happens in a lab environment, where we’ve got test stands that simulate the other aspects of systems that our code will need to work alongside. A lot of our work is safely critical, so we need to test every line of code to ensure that it meets the customer’s requirements.
It’s crucial that we follow process documents to the letter… These processes can take some adjusting to from university, as coding (which is usually ‘the fun part’) makes up a relatively small proportion of the work we do.
What are the major developments in software engineering?
Recently, model-based engineering has also become much more prominent. This is where, using tools such as SCADE and MATLAB Simulink, requirements and designs are represented as a collection of models, rather than a bunch of documents or spreadsheets. These models are used as a central source of truth and ensures that the entire team is working with the most up-to-date information. Model-based engineering is still evolving, but it’s already changed how we work with the other engineers in our product teams.
Software engineering is a fast-moving area of technology and so the skills that I used in the beginning of my career are completely different to the skills that I use now. I was taught the fundamentals of programming by learning Java at university, but the majority of the work I do now is using C. Working in this sector, you’ve got to be willing to learn on the job.
What challenges are software engineers likely to face?
Find opportunities to look at other people’s code… there’s a lot to gained from examining an experienced programmer’s code.
The work of a software engineer is very much driven by processes. It’s crucial that we follow process documents to the letter, making sure that every test has been passed and everything works in the way that it should. This is vital when working on safety-critical software and for enabling other engineers to do their work. These processes can take some adjusting to from university, as coding (which is usually ‘the fun part’) makes up a relatively small proportion of the work we do. However, I think of it as an extra challenge that my code has to go through.
What advice do you have for aspiring software engineers?
A lot of the rigour that comes with software engineering will be learned on the job and will naturally grow from logical and analytical thinking skills, so students should focus on developing their programming skills. Show your enthusiasm for programming – you don’t necessarily have to have a game on the app store, but it’s good to see evidence that students are developing their skills in their own time.
Find opportunities to look at other people’s code, whether that’s at university or through work experience of a placement year. There’s a lot to be gained from examining an experienced programmer’s code and comparing it to the requirements they were given. Ask yourself: do these things match, what can I learn from this, and is there anything I would do differently?
Jack’s route into software engineering
- When I was applying to university, computer science was the only option I considered. I’d always been interested in computers and how they work, so studying this at university felt like a natural progression for me.
- My first experience of software engineering was during my year in industry, which I carried out a BAE Systems. Over this year I worked as a software engineer on digital map projects, particularly on tablets and PDAs (personal digital assistants). I was offered a place on BAE Systems’ graduate scheme and started work in 2009.
- My job title when I started was graduate software engineer, and I’ve since progressed to software engineer in 2011, senior software engineer in 2013 and to my current position as a principal software engineer in 2016.
What does your job involve?
I work in safety-critical systems at the BAE Systems site in Rochester. A good example of the types of projects I work on is the high-lift computer of a well-known commercial aircraft. These control the flats and slats on the wing of an aircraft to modify the amount of lift produced.
I was involved from a relatively early stage right through to seeing the aircraft going into service. This took around five years and involved travelling to Canada and the US to work in the client’s own simulation labs. Getting to see that aeroplane fly for the first time was a highlight and there’s something quite cool about knowing there are aeroplanes flying around partly using software I’ve written.