Description
In this dynamic role, the candidate will work closely with the project’s other software engineers and the wider engineering team to design and develop software solutions enabling progress on the organization’s research and development activities. Duties will include contributing to software architecture definitions, creating development plans, translating application feature requests into reusable software, and executing on plans for new and existing embedded applications. Working with a mix of short and long timelines, balancing a wide range of technically diverse tasks. The work includes: automation and control of embedded platforms, data acquisition and management, and developing software support tools and associated services.
Minimum Qualifications
Bachelors degree in Computer Science, Computer Science Engineering, a combination of Electrical Engineering and Computer Science, or equivalent fields. Software development experience in an industrial setting. Development experience in one of the following programming languages: C, C++, Python, Java, Go, Rust, Scala, or Swift.
Preferred Qualifications
3+ years of experience with all aspects of the software development lifecycle: requirements gathering, design, development, deployment, and maintenance. Hands-on experience in using debugging tools such as gdb, lldb, oscilloscopes, and logic analyzers. Exposure to board bring-up and interpreting and navigating schematics and layouts. Capable of contributing to projects related to: application development (e.g. data acquisition, system control, automation, and UI), system software and firmware, device drivers, and general compute infrastructure. Strong Software Engineering skills in software design, development across object oriented or concurrent programming languages, and debugging. This would include the programming language itself as well as its toolchains (IDEs and dependency management) and overall ecosystem (frameworks and best practices) across a variety of operating systems. Proficient with software support tools including the Unix command line, shell scripting, and version control software. Demonstrated ability to digest and use new technology quickly and strategically. Consistent track record successfully making progress amidst ambiguity; strong communication skills and experience working on cross-functional projects.
Learn more about this Employer on their Career Site
