Senior Software Developer Kotlin
We fuse together exceptional talent who deliver outstanding software solutions. Our approach has helped us grow 60% in 2021 94% in 2022 while in 2023 we joined forces with Insight a Fortune 500 company and a leading solutions and systems integrator. With exciting growth plans and cutting-edge projects there has never been a better time to join our incredible team.
About the role
We are building the software that drone pilots actually look at. The application runs on the aircrafts smart controller DJI RC Pro / RC Plus class hardware as an Android app with a Kotlin presentation layer sitting on top of a shared Kotlin Multiplatform core that also powers our backend.
This role is front-end first. You own the interface: live telemetry video mission state and the controls a pilot uses in the field. You will also co-own the shared KMP core with the rest of the team the domain model protocol and sync logic that the UI renders and the backend serves.
We do not have a designer yet. The right person here has opinions about interface design and can carry a screen from rough intent to something a pilot can use in bright sunlight with one hand working with a designer later but not blocked without one today.
This is a senior individual contributor role. You are not managing anyone; you are expected to make good calls independently and raise the quality bar by example.
What you will do
- Build and own the Android presentation layer in Kotlin and Compose: flight UI telemetry displays video mission planning and review.
- Shape the interface itself layout interaction information hierarchy in the absence of a dedicated designer.
- Co-own the shared Kotlin Multiplatform core alongside the rest of the team: domain model protocol persistence sync.
- Render live telemetry and video streams smoothly on modest controller hardware.
- Design for the field: degraded links stale data gloves sunlight vibration one-handed use.
- Work alongside the engineers handling the DJI SDK integration and consume the flight state they expose growing into that layer yourself over time if it interests you.
- Validate on real hardware. The emulator only gets you so far; expect to be part of field testing.
Requirements
1. Engineering fundamentals
- 5 years building and shipping production software.
- Expert-level Kotlin: coroutines structured concurrency Flow generics.
- Sound architecture instincts: modularization clear layer boundaries domain logic kept out of framework and UI code.
- Comfortable with testing and CI/CD as part of normal work not an afterthought.
- Able to work autonomously in a fully remote distributed team and to communicate clearly in writing.
- Professional working proficiency in English.
2. Android
- 4 years of Android development with applications shipped and maintained in production.
- Solid grasp of the application lifecycle foreground and bound services process death and keeping a long-running session alive behind the UI.
- Performance work as a habit: profiling memory frame timing battery and thermal behaviour on constrained devices.
- Comfortable targeting older API levels and non-standard hardware controller devices lag well behind mainstream Android and have no Play Services to lean on.
3. Presentation layer in Kotlin the core of this role
- Deep Jetpack Compose: state hoisting recomposition and stability derivedStateOf custom layouts Canvasdrawing animation gesture handling.
- Sound UI architecture: unidirectional data flow a single source of truth Flow-driven state no business logic in composables.
- Renderinghigh-frequency streamswithout dropping frames: telemetry arriving many times a second backpressure conflation throttling to what the eye can actually use.
- Composing UI over live video and map surfaces SurfaceView/TextureViewinterop overlays correct layering and lifecycle.
- Custom visual components built from scratch: gauges attitude and heading indicators timelines map overlays. Off-the-shelf Material components will not cover this UI.
- Design judgment.You can take a vague requirement and produce a defensible interface: information hierarchy under time pressure dense but glanceable layouts high contrast for direct sunlight touch targets usable with gloves no reliance on subtle colour cues.
- Designing for degraded states stale telemetry lost link unknown position so the screen never implies certainty the system does not have.
- Accessibility and internationalisation fundamentals; UI testing (Compose UI tests screenshot tests).
4. Kotlin Multiplatform
- Production experience with KMP not just prototypes.
- Confident with expect / actual source set layout and Gradle multiplatform configuration version catalogs convention plugins.
- The KMP ecosystem in practice: Ktor client kotlinx-serialization kotlinx-datetime SQLDelight or Room KMP coroutines across targets.
- Judgment about what belongs in shared code versus platform code and the discipline to hold that line while working in a codebase you share with others.
- Offline-first patterns: local persistence deferred sync conflict handling when connectivity returns.
5. Real-time and hardware-facing UI
We do not expect drone experience. We do expect that you have built an interface driven by something other than a REST response hardware a device SDK a sensor a media pipeline.
- Experience building UI on top of adevice or hardware SDK: Bluetooth or USB peripherals cameras IoT devices medical or industrial equipment vehicles robotics.
- Handling connection lifecycle in the UI: pairing reconnection link loss and communicating all of it honestly to the user.
- Live video in an app: decoding rendering latency and drawing on top of a moving frame.
- Comfort with a UI whose correctness matters where a misleading screen has consequences beyond a bad review.
Nice to have
- DJI SDK experience Mobile SDK v5 especially or Payload / Edge SDK. A significant plus not a requirement.
- Any drone or autopilot exposure: MAVLink PX4 ArduPilot Skydio Parrot; or hands-on flying.
- Compose Multiplatform.
- Geospatial and map UI: coordinate systems tiling offline map data flight-path overlays.
- Video transport: RTMP WebRTC RTSP hardware codecs.
- Design tooling and vocabulary Figma design systems prototyping given we have no designer yet.
- Server-side Kotlin (Ktor or Spring Boot) useful for the shared core.
- Android on vendor-locked or rugged hardware: device owner mode sideloaded distribution OTA updates for fielded units.
- A drone pilot certificate or genuine willingness to obtain one.
To see more roles click here.
Required Experience:
Senior IC
Employment Type : Full Time
Experience: years
Vacancy: 1