Elm engineer

Build web frontends the way they should be built.

£60k – £80k, Cardiff/Remote, Full time, Mid/Senior role

Concentric office

Who we are

We’re a small team of developers, clinicians and a designer building Concentric, our digital consent application which is supporting patients across the UK making big decisions about their treatment.

So far we’ve mostly been a frontend team of one, so there’s plenty of scope to take ownership of parts of the codebase, learn from what’s working, and boldly refactor where hindsight has highlighted approaches that weren’t as good as they seemed.

Read about the team and why we’re working on Concentric

The role

We’re looking for an experienced Elm engineer to join our small team and help us scale our ambitions for the problems we can solve.

Over the next 12 months this could involve getting to grips with the next big iteration of our patient facing application, converting this to a design-system approach, adding new functionality for our clinicians, and building tools to visualise and explore our increasingly rich resource of data. Take a look at what we focused on in 2022.

Our design system separation means we can write functional code safe in the knowledge that we’re generating semantic markup; equally we believe in using the platform, and there is certainly scope for someone with passion for accessibility and semantics to push this forward.

Frontend context

We’re proud that we’ve built an application that is both well engineered and well designed in a context (healthcare IT) where neither is common nor expected. Our clinician users use Concentric on their hospital desktops, on tablets in patient consultations, and on their mobiles while on a ward round, while patients give their consent by scanning a QR code, by signing on a hardware signature-pad (thanks WebHID API!), or remotely after considering their bespoke consent information. We get excellent feedback from both groups of users.

At Concentric we love Elm. It has enabled us to build a robust web application used in the gnarly environment of hospitals across the UK, and by over 100,000 patients across every device imaginable. We’ve written code once (e.g. our event sourcing infrastructure) which has been rock solid for years with barely an edit to the code. We’ve solved crazy problems like ontology graph traversal and filtering in the browser, and it’s just worked. We’ve written loads of view code, with layers upon layers of TEA (The Elm Architecture), which means we can focus on one thing at a time without playing bugfix whack-a-mole.

We recently rebuilt our clinician frontend around a custom design system, replacing literally all the HTML and CSS, a mammoth task that felt manageable only because of the Elm compiler and elm-review keeping everything working every step of the way.

The vast majority of our frontend code is written in Elm, while JavaScript (which represents ~5% of our frontend codebase) mostly fills a progressive enhancement role. This means we can mostly ignore the JavaScript and node ecosystem, looking on with bemusement from a land of safety and stability.

We don’t believe in a strict separation between frontend and backend roles and so would also welcome applications if you’re looking for a more full stack role. See our backend and data engineer job description for more information on what we’re doing there.

The ideal candidate will…

  • have at least 5 years engineering experience.
  • have experience writing Elm or another FP language.
  • write great HTML and CSS.
  • have written code for the backend and frontend.
  • have strong engineering design sensibilities, likely gained by writing code using multiple languages and frameworks.

We would be particularly excited if you…

  • have written Elm commercially.
  • have experience using or maintaining a design system.
  • have wider experience of functional programming.
  • have an interest in data visualization.

Our approach to engineering

Our general engineering ethos is to take our time, build it properly, and to sweat the details.

We believe that it’s critically important to find a simple design; that working code is not enough and that the future complexity cost of compromise after compromise is simply not a good trade-off. Simplicity also means communicating changes clearly and treating the git history as a communication medium. Often simplicity also means minimising dependencies.

We’re not afraid to make unusual technology choices – for example our use of Elm and Crystal – when we believe these are better than other mainstream choices (mainstream /= good). But equally, boring is often best and we try to avoid jumping on each passing fad.

Although Concentric may be ‘enterprise software’, we aim for it to be anything but. We prioritise good design, we don’t charge zillions for custom integration (it’s included in the fixed cost), we do our best to avoid special-snowflake customisations, and we don’t deploy on-prem. We simply write good software, and deploy responsibly after a thorough internal QA roughly every 2 weeks. So far this is working pretty well for us.

If this approach resonates, we’d love to hear from you.

Salary and benefits

  • Salary: £60–80k + EMI share options.
  • Remote, flexible working. Ideally available to join the majority of the team in Cardiff for a team day every couple of weeks, but fully remote applications will be considered.
  • Office space in Cardiff or elsewhere covered and we’ll pay for any equipment you need to do your job.
  • 25 days holiday per year plus bank holidays.

How to apply

To apply please send a CV and and covering letter by email to Martyn (CTO). Equally, if you’d prefer an informal chat first, we’d welcome that, please do just get in touch (mloughran on the elm slack).

In terms of process, we’ll be filtering applications as they come in so we’ll be in touch in a few days to let you know if we think we might be a match or not. The plan is then to do a tech test, followed by a final interview if appropriate.

Polite note to say we won’t be engaging with recruiters or agencies for this role.

Not quite the right role for you but like the sound of our approach and what we’re working on? Explore our other roles.

Key colleagues in this role

Martyn Loughran headshot

Martyn Loughran

Chief Technical Officer

I wrote the above, so you already know a bit about how I think about software development. This is my second major startup foray having also been CTO at Pusher a decade ago; my cello having kept me sane through both adventures!

Explore my Github

Jon Pearse headshot

Jon Pearse

Senior developer

I make beautiful, functional, and—most importantly—usable stuff for the web. When I’m not hacking at projects, I’m a maker, photographer, and occasional musician.

Read about me on my website

Dafydd Loughran headshot

Dafydd Loughran

Chief Executive Officer

I'm involved in product prioritisation, give clinical input into the design process, and take on QA as part of wearing a clinical safety hat. Happiest when building garden paths and managing a little woodland…

Listen to me sharing the story of Concentric