Monzo Staff Weekly Q&A - James Routley (Backend Engineer)


Note : All Monzo Q&As to date can be found here :grinning:


Hey all! It’s time for another weekly Q&A with an awesome Monzo team member… This week we’ve got James Routley on board, who is a Backend Engineer here!

07

James is currently working on getting Golden Tickets back up and running on the current accounts, so that’s great timing! :grinning: Fun fact about James - he runs a dinner club in his spare time :avocado: :stew:, and his favourite thing about working for Monzo is building a product that’s used and liked by the public :sunglasses:

Get your questions in, and James will be here on Friday to answer them!


Just in case you missed any of the previous Q&A’s:

Week 1 : Chris MacLean, Customer Operations & Vulnerable Customers
Week 2 : James Nicholson, iOS Engineer
Week 3 : Tara Mansfield, People Operations Manager

6 Likes

I’ve heard that coding is like cooking, or perhaps it was visa versa. Would you agree, and if so, how do they compare and contrast?

2 Likes

What are your thoughts on functional programming languages? Are you a fan of Haskell or do you run a mile? :wink:

4 Likes

What’s your advice to a Junior IT admin (think 1st or 2nd line OS support) without a degree aspiring to become a backend engineer?

and if I can be greedy:

If it differs from someone who does have degree what advice would you give them instead?

What systems and service should both Junior techies check out?

1 Like

Is this indicative of how quickly you work? Because that’s a damned good turnaround. This was posted after Tristan announced their return . Dude, you work outside of the standard timeline. No wonder Monzo hired you! :smiley:

2 Likes

What does your average day look like at Monzo?

What service does Monzo use for issue tracking and feature management?

Are there any apps/services that you couldn’t live without?

2 Likes

:wave: James,

Thanks for agreeing to answer some questions, we appreciate you taking the time!

In your opinion, what separates Monzo from the other challenger banks entering the market? why?

Which feature on the roadmap is going to make the biggest difference to a users’ day to day life? why?

Cheers, Connor.

2 Likes

In terms of version control, do you use any kind of strategy like Git Flow or do you just use the standard master branch & merging feature branches in there as necessary?

1 Like

Great questions, all! Thanks!

@jamesroutley will be here today to answer them! :smiley:

2 Likes

Cool question! I think they are similar - they’re both about creating things. I find cooking a fun contrast to coding because it’s physical and there are you can’t always fix things the things you get wrong!

3 Likes

I’m really into functional languages but I don’t have a whole bunch of experience with them. I’ve written a fair bit of Lisp (Scheme + Racket) for fun, and I’ve worked through the first bit of a Haskell book but don’t know what a monad is. I’ve also done some work with Elm, which I wrote about here.

2 Likes

So I have a degree but it’s not in Computer Science so I’ve been teaching it to myself over the last two years. A couple of things you could do (this would be my advice to someone with a degree as well):

  • Try to learn how things work at a deep level - having a deep understanding of how fundamental things work will be useful throughout your career.
  • Try and find someone who can answer questions you may have - it’s really helpful to be able to check things
  • If you have the money and inclination, I really really really recommend the Recurse Center. It’s a 3 month programming retreat in New York. I went last summer and it made me a significantly better programmer. The course itself is free, but living in New York is $$$$.

I also came across this post recently about programming career progression and I think it’s great.

Hope this helps! I’m guessing there are a fair number of programmers on our forum, I’d love to hear what they think as well!

1 Like

Haha, we were working on this before Tristan’s blog post

1 Like

We have a 10 minute standup first thing, where we share what we did on the previous day. Then it’s mostly coding - I tend to have one meeting per day, which could be a weekly planning meeting, a ‘kick off’ where a couple of engineers will discuss how to implement a feature. I’ve also been involved with hiring recently, so I’ll have one or two interviews each week.

My team is relatively large, and some of us work remotely, so we use Jira for issue tracking, but different teams will use different things, like Google docs or a physical whiteboard depending on what works for them.

I guess the ‘app’ I depend on most is vim-go, which is an amazing plug-in for the text editor I use for the language I most often write.

The backend uses the standard master + feature branches. We continuously release code, so we don’t need anything as heavyweight as Git Flow. The mobile teams have a fixed release schedule, so I think they use Git Flow.

2 Likes

We have a really good community of users who make it a pleasure to build new things for, we have a really strong design team, and I think the way we handle customer support is amazing. Hopefully the experience of banking with Monzo is fun and simple!

I think improving budgeting could have the biggest impact. Making budgeting easy and seamless could help our users save money :money_with_wings:. I’m looking forward to the upcoming work we’ll be doing on spending, targets and pots!

2 Likes

Hi James,

You said in another answer that you continuously release code to the backend. How does the team make sure nothing is being broken in the course of developing features?

Thanks

1 Like

At Monzo we have a microservices architecture. This means that most of the time, you’ll be working on code that no one else is working on at the same time. This simplifies deployments - you can be fairly sure that your deployment won’t conflict with something that someone else is doing.

We also have a staging environment, where we deploy to first. This lets us test our code out before shipping it to production.

Finally, we use Docker and Kubernetes for our deployments. For each piece of code we wish to deploy, we build a new Docker container and deploy that. If something happens to go wrong, we roll back the changes by deploying the previous container, which only takes a few seconds to do.

5 Likes

Actually another question if you wouldn’t mind. At some point in the past Monzo revealed they were using Apache Kafka. :wink:

I was wondering whether you use Kafka for synchronous operations (as in operations that require an immediate reply, like MasterCard asking for an authorization) - how do you do it? I’m contemplating using Kafka for my own project (a mobile network) and while I’m already using it for asynchronous operations (SMS delivery, where I can acknowledge immediately to the sending carrier, but then deliver to one of my SIMs on a best-effort basis), but I’m looking to try and use it for synchronous operations like call delivery which requires a reply immediately, within seconds, to the original requestor (as in the SIP endpoint that receives the call from the carrier). How would I build this?

1 Like

I’ve just looked into that, and it seems like something I’d want to do, but at the same time it feels me with immeasurable anxiety…

Did you enjoy it? Was everyone friendly?

Probably a moot point though, I highly doubt I’ll ever be able to afford to live in NYC for 3 months…

Liam

1 Like