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.
We are building the software that drone pilots actually look at. The application runs on the aircraft's 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.
- 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.
- 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.
- Deep Jetpack Compose: state hoisting, recomposition and stability, ,derivedStateOf, custom layouts, Canvas drawing, animation, gesture handling.
- Sound UI architecture: unidirectional data flow, a single source of truth, Flow-driven state, no business logic in composables.
- Rendering high-frequency streams without 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/TextureView interop, 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).
- 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.
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 a device 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.
- 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.
Skills Required
- 5+ years building and shipping production software
- Expert-level Kotlin (coroutines, structured concurrency, Flow, generics)
- Sound architecture instincts: modularization and clear layer boundaries
- Comfortable with testing and CI/CD as part of normal work
- Able to work autonomously in a fully remote, distributed team and communicate clearly in writing
- Professional working proficiency in English
- 4+ years Android development with apps shipped and maintained in production
- Solid grasp of Android application lifecycle, foreground/bound services, process death, long-running sessions
- Performance engineering habits: profiling, memory, frame timing, battery and thermal behavior on constrained devices
- Comfortable targeting older API levels and non-standard hardware (no Play Services)
- Deep Jetpack Compose expertise: state hoisting, recomposition/stability, derivedStateOf, custom layouts, Canvas, animation, gesture handling
- Sound UI architecture: unidirectional data flow, single source of truth, Flow-driven state, no business logic in composables
- Ability to render high-frequency telemetry/video streams without dropping frames (backpressure, conflation, throttling)
- Compose UI over live video and map surfaces with SurfaceView/TextureView interop and correct layering/lifecycle
- Build custom visual components (gauges, attitude indicators, timelines, map overlays) from scratch
- Design judgment to convert vague requirements into usable, high-contrast, one-handed field UIs
- Designing for degraded states: stale telemetry, lost link, unknown position
- Accessibility and internationalisation fundamentals; Compose UI tests and screenshot testing
- Production experience with Kotlin Multiplatform (expect/actual, source set layout, Gradle multiplatform configuration)
- Familiarity with KMP ecosystem: Ktor client, kotlinx-serialization, kotlinx-datetime, SQLDelight or Room (KMP), coroutines across targets
- Offline-first patterns: local persistence, deferred sync, conflict handling
- Experience building UI on top of a device or hardware SDK (Bluetooth/USB peripherals, cameras, IoT, vehicles, robotics)
- Handling connection lifecycle in UI: pairing, reconnection, link loss and honest user communication
- Live video experience: decoding, rendering, latency management, drawing on moving frames
- Comfort with a UI whose correctness has significant consequences
What We Do
Amdaris, an Insight Company delivers innovative Software Development, Product Design, Digital Transformation, Application Support and Consultancy Services from our UK headquarters and Eastern Europe delivery centres in Moldova, Romania, Ukraine and Bulgaria. We’re built for quality and scale, with hundreds of talented colleagues delivering outstanding, customised and secure software development services and seamless 24/7 support to our international customers. We’re proud to work with a wide variety of businesses across a diverse range of sectors, delivering a combination of exciting innovation and business-critical modernisation projects



.jpg)





