Who we are

Most people dream of being able to play a musical instrument. We develop outstanding products that enable anyone to achieve this dream. Our first product is flowkey: a revolutionary app for learning to play the piano. After our launch in 2015, flowkey quickly became one of the global leaders in its category, with more than 5 million users from over 100 countries. We are also one of the exceptions in the startup world, as we have been profitable from the beginning. This enabled us to go our own way and create a great culture.

Why join us

We believe that the best companies help you live your life the way you want and become the person you want to be. That's why we focus on promoting your personal freedom and growth. Here are some of the benefits you'll enjoy as a member of our team:

  • Flexible work location: You decide where you want to work: in our beautiful office, from home, or anywhere else in the world.
  • Free time management: We believe work should adapt to your life, not the other way around. We only schedule a few fixed appointments every week – you're free to arrange the rest of your time as you like.
  • Shared success: We distribute part of the company's annual profits among the whole team. This way everyone takes part in our financial success.
  • Support for your growth: We actively support you in your professional and personal development. If you want to learn a new language or go to a conference, we'll cover the costs – up to €2,500 per year.

Your role and responsibilities

As our Senior Software Engineer - Android NDK, you will support our existing team of mobile developers to bring feature parity to our Android applications, track down and fix bugs in order to reduce crashes / ANRs, and improve compatibility with a wider range of new and diverse Android devices. In particular, your focus will lie on the parts of our app written with the Android NDK, including our open-source cross-platform UI framework.

You will collaborate alongside other developers with our product and support teams to ensure flowkey’s Android application is as stable, beautiful, and feature complete as its iOS equivalent.

The role’s focus is not on implementing a pixel-perfect design or on app-server communication. Instead, it calls on your intimate knowledge of the Android system and clever debugging skills to create workarounds for counter-intuitive graphical issues or crashes, facilitate the work of our frontend devs, and make low-level performance and DX improvements, including to our 3D rendering pipeline.

Among other tasks, you will:

  • Help to bring new features to our Android app.
  • Help tracking down bugs to reduce crashes / ANRs, and improve performance.
  • Work with the team to build and integrate Android-native libraries written in Kotlin or NDK-native languages into our apps. Examples include libraries for subscription management, push notifications, machine learning, bluetooth MIDI, font rendering.
  • Support with deployment, CI, and testing on various devices.

Requirements

  • Excellent command of at least one low-level native language, such as C, C++, Rust, and/or, preferably, Swift.
  • Knowledge of calling conventions and an understanding of manual memory management (pointers, heap vs. stack).
  • Excellent understanding of the Android operating system (NDK, JNI, system libraries).
  • Experience with at least one low-level 3D rendering technology (OpenGL, Vulkan).
  • Good written and verbal English communication skills and the ability to collaborate with different stakeholders.
  • Eagerness to learn through a feedback culture and share knowledge with the team.

Nice-to-have

  • Experience with cross-compilation and compiler toolchains.
  • Experience with iOS development (Swift, UIKit).
  • Experience with web / React Native development.
  • Experience with Audio / MIDI programming.
  • An active interest in Google’s Fuchsia OS.

How to apply

Please click on “Apply to Position” to send us your cover letter and your CV through the application form. We look forward to meeting you!