Software Engineers
Overview
We sell a software development service to large, mainly aerospace, engineering companies. We specialise in software development for this business area. The purpose of the role being described here is to help us to deliver this service by developing software.
We will allocate you to project teams from time to time, and your responsibility is to join in with the team’s work, collaborate and contribute to make sure both the customers are satisfied, and our company management are satisfied with the project’s outcome and progress. You can be involved in all the phases of the project, right from requirements clarification through to bug fixing and support after delivery, and everything in between. The role is a technical one, and has no commercial aspect beyond the responsibility we all have to be professional representatives of our company.
Typical Tasks
- Reading documents and studying other software sometimes – to better understand requirements.
- Helping customers to clarify and communicate requirements.
- Thinking about the functional behaviour we could produce in the new software we create, writing this up in specifications, and helping customers to understand and agree to these specifications.
- Thinking about how new software should be designed (internally), including experimenting and researching different approaches – and specifying this design more formally. Design is usually done collaboratively, and led by an experienced developer.
- Writing the code (of course!)
- Conceiving and writing automated tests
- Helping to build software deliveries for customers and taking part in the demonstration / feedback and response dialogues that arise.
- Taking part in meetings and providing written reports to management – to help us make sure projects are managed well, and we are managing the technicalities properly.
- Learning about new software technologies and customer domains (like Aerodynamics for example)
- Developing specialist expertise in certain areas over time – and helping others to benefit from your accumulated expertise when needed.
Characteristics of our software
Our software is based mostly on open-source technologies, and is often cross-platform. Our main languages are Python, C++ and Java. We create a range of GUI desktop software, and client server software, but also have significant streams of work in the area of application development frameworks and infrastructure, and with high-performance-computing (HPC) interfaces.
The software is often concerned with geometry, maths and physics, particularly in the areas of aerodynamics, force and loads analysis, and aircraft mass modelling.
We keep a very active eye on emerging software technologies – occasionally contributing for example to conferences – like the EuroPython conference.
We place a significant emphasis on the processes and methodology of software development – with a keen interest in design quality, Agile lifecycles, continuous integration, test driven development etc.
Organisation and Communications
Typical projects last between 1 and 9 months, and are staffed with between 1 and 4 people, and we have around 30 developers. We manage our software affairs with two managers; one taking care of overall technical supervision and the other concentrating on all the project management and operational matters. Every project has a nominated technical lead also. We move people around between different project and technology areas to both secure knowledge in multiple heads – and also to provide continuous new challenges and diversity for people.
Skills needed
The type of skills we need will be fairly obvious from the “typical tasks” section above. Perhaps what is less obvious is the level of skill we are looking for. The most important thing for us (by far) is your underlying thinking and learning ability. We are unusually demanding about this criterion – and our policy is to try to continuously develop the team with the smartest people we can find. We are more interested in the smartness you demonstrate in your test than in your experience. New graduates are just as interesting to us as people with more experience.
We need you to be proficient in at least one OO language. Your knowledge or keen interest in software design is also important.
Not everyone in our team needs to be a mathematician, engineer of physicist; around one half of the team come from a dedicated computer science education. This is why your maths/physics knowledge is a bonus rather than a pre-requisite. It is also important to point out, that none of our work is dominated by engineering or maths. It is dominated by software engineering – but we need to be able to work effectively, and to communicate well with our customers about their maths and engineering.
Outlook for the role
We view all our software development team as part of our long term growth potential. Our policy is to both encourage and expect you to grow your skills, and maybe become something of a specialist in one area or another over time.