Back-end Engineer - Haskell / FP
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 1000 businesses in Belgium, France, and other countries.This last year our websites have have been used by over 10 million people, a 400% growth since last year.
We work daily with industry leaders working with local businesses such as Google, BNP Paribas Fortis, Deliveroo, Schwarzkopf, or with Petit Futé.
Technically what it all looks like
CentralApp is architected in a "rough" distributed fashion. The industry calls this "microservices" these days. We have a bunch of services working together to make the backend of the product. We compartmentalize services based on their function and each service is supposed to handle its domain well. This architecture has helped us grow rapidly, but it also presents its own challenges.
Each service uses MySQL as storage, Redis as cache and RabbitMQ as the messaging layer. A service exposes an REST API with JSON data. Service discovery is done via Consul and Linkerd and we have a custom API gateway service ensuring our clients can reach the right services and get the right data.
We're also strongly functional; despite most of our services having been written in Scala, we're now only investing in Haskell since our experience with the language has been very positive: our website LetsEncrypt client is written in Haskell and we're also transitioning our API Gateway service from Scala to Haskell.
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
- Writing Scala/Haskell
- 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
Experience with functional programming in strongly typed languages like Scala or Haskell is a must, or you must be very motivated to learn. Experience with *nix systems is also required.
- Languages: Scala and Haskell, the latter is preferable
- Data: Mysql, Redis
- MQ: RabbitMQ
- Infrastructure (AWS): EC2, ELB, S3
What you should include in your application
- Links to code you've authored
- Who you are
- Your CV
You'll need to be based in Belgium as our office is based in the Centre of Brussels.
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.