As the industry responds to seismic changes in the automotive market - and across society as a whole - we remain one of its most trusted and innovative partners, leading the way in high-calibre research across engines, drivelines and hybrid systems, as well as supporting the development of emerging technologies such as autonomous and connected vehicles.
Software engineering plays a key role in helping our customers design & implement complex & interconnected software systems and supports our ability to deliver turnkey development of vehicle systems.
Some sample projects include:
- Development of software for a Battery Management System, utilizing state-of-the-art multi-core processor
- Design & development of software units for a driveline system, integration of components from other teams & bench-top testing
- Whole life-cycle software development for an on-vehicle battery charging unit, with electronic hardware also developed by Ricardo
Software engineers typically work on embedded platforms, microcontrollers running within the vehicle, utilising the 'C' language (either written by hand or generated from MatLab/ Simulink). Software engineers are relied on for their detailed knowledge of the embedded platform & to ensure that the code is high-quality and reliable in order to support either vehicle testing or production. The specifics of the development process employed varies depending on the project & needs of our clients.
Software engineers generally work as part of a wider team which might, for example, include functional safety engineers, electronic hardware designers & application specialists.
SOFTWARE ENGINEER - OVERVIEW
The successful candidate will have the opportunity to work on the design, implementation & testing of a set of embedded software components intended for use within an automotive context.
Duties will include:
- Development of software designs (both architectural and module-level), based on the project requirements.
- Implementation (in 'C') of software modules
- Integration of 3rd party software modules
- Testing of modules, both at unit & integrated levels
- Debugging of software executing on embedded hardware
- Taking responsibility for delivery of software engineering work products according to cost, quality and operational targets,
- Communication and cooperation with a multi-disciplinary project delivery team & our client
- Improving delivery techniques; tools, procedures, work aids, etc.
Located : Cambridge and you could also be expected to work 'on site' at the customer location for short periods (e.g. during testing or hand-over). You should have a full driving license and be prepared to travel in the U.K and abroad occasionally for customer meetings.
- You are a thorough yet pragmatic engineer who applies a sound understanding of the fundamentals of software engineering to pro-actively ensure that the product is well designed & robustly engineered throughout the development life-cycle.
- You have a clear understanding of importance of software engineering techniques and how their application supports demonstrably robust, maintainable & re-usable output. You are passionate about ensuring that a systematic approach is used and firm in your belief that high-quality decisions made near the start of development will reap significant benefits downstream.
- Able to work & communicate well within multi-disciplinary project teams, you are a self-starter, able to make evidence-based decisions, and display a strong "can-do" attitude to match the challenges you will face with equal enthusiasm.
- In order to be successful, you will need to seek innovative solutions while working closely with development teams within tight timescales.
- The successful candidate will be degree qualified in a technical subject and will have a sound practical knowledge of software engineering (likely having experience of more than one development lifecycle methodology), either in automotive or another industry. Understanding of automotive systems and technology is an advantage.
- Through your career you will have developed a sound understanding of software engineering within and embedded context & been involved in the requirements development & design of several systems. Writing scripts to automate repetitive tasks or perform data extraction & manipulation tasks will be a frequently used tool in your kit. Your combination of knowledge & experience will allow you to effectively coach, support & develop more junior team members.
- You will likely have had previous experience of technical leadership, working with a project manager to define, monitor & report on the day-to-day technical work of the team.
Knowledge or experience in at least one of the following additional areas would be helpful, though not essential:
- Working knowledge of CAN communication & experience of bus analysis
insight into UDS diagnostic protocols & the services behind these
- Knowledge of electronics hardware and ability to understand electronic design schematic
- Understanding of & experience of writing C-code to comply with MISRA-C
- Have been involved in the creation, roll-out and maintenance of software processes & procedures
- Experience of working with networked systems and appreciation of failure modes and consequences, particularly in an automotive context
- Use of a range of test methods and tools including unit/module testing, debuggers, communication bus analysers and system testing