Software Engineer
Siemens Plc
1 month ago
Role details
Contract type
Permanent contract Employment type
Full-time (> 32 hours) Working hours
Regular working hours Languages
English Compensation
£ 53KJob location
Tech stack
Build Automation
Unit Testing
Bash
C++
Cloud Computing
CMake
Software Quality
Code Review
Communications Protocols
Computer Programming
Continuous Integration
Software Design Patterns
Linux
DevOps
Device Drivers
Github
Python
Real-Time Operating Systems
Software Engineering
Universal Asynchronous Receiver/Transmitter
Scripting (Bash/Python/Go/Ruby)
Serial Peripheral Interface
Gitlab
GIT
Integration Tests
Build Tools
Software Performance
Software Version Control
Programming Languages
Job description
- Write high-quality code in programming languages such as C++, and optionally C
- Optimize software performance and memory usage to meet exacting resource constraints of embedded systems.
- Build automation scripts using scripting languages such as python.
- Write unit tests, module tests, and integration tests and boost coverage.
- Collaborate with electronics engineers and product managers, to ensure successful integration of software components into the overall system.
- Participate in code reviews to maintain code quality, identify potential issues, and provide constructive feedback to team members.
- Participate in end-to-end product design and development meetings. Collaborate with electronics, mechanical, software, and project management teams for optimum design cycles.
Requirements
- Bachelor's or master's degree in electrical engineering, or a related field.
- Experience in cross-platform software development, preferable also targeting embedded systems.
- Strong programming skills in at least C++17 and optionally C, with a good understanding of software design patterns.
- Experience in platform-agnostic software development deployable to multiple architectures, like arm-noneeabi, and x86_64 targets like windows, Linux
- Experience with a scripting language like python or bash.
- Experience with build tools like Make, CMake.
- Experience with version control tools like git
- Experience with dev-ops, CI/CD through GitLab, Github, etc.
- Experience with GNU coreutils and Linux.
- Familiarity with testing framework like gtest.
- Familiarity with real-time operating systems (RTOS).
- Familiarity with hardware-software interactions, device drivers, and communication protocols (e.g., UART, SPI, I2C).
- Familiarity with full-stack development, including modern web, smartphone and cloud technologies.