Senior Functional developer (Backend) – Scala

Role responsibilities

  • Clarify requirements and propose & execute an implementation plan (i.e. decompose “scope” into sub-components and implement them).
  • Review and approve merge requests.
  • Design and implement EDSLs (and refactor existing code to make it more extensible and modular).
  • Participate in architectural and design discussions and propose and comment on implementation plans.
  • Coach and mentor others in areas of your expertise.

A typical week

  • Take steps to understand ill-posed and vague requirements and concretize them.
  • Design interfaces / EDSLs and write code.
    • Some of the relevant libraries: ZIO, Cats, Doobie, Cats Effect, Scalacheck, Akka
  • Review merge requests and provide feedback.
    • As comments during review call
    • As code patches
    • As written comments
  • Approve merge requests.
  • Conduct and participate in paired sessions for programming and review.
  • Estimate work complexity and provide completion estimates. Proactively communicate with stakeholders and manage expectations in case of any unforeseen circumstances.

Candidate requirements

  • Several years of experience writing code for “production”.
  • Experience in multiple programming paradigms. Knowledge and experience (several years) of functional programming is a must.
  • Experience with (one or more of) Haskell, OCaml, Scala, F#, Erlang, Elixir, or Rust is required.
  • Experience with databases (relational or NoSQL), Git, Linux CLI is assumed.
  • Empathy, humility and personal accountability (and one who holds others accountable).
  • An individual who leads by example: by showing more than telling.
  • Experience with Test Driven Development and Property-Based Testing is definitely an asset.


  • Skill at modular and extensible development
  • Skill to infer missing, but relevant, acceptance criteria
  • Skill and experience with build systems and resolving dependency conflicts
  • Skill at avoiding the proverbial rabbit holes
  • Skill at developing something in a never-before-used language or library
  • Root cause analysis skill

Who we are

Vish is changing and innovating the hair color industry. At the local level, Vish helps salons eliminate waste, manage their inventory, increase service revenue, and provide valuable insight into their color business. Our aspirations are to revolutionize supply chain management for the entire hair color industry.

Why choose us

We are a distributed team comfortable with collaborating remotely. We are opinionated on the merits of functional programming, and passionate about building things that help people and the environment. The work we do has helped hair salons reduce environmental waste and made it easier for them to stay afloat during the pandemic.

To apply for this job please visit