Яндекс.Метрика
Back to careers
Full-timeMobile developmentRemote

Senior iOS developer

We're looking for a Senior iOS developer to join the team building the Pachca mobile app.

About the product

Pachca is a team chat app with hundreds of thousands of users and major customers. It's the company's core product, and we use it every day ourselves.

We're not part of a big ecosystem, so we can make decisions quickly and focus on the product instead of long approval chains.

Our team is distributed and has worked remotely for years, and our processes and communication are built around that.

What you'll do

  • Own feature development end to end, from shaping the solution to release
  • Design solutions and break down tasks
  • Account for every feature state and edge case, not just the happy path
  • Talk through solutions, ask questions and join technical discussions
  • Work with the existing codebase and improve it
  • Write tests and keep code quality high

What you'll need

Must have:

  • 5+ years building and maintaining production iOS apps in Swift
  • 1+ year of commercial experience with SwiftUI
  • A solid understanding of iOS app architecture
  • An understanding of SOLID and Clean Architecture and the ability to apply them in practice
  • Experience with asynchronous code and networking
  • The ability to read and improve existing code
  • Experience with code review and working on a team

Nice to have:

  • Experience with modular apps
  • Reactive approaches

What matters most to us

We're looking for someone who:

  • Cares about the product and the outcome
  • Can work independently and see tasks through to the end
  • Isn't afraid to ask questions and clarify requirements
  • Pays attention to UI details, logic and UX states
  • Thinks about code maintainability and architecture
  • Communicates well: if something's missing from a task, they ask, clarify and talk it through

If all you want is to close tickets, we're probably not the right fit.

How we work

Developers help shape solutions, suggest changes and influence the final implementation. We discuss solutions rather than just executing tasks.

We don't chase pixel-perfect mockups at any cost, but we care about polished UI: consistency, states (loading/empty/error), spacing and typography, and attention to detail. If a solution turns out overly complex or fragile, we talk it through and work with design and product to find a better option.

We use SOLID and architectural practices where they actually help. We're flexible and don't add process for the sake of process.

We're fine with tasks sometimes missing information or decisions. When that happens, we expect developers to ask questions, suggest options and talk it through rather than getting stuck in silence. Communication and common sense matter a lot to us.

We regularly improve the developer experience, automate routine work and try to make development simpler wherever we can.

The team is small, so decisions happen fast, discussions are direct and developers have real influence over the product and technical decisions. Code review and architecture discussions are a normal part of the job, not a formality.

Our stack

We build a modular iOS app in Swift with a layered architecture and lots of internal modules. The app is fairly complex, with real-time features, calls, a modular architecture and a large codebase, so engineering thinking and careful implementation matter to us.

The project has some legacy parts that we're gradually rewriting and improving.

We use:

  • UIKit (legacy UI) and SwiftUI (new modules)
  • Swift Concurrency
  • PromiseKit (legacy)
  • Combine and RxSwift (legacy)
  • CoreData
  • Moya, WebSocket
  • Swinject
  • Texture/AsyncDisplayKit (legacy)
  • Swift Package Manager and CocoaPods
  • XCTest (unit and UI tests)
  • Gitlab CI and Fastlane
  • SwiftLint
  • XcodeGen

The product is evolving and growing fast: new features ship regularly and changes reach production quickly, so we need the architecture to stay flexible, extensible and maintainable.

Work setup

Fully remote. We're a distributed team, and most communication happens in chat, with calls when needed.

Interview process

  1. Intro call to get to know you and your experience
  2. Technical interview
  3. System design interview
  4. Interview with the founders

How to apply

If this way of working sounds right to you, send us:

  • A short description of your projects, your role in them and your achievements
  • A few words about tasks that stuck with you and why. Tell us in technical terms, the way you would at an iOS team sync
  • A link to your Git profile (if you have one)

Interested in this role?

Fill out the form on our careers page or reach out to us directly.