Monzo Staff Weekly Q&A - James Nicholson (iOS Engineer)

This is quite a big question so I hope I can do it justice! As you say, we have to balance speed of shipping with quality control (we’re looking after people’s money, after all!)

I’ll talk a bit about the process from the app perspective. Features usually begin life as prototypes, with Product Managers working with the Design team and with @SamanthaD to test out ideas directly with customers in user research sessions.

From there, PMs and Engineers work with Design to figure out how we’ll implement the feature. This often takes the form of RFCs, setting out our thinking as to how a feature will look, and roughly what work needs to happen within the app and what backend services need to be written to support it.

For new features, we generally try to pare the feature down as much as possible for a first release: the only way to truly understand if you’re building the right thing is to ship something as fast as possible and iterate! We have an amazing community who aren’t shy about helping us refine features quickly :wink:

All code written on any platform goes through code review (via pull request) and all iOS PRs go through a large set of automated tests. All new features obviously include new tests. Rather than re-hash what’s been written before, I’ll link to this excellent write-up by @andys.

After code is merged and we’re ready for a release, apps go through a manual testing process. After that, we release to a small group of beta testers. If all of these steps pass muster, we submit it to the App Store for review by Apple.

We aim to ship every two weeks (in future we’re hoping we can make this weekly). Keeping releases regular means any bugs that do slip through are found and fixed quickly :slight_smile:

Hopefully the links above answer your question too!

3 Likes