Senior Embedded Software Engineer (Full Time)
Mbryonics is a leader in the development of free space optical communications. Our product portfolio covers a wide range of emerging technologies from photonic integrated circuits to advanced optical systems and embedded software solutions. Our work involves designing, building, and deploying cutting-edge technology in satellite communications.
Role:
As a Senior Embedded Software Engineer, you will be working closely with a multidisciplinary team at Mbryonics. The team comprises photonics engineers, optical engineers, mechanical engineers, software engineers, mechatronics engineers, digital engineers, physicists, mathematicians, con-ops engineers, and business operations specialists. You will be responsible for leading a team of software engineers, mentoring them, and ensuring that they adhere to best practices in programming, architecture, code quality, and version control.
Responsibilities:
* Developing software on various embedded platforms, including microcontrollers interfacing with peripheral devices and powerful embedded controllers running full operating systems with advanced networking capabilities.
* Designing architectures, APIs, and technical requirements to ensure that our systems meet business needs and scale to support dynamic market requirements.
* Helping to grow and manage our CI/CD platforms to accommodate complex versioning and testing operations.
* Leading by example and helping the team develop best practices with regards to programming, architecture, code quality, and version control.
* Developing software according to Mbryonics' quality standards and procedures.
* Following Mbryonics' SCRUM framework adoption and participating in reviews and SCRUM ceremonies to ensure compliance with these standards and processes.
The Senior Embedded Software Engineer will be responsible for:
* Generating software requirements documents, using adopted and proven requirement management systems and practices.
* Generating software architecture documents that guide the development of scalable, modular software systems with clean application programming interfaces.
* Generating design and test documents following various standards, including ECSS (European Cooperation for Space Standardisation).
* Participating in internal and customer-facing reviews.
* Developing system and application software on (primarily) embedded Linux systems.
* Developing software on embedded systems running real-time operating systems.
* Creating peripheral device drivers by liaising with electronics and hardware engineers.
* Growing our CI/CD pipeline to accommodate complex build tooling and version control.
* Developing our independent software testing capabilities, setting the foundations for code quality processes.
* Ensuring all architectures and systems utilise robust security mechanisms.
* Leading by example the adoption of SCRUM methodology and framework processes together with the SCRUM Master and the Product Owner.
* Coaching our existing software team and instilling a work ethic of excellence, innovation, and collaboration.
Requirements:
* Bachelor's degree or higher in Computer Science, Computer Engineering, or an equivalent field.
* Proven experience developing embedded software for embedded Linux, RTOS, and microcontrollers.
* Proven experience developing production-level software solutions in telecommunications, robotics, medical devices, automotive, aerospace, or similar industries.
* Experience writing software for low-level interfaces such as UARTs, CAN bus, I2C, RS-422, and similar interfaces.
* Experience with network interfaces and protocols such as Ethernet, TCP/IP, and UDP.
* Experience with high-level protocols and data formats such as HTTPS, DHCP, XML, JSON, YAML, HTML.
* Strong experience with both functional and object-oriented programming in C, C++, and Python.
* Experience developing high-level applications that include full stack web functionality, databases, connection to cloud APIs.
* Experience managing version control systems and pipelines, with an emphasis on GIT.
* Experience implementing security mechanisms, including authentication and authorisation systems, and familiarity with SAML, X.509, PAM, OATH, SSO and related protocols and approaches.
Desired Skills:
* Ability to read and understand technical specifications related to the programming of integrated circuits.
* Familiarity with or exposure to digital logic, FPGAs, SoCs, SoMs.
* Some familiarity with GUI development for the creation of internal utility applications.
Diversity, Inclusion and Equal Opportunities:
Mbryonics is committed to promoting diversity, inclusion, and equal opportunities. We believe that the broad perspectives that result from recruiting, developing, and retaining a globally diverse workforce promote innovation and help us succeed as a business enterprise. It is the policy and practice of the Company to provide equal opportunities to all employees and applicants. The Company will not tolerate discrimination on the basis of gender, race, religion, sexual orientation, gender identity, civil status, family status, disability, age, or membership of the Traveller community.