The Position
We are looking to hire a skilled Embedded Software Engineer to join our dynamic software design team. As an Embedded Software Engineer, you will be responsible for executing complete embedded software life-cycles for company and client hardware.
Embedded Software Engineers are responsible for developing and implementing software for embedded systems such as routers, smartwatches, televisions, and hybrid vehicles. They are involved in the complete life-cycle of the embedded software product, from building the code through to final testing and device implementation.
To ensure success as an Embedded Software Engineer, you should have extensive experience coding in C and C++, and have excellent knowledge of embedded coding techniques. Ultimately, a top-class Embedded Software Engineer can develop scalable software systems that are perfectly optimized for the embedded device.
Duties and responsibilities
Designing, developing, coding, testing and debugging system software for embedded systems and devices
Meeting with clients and the software design team to determine software specifications.
Designing and writing the embedded software code according to desired specifications.
Testing the software for scalability and structure.
Reviewing the design and code
Analysing, and enhancing stability, efficiency and scalability of all the system resources
Validating and integrating new product designs
Developing a set of FAQs for the system and also optimise I/O performance
Providing after-sales support and service
Designing and developing the hardware for the system
Evaluating and assessing the open source and third-party software
Design and implement software of embedded devices and systems from requirements to production and commercial deployment
Provide post production support when necessary
Interface with hardware design and development
Creating design goals and deadlines.
Implementing the embedded system and interpreting error reports.
Fixing bugs and optimizing the system.
Maintaining the software program.
Documenting software application values.
Define specifications
Develop software bricks (e.g., drivers) or complete products, potentially with security constraints
Participate in the implementation of a software architecture
Run unit tests of modules and take care of debugging
Ensure the maintenance of the delivered code
Report on his activity
Mastering software development in C/C ++ is essential.
Depending on the project, the embedded software development engineer must have worked on one or more architectures using different microprocessors and processors, often with real-time constraints.
This implies the embedded developer must be highly adaptable and fast learning in order to be quickly operational in many different technical environments.
Developing and commissioning software for embedded systems and devices starting with the requirements and helping in all stages till commercial deployment
Requirements and qualifications
3-5 years of experience in embedded software engineering or similar role
3-5 years of experience with development and troubleshooting on embedded targets
Bachelor’s degree in Computer Science or Computer Engineering, or other related fields.
Proven experience in C or C++
Familiarity with software configuration management tools, defect tracking tools, and peer review
Excellent knowledge of operating systems, coding procedures, interfaces, IPs, and hardware systems
Knowledge of different IP protocols, interfaces and hardware subsystems
Sense of ownership and pride in your performance and its impact on company’s success
Experience with a complete life-cycle of an embedded software system.
Prior working experience in some relevant field, preferably as a Software Engineer
Experience in developing embedded systems as well as troubleshooting problems in them
Experience in design of embedded systems with real-time multitasking operating systems
In-depth knowledge of software configuration management tools as well as defect tracking tools, and peer review
Sound understanding of reading data sheets and schematics of components
Proven working experience in software engineering
Experience in hands-on development and troubleshooting on embedded targets
Proven experience in embedded systems design with pre-emptive, multitasking real-time operating systems
Familiarity with software configuration management tools, defect tracking tools
Adequate knowledge of reading schematics and data sheets for components
Critical thinker and problem-solving skills
An analytical mind in addition to a problem-solving attitude
Ability to take quick decisions while working in a fast-paced environment
Team player
Good time-management skills
Great interpersonal and communication skills and the ability to project manage.
Strong documentation and writing skills