Senior Software Developer Kotlin
Job Summary
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 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.
- 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 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).
- 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 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.
- 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
About Company
Unleash limitless possibilities with Amdaris, the premier provider of Extended Delivery Teams! Software Engineering, Product Design, Data Science & Engineering and beyond.