Senior Software Engineer
You may not know our name, but you have surely used our innovations and solutions.
Our mission is to unlock the world and make it safer through cutting-edge identity technologies. Every day, around the globe, we are enabling citizens and consumers alike to perform their daily critical activities (such as pay, connect and travel), in the physical as well as digital space. We are transforming their lives by making the world more secure and yet also more streamlined.
We have brought together complementary know-how and technologies that have never been combined before for both the physical and digital era: secured connectivity, secured payments and secured identity management. Cybersecurity, biometrics, large scale distributed systems and Cloud computing, analytics and smart devices are at the core of both our physical products and our software and systems.
We serve our clients in 180 countries thanks to our 15,000 employees worldwide.
Purpose
We are seeking a skilled Software Developer proficient in C/C++. Good to have Java, C# but not mandate, and Android development. The ideal candidate will be responsible for coding, debugging, executing non-regression tests, and adding new tests during feature development.
Key Missions
Key Responsibilities:
• Develop and debug code using C/C++ and other technologies.
• Analyze and resolve bugs in existing systems.
• Execute non-regression tests and enhance test suites during feature development.
• Document features, bugs, and test results as required.
• Uses programming, scripting and database languages to write software code that meets requirements and that optimizes software performances
• Identifies existing software components, libraries and frameworks to reuse in the solutions
• Applies knowledge of software development best practices, including coding standards, secure coding, code reviews, source control management, build processes, testing, and operations
• Contributes to requirement (functional and non-functional) analysis and estimations
• Supports software testing, deployment, maintenance, and evolution activities by correcting programming errors, responding to scope changes, and coding software enhancements
• Builds up software structure including functions, design patterns, layers, etc.
• Documents and demonstrates solutions by developing code comments, layouts, diagrams and charts
• Designs and codes autonomously complex functions and full modules, within agreed quality, deadline and cost; asking for support of experienced peer when needed
• Performs code reviews and basic troubleshooting
• Participates in workshop with customer and external parties
• Coaches less experienced software developers
Profile & Other Information
Skills required
C Programming: Mandate
Experience with low-level C programming.
Driver development for Windows, Linux (Libusb), and Android.
Ability to write driver services and unit tests.
C++ Programming: Mandate
Proficient with C++20 features (Threads, Mutexes, Futures, Promises).
Experience with Boost Libraries and writing unit tests using Parasoft.
Familiar with compiling on Win32 and mixed platforms.
Java Programming: Good to have not mandate
Strong knowledge of Java programming and JNI interface.
Experience with Swig libraries and JUnit for unit testing.
C# Programming: Good to have not mandate
Advanced knowledge of C# (Events, Delegates, Mutexes).
Ability to develop.NET applications and write unit tests using Parasoft
Android Development: Good to have not mandate
Experience with Android API 34 and Android Studio.
Knowledge of Gradle and unit testing Android applications (.apk).
Platform Experience: Mandate any one skill
Windows: Proficient with MSVC and Windows 10.
Linux: Familiar with Ubuntu/Fedora and compiling with GNUC.
Android: Experience with NDK and Android packaging.
General Skills: Good to have not mandate
Experience with design patterns, GIT/SVN, Jenkins, Maven, and Powershell scripting.
Optimization of workflows, memory, and multi-thread development.
Knowledge of USB drivers (libusb, winusb), protocols (bulk, isochronous), and real-time development.
Proficient in using OS features like scheduling, thread synchronization (semaphore, mutex).
By choosing to work at IDEMIA, you can join the journey of a unique tech company. You can seize all the opportunities of our fast-paced environment. You can add your distinctive qualities to our global community. You can contribute to a safer world.
We deliver cutting edge, future proof innovation that reach the highest technological standards. We’re well established, and yet still agile. We aren’t too big, and we aren’t too small. And we’re transforming, fast, to stay a leader in a world that’s changing fast, too.
At IDEMIA, people can develop their expertise and feel a sense of ownership and empowerment, in a global environment, as part of a company with the ambition and the ability to change the world.
Our teams are close and collaborative; maintaining a dialogue and developing human connections matter to us. We are truly international and we know that diversity is a key driver of innovation and performance. We welcome people from all walks of life, regardless of how they look, where they come from, who they love, or what they think.
Each of our locations has its own advantages to offer a collaborative and friendly work environment.
IDEMIA. Expect the unexpected. Join the journey of a unique tech company.