Back-end Engineer - Haskell / FP

CentralApp

Belgium
Nov 16th, 2022

About CentralApp

CentralApp is a successful international Belgian startup. After raising 500k€ from the founders of Keytrade and Skynet, CentralApp has developed a platform that digitally transforms the way restaurants, shops and beauty salons do marketing. This tool is now used by over 1500 businesses in Belgium, France, and other countries.This last year our websites have have been used by over 20 million people, a 200% growth since last year.

We work daily with industry leaders working with local businesses such as TheFork, Google, BNP Paribas Fortis, Deliveroo, Schwarzkopf, or with Petit Futé.


Technically what it all looks like

CentralApp’s backend is a distributed system comprising of multiple Haskell services. Each of these services may expose multiple interfaces: an HTTP API, an Event system and a state storage (Postgres database, managed by RDS). We strictly adhere to ensuring services do not communicate, or are aware, of each other directly (synchronously). Instead, services sync data using our in-house integration event system that guarantees idempotency and can handle failures and subsequent recovery. The collection of HTTP APIs is exposed via our own API gateway, which uses mathematical routing models to ensure correctness & acyclic routing. We talk about our infrastructure and use of Haskell in this presentation.

We are fans of strongly typed backend programming that is largely testable. Haskell works out supremely well in guaranteeing extremely reliable code.

All of this is deployed on AWS ECS using Fargate which saves us the trouble of having to maintain EC2 instances. Each service is tightly tied down using IAM and SecurityGroups.

In the previous version, we used Scala to author these services which we are transitioning away from. There is still some scala in the V2, which we plan to keep for now, but that is a minor part of the system.


What you’ll be working on

We want to take this model forward. Engineers should have ownership of their authored services. As a backend engineer, your end customer is the Front-end team, and your job is to work closely with them to ensure features are implemented, bugs are squashed and performance improved.

A day in the life of a CentralApp engineer will mostly comprise of:

  • Implementing new features in existing services
  • Brainstorming the implementation before programming
  • Designing and documenting the new APIs
  • Writing Haskell
  • Writing Scala, if an old service needs maintenance
  • Implementing new services: when the situation demands it
  • External API integration (our data sync “push” service, for example)
  • Ensuring what you’ve implemented plays nicely with the rest of the system & performs reasonably well
  • Improving tooling and dev-ops. (We don’t have a dev-ops team, and we don’t intend to have one for the foreseeable future given our small size)
  • Work with the customer success team to identify and address issues experienced by our clients
  • Actively take part in improving user experience: be it on the API or the UI

Requirements

Experience with functional programming in strongly typed languages like Scala or Haskell is a must, or you must be very motivated to learn.


Programming languages

  • Languages: Scala (maintained or in deprecation) and Haskell, the latter is preferable
  • Data: Postgres, Redis, and a minor part in MySQL. (all hosted via AWS RDS or Elasticache)
  • MQ: AWS SNS/SQS and a minor part via RabbitMQ
  • Infrastructure (AWS): ECS, RDS, S3, SQS, SNS, CloudFront

What you should include in your application

  • Links to code you’ve authored
  • Who you are
  • Your CV

Location

Preferably partly in the office, which is in the centre of lovely Brussels.


Benefits

If you’re someone who likes functional programming, you get to work in Scala and Haskell in a fast-paced but perfectionist environment. We take pride in the quality of code we’ve shipped over the years and at the same time we want our engineers to constantly grow and acquire knowledge. We believe that benefits the engineers and hence also the company. We genuinely want to have a system that is beneficial to everyone. We strive to strike the right balance between business requirements and programming ethos – setting the right business expectations while maintaining a rising standard of engineering quality.

We’re a small team and we’re growing fast, or at least that’s the plan. We’re based right in the heart of Brussels where almost everything is accessible. We strongly believe in investing in the team and building a culture that is product and engineering focused. We do have great Belgian beers in our Brussels office and we love good coffee.

Additionally, we offer a company laptop and an external display (in the Brussels office).

If that sounds like fun, we’d love to hear back from you.

Meet the team.

If you require alternative methods of application or screening, you must approach CentralApp directly to request this, as we're not responsible for the employer's application process.

RedHired TIP

For your privacy and protection, when applying to a job online, never give your social security number to a prospective employer, provide credit card or bank account information, or perform any sort of monetary transaction.

By applying to a job using RedHired you are agreeing to comply with and be subject to the RedHired Terms and Conditions for use of our website. To use our website, you must agree with the Terms and Conditions and both meet and comply with their provisions.

RedHired

All job types
Contract
Full-time
Part-time
Permanent
Temporary
Other

All locations
Antwerpen
Brabant wallon
Brussels Hoofdstedelijk Gewest
Hainaut
Liège
Limburg
Luxembourg
Namur
Oost-Vlaanderen
Vlaams-Brabant
West-Vlaanderen