Job Description
Requirements:
- Requirements gathering, use case analysis, device and application prototyping, customer/customer-liaison engagement
- Project management: Project planning, task estimation, software metrics collection, version control
- Full lifecycle software application development: Design, programming, debugging, peer review, unit testing, performance tuning, integration
- Documentation: Program commentary, user guides for service and troubleshooting
- Product testing: Unit testing, bench testing, system integration testing, and field test support
- Leadership: Effective team member and/or lead engineer, consistent positive attitude, creativity
- Hardware development support: Software support for hardware development and testing
- Other tasks and activities as required by management
- 6 years of experience in a software development role
- 4 years of experience in software development for Linux-based platforms
- 6 years of experience using the C/C++ programming language
- Fluency in English
Roles and Responsibilities:
- Expertise with software programming languages, frameworks, and subsystems including but not limited to:
- Must have Attributes:
- Embedded systems programming
- C, C++, Python
- Shell Scripting: Bash Shell
- Linux kernel, File systems & OS, networking, serial communications, real-time operating systems (RTOS), Bare metal
- Good to have Attributes: Perl, JavaScript
- Infrastructure and application development experience using technologies and architectures such as:
- Must have Attributes:
- IP networking programming: TCP, UDP, TLS, DNS
- Serial communications: RS232/485
- Platforms: ARM
- Good to have Attributes:
- Communication Protocols: CANBus, ModBus, SNMP, BacNet
- Platforms: SoC
- Familiarity with software development environments and tools:
- Must have Attributes:
- Integrated platforms like VS Code, Eclipse, CodeWarrior
- Source code version control: GIT
- Yocto/BitBake
- Good to have Attributes:
- Integrated platforms like Visual Studio.
- Docker