About the Role
About the Role
This is a role for a highly skilled Senior Software Developer to join our team, focusing on building and extending the next generation of scientific instrumentation software. The problems we solve are diverse, requiring you to work across our entire software ecosystem.
The software we develop spans low-level embedded firmware, sophisticated applications running in customer data centers, and scalable cloud services. Consequently, we value adaptability and a polyglot mindset. If you are a smart and creative developer with a passion for software development technologies, and are eager to learn new programming languages or frameworks to solve the right problem with the best technology, you will thrive here.
Responsibilities
- Full-Stack Development & Implementation: Design, implement, and test robust new features for our instrumentation, data center, and cloud-based software products that manage the acquisition, storage, transmission, and monitoring of Earth data.
- Problem Solving & Optimization: Analyze and solve complex technical challenges related to system reliability, performance tuning, and optimizing system usability and data transmission across diverse network environments.
- Technology Selection & Application: Drive the selection and application of appropriate technologies (e.g., Rust for embedded) to deliver the best technical solution for a given problem. Willingness to learn new development technologies is essential.
- Quality Assurance & Mentorship: Initiate and participate in thorough code reviews, provide constructive feedback, and mentor junior developers to ensure maintainable, high-quality code and design.
- Technical Project Leadership: Take direct responsibility for technical scoping, architectural trade-offs, and risk mitigation on larger software deliverables.
- Operational Support & Improvement: Actively investigate and resolve technical issues escalated to R&D. Proactively identify and contribute to improvements in our processes, quality, and technologies.
Requirements
- Experience: 5+ years of professional software development experience.
- Technical Versatility: Expert-level proficiency in a core language (e.g., C++, Rust, Java), and a demonstrated eagerness to adopt new languages based on project need.
- Foundational Knowledge: Deep proficiency in using Linux as a development environment and target platform for software development. Solid working knowledge of networking technologies, web-based communication protocols, and relational databases (e.g., PostgreSQL, MySQL).
- Software Development Workflow: Proficient in standard development tools, including version control (Git), task tracking (Jira), unit testing frameworks, and continuous integration.
Requirements
Professional Experience
5+ years of professional software development experience.
Technical Versatility
Expert-level proficiency in a core language such as C++, Rust, or Java.
Linux Proficiency
Deep proficiency in using Linux as a development environment.
Networking Knowledge
Solid working knowledge of networking technologies and web-based communication protocols.
Nice to Have
Familiarity with relational databases like PostgreSQL or MySQL.
Experience with version control systems like Git and task tracking tools like Jira.