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
£ 53K

Job 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.

Apply for this position