Life as an Elixir engineer at SumUp
Desislava Nikolova tells us about her day-to-day life as an Elixir engineer at SumUp.
Desislava Nikolava is an Engineering Manager for Acquiring and Reconciliation at SumUp in Sofia. We caught up with her to discuss the inner-workings of her team, why they use Elixir, and how they achieve their goals — even during the Coronavirus lockdown.
What does a typical day at SumUp look like for you? Or is there no such thing as a typical day?
I don’t have a set routine. I usually have a list of tasks and priorities for the week, but of course, they can always change. The only absolute must is to make a coffee first thing in the office — that morning ritual is one of the things I’m missing most during the lockdown.
What projects are you currently working on?
My team is developing a brand new card payment processing platform. It’s very challenging, but it’s a worthy cause, as most of our products are based on card acceptance. It has to be highly available, fault-tolerant and easily
How and why has Elixir been embraced at SumUp?
Erlang has been used for payment processing since the beginning of SumUp. It’s a really good fit for concurrent distributed applications, so Elixir came as a natural choice for us. We have the expertise, we know it can scale massively and we can reuse some of the Erlang modules we already have.
What are the benefits of using Elixir? Are there any challenges or drawbacks?
Elixir has all the advantages of Erlang — fault-tolerant, scalable, modular. It also brings a lot of benefits on top of the Erlang virtual machine. It offers some syntactic sugar that simplifies typical idioms and speeds up development.
On the negative side, it’s still a relatively young language with limited community and resources, although it has a larger community compared to Erlang. It’s harder to find ready-made solutions for some common problems, so sometimes you have to invent the wheel yourself.
What type of projects does your team develop on Elixir?
We are building a card payment processing platform that comprises a few applications/microservices, each with its own separate responsibilities.
What’s your favourite thing about the way your team works at SumUp?
At SumUp, we believe in self-organised, cross-functional, autonomous teams. Each team has full ownership of the product they are developing. This means we plan, design, implement, test, release, monitor, and take decisions on how to improve the product we are working on. We are free to experiment and choose the best fitting technology for the task at hand. Teams are also free to decide on their working agreements, rituals, and tools.
How would you describe your management style?
I try to be more of a coaching manager. I prefer to guide the team to a common goal and have everyone participate in coming up with solutions, rather than giving tasks for people to complete.
Are there any major differences at SumUp to previous teams you’ve worked in?
I’ve been with SumUp for 7 years now, my past experience seems so long ago, I can’t really compare them.
What do you do to make sure everyone is on the same page with goals and progress?
On a company level, we use quarterly OKRs. In preparation for OKR planning, we synchronise and clear out dependencies we might have with other teams. On a team level, we have weekly plannings and daily updates where we discuss open issues.
What are your most valuable rituals as a team (e.g. daily stand-ups)?
We have plannings and dailies to keep each other on the same page. We also have retrospectives to reflect on what went well and what can be improved. I value the design sessions that we have when we start a bigger feature. It’s where everyone can suggest solutions and challenge ideas. I believe that’s how the best designs and architectures emerge.
Which software(s) do you use to streamline the development/collaboration process?
We use the usual — Jira, GitHub, Jenkins, Slack.
How does your team handle problems that come up after the deployment of a new feature?
We like to be the first ones to know about issues, so we very much rely on monitoring and alerting. We use Prometheus and Grafana to monitor almost everything and get alerts when something is out of the ordinary. For new features, we often use feature toggles to control traffic and switch it off if needed. We can also roll back a release with just a click if it’s urgent.
It’s easy to be consumed by tasks — what do you do to maintain the work-life balance?
I reduced my working hours after I came back from maternity leave, so I can pick my son up from kindergarten and spend time with him before he goes to sleep. I also try to unplug when I’m on holidays. Of course, I feel tempted to check emails and Slack, but I’m confident that my team will do just fine without me.
How have you adjusted to remote work during the current crisis?
I’m not sure I have. I really miss the office and face-to-face communication. We discussed in one of the retros that in the office you can walk to someone’s desk with a problem, start discussing it, then someone will overhear and come up with an idea. And before you know it, you’ll have the whole team in a circle, discussing something and suggesting solutions. That is hard to achieve in the current setting. Turns out, no tool can replace a whiteboard and a pen. But we try to use the common team channel on Slack, instead of direct messaging, so that others can ‘overhear’ and start a discussion.