C++ Embedded Software Engineer | Job in East Sussex
Expertise in C++ Programming: Proficient in writing efficient and maintainable C++ code for embedded systems. Experience with both C++98/03 and C++11 or higher is desired.
Embedded Systems Development: Strong understanding of microcontrollers, microprocessors, and DSPs. Familiarity with various development boards such as ARM Cortex-M, STM32, and AVR is essential.
Real-time Operating Systems (RTOS): Experience with RTOS like FreeRTOS, VxWorks, or Nucleus is highly desirable. Ability to write device drivers, manage system tasks, and handle interrupts is crucial.
Low-Level System Programming: Familiarity with assembly language (ARM, AVR) for optimizing critical sections of code.
Embedded Linux: Experience in developing and debugging applications on embedded Linux platforms. Knowledge of Yocto Project or Buildroot is advantageous.
Version Control Systems: Proficiency in using Git or other distributed version control systems for software development and collaboration.
Debugging Tools: Familiarity with debugging tools like GDB, JTAG, and oscilloscopes. Experience with cross-compilers is also desirable.
Networking Protocols: Knowledge of common networking protocols such as TCP/IP, UDP, HTTP, and SSL/TLS for embedded systems is beneficial.
Cryptography: Understanding of cryptographic algorithms (AES, RSA, ECC) and secure programming practices is a plus.
Testing and Debugging: Ability to write automated tests and perform unit testing using tools like Google Test or Boost.Test. Knowledge of software debugging methodologies and techniques is essential.
Problem-Solving: Ability to break down complex problems into manageable tasks, analyze potential solutions, and develop effective strategies for implementation.
Collaboration: Strong collaboration skills with the ability to work effectively in a team environment, communicate ideas clearly, and contribute constructively to group discussions.
Attention to Detail: Meticulous attention to detail in the development, testing, and deployment of software applications.
Time Management: Ability to manage multiple tasks simultaneously, prioritize effectively, and meet project deadlines.
Continuous Learning: Commitment to staying updated with the latest developments in C++ and embedded systems technology through self-study, attending conferences, and participating in online communities.
Documentation: Strong documentation skills to create clear and concise technical documents for team members, stakeholders, and future developers.
Adaptability: Ability to adapt quickly to changing requirements or technologies and learn new tools and techniques as needed.
Quality Assurance: Commitment to delivering high-quality software by following best practices in software development, testing, and quality assurance.
Additional Information
Job Designation: C++ Embedded Software Engineer
Experience Requirements: 2 years experience required
Work Hours: 38
Qualifications: Bachelor's In Engineering, C++98/03, C++11 Or Higher, Arm Cortex-m, Stm32, Avr, Freertos, Vxworks, Nucleus, Assembly Language (Arm, Avr), Embedded Linux, Yocto Project Or Buildroot, Git Or Other Distributed Version Control Systems, Gdb, Jtag, Oscilloscopes, Cross-compilers, Tcp/ip, Udp, Http, Ssl/tls, Aes, Rsa, Ecc, Google Test Or Boost.test