Mid / Senior Level Software Developer - iOS

  • Mobile, Data Engineer, UX Designer, UI/Visual Designer
  • Permanent
  • London, UK

We are notonthehighstreet.

We’re home to 5,000+ phenomenal small creative businesses that we are proud to call our Partners. But, now more than ever, this community needs our support. So we’re doing all we can to shine a light on these dynamic entrepreneurs, waving the flag for small businesses and generally championing their socks off.

On top of our brilliant Partners, products and customers (not to mention our incredible team who have been busy beavering away from home since 2020), the last couple years have seen great progress with our tech platform and customer experience. We are now looking to build on this momentum to drive our business to the next level. And that’s where you come in.

Not On The High Street (NOTHS) is hiring an iOS Engineer to help us to implement new features and maintain our native apps.

About the job...

You’ll work on our five star rated native iOS app to build new features that deliver real benefits for the user and business. You’ll also contribute towards identifying how we can improve our codebase and software development practices and processes to ensure we’re always improving and setting ourselves up for ongoing future success.

We’re a small close knit team which thrives on collaboration, you’ll be trusted and expected to own the work that you do. We don’t cut corners when it comes to quality but we also don’t want over-engineered solutions. Our main focus is on being proactive rather than reactive. We design our software to be reliable and robust to ensure we are delivering value.

To ensure our quality standards remain high, we leverage various levels of the testing pyramid. Testing is as important as writing code to us. We build confidence in our code and its functionality by using test-driven development, test-last development as well as automated testing but we’re pragmatic about our approach and strive to ensure the approach we take is appropriate for the task and will deliver value.

On a typical day, you will mostly be working on new features (pairing or individually), reviewing fellow engineers’ pull requests and contributing knowledge and expertise to the design of our solutions. Each week, you will be attending meetings that cover planning, team processes, coding practices, and focusing on your career progression either in 1:1s or in dedicated ½ day training time.

Our team is currently made up of 2 iOS engineers and 1 Android engineer, and we plan to expand this to meet our ambitious goals. Supporting these engineers we also have a Tech Lead and a Product Manager who will work closely with the team to make sure everyone is happy and has everything they need to be able to deliver.

We work in an agile, scrum-like environment. We only introduce processes where necessary and are constantly looking to improve. We try to deliver iteratively to gain feedback as soon as possible.

The wider NOTHS tech team is roughly 50 strong with the intention to grow to support our growth ambitions.

About the stack

Our stack is always evolving to keep up with best practices but here’s how it looks at the moment:

- Source control: Git/Github

- Languages: Swift 5.5, Objective-C

- CI: Xcode Cloud

- API protocols: REST/GraphQL

- UI frameworks: SwiftUI, UIKIt

- Unit Testing: XCTest

- UI Testing: XCUITest

- FRP frameworks: Combine, RxSwift

- Authentication: AWS Cognito

- Marketing frameworks: AppsFlyer, Ometria

- Analytics frameworks: Google Firebase

- Dependency management: Swift Package Manager

- Architectures: MVVM, MVC

About the domain

Our app was an early App Store success story with version 1.0 launched in 2012, over the last 10 years we’ve worked hard to modernise our application while continuing to deliver new features. At the time of writing 88% of our code base is Swift and we leverage the latest Swift version 5.5. The majority of our user based tends to have newer iPhone models so we’re able to in general support the latest and previous versions of iOS (Currently iOS 14, 15) this means we’re we can fully leverage technologies like SwiftUI, CollectionViewDiffiableDataSource, CompositionalFlowLayout, Combine and in the future Swift Concurrency.

We’re also big fans of the work that Brandon Williams and Stephen Celis are doing with their Point-free functional programming series (we have a team subscription to https://www.pointfree.co/)) and use their dependency approach of using concrete types which are then instantiated with different static configurations, this allows us to avoid some of the pitfalls of using protocols as well as improve our code at the test site. See: https://www.pointfree.co/episodes/ep110-designing-dependencies-the-problem

We also use a modular application architecture, that is instead of building a single monolithic application and therefore a single Swift module we split our features into separate standalone Feature modules, service modules and foundation modules.

This is an ongoing transition, while we’re building new features this way we’ve also transitioning legacy features and packaging them into Feature modules.

We leverage local Swift Packages to enable this and all our packages are maintained within a single monorepo along with our app project files; this means that you need only open a single pull request to make changes across multiple modules.

The benefits of this application architecture are significant, reducing in compile times as you build entire isolated standalone features as micro applications that are tested independently of the main application. It also has the benefit of scalability as team members can work on different features at the same time without worry about dreaded xcodeproj merge conflicts. It also forces you to consider where the boundary lies between each feature and forces you to think about API design and what should be public and what shouldn’t.

While most of our app logic is still contained within the main app target, we’re rapidly working to realise our desired architecture and already have 29 packages including 3 feature packages.

While we’re not there yet, our end goal is for the main application target to be nothing more than a composition layer pulling all the different modules together to form the app experience our customers expect. We will continue working towards this as part of everything we do.

What would make a great candidate:

  • Proven industry experience with Swift (Objective-C not required)
  • Experience working in a product centric environment ideally e-commerce
  • Solid proven industry experience with test-driven and test-last development a must
  • A passion for quality through testing
  • Able to own and complete medium-sized tasks with no supervision
  • Open to pair-programming with other iOS engineers to share knowledge and build better software, two heads are better than one!
  • An eagerness to adapt and learn
  • A desire to improve not only the software but the team and even the company
  • A pragmatic approach
  • Not afraid to ask for support when you need it, we’re here to support each other
  • Considerate of those around you
  • Work to make things better than when you found them
  • Any other experience with our current technology stack

Our perks

It’s important to us that our people are well looked after, which is why we offer everyone BUPA healthcare, life insurance and a pension plan. Because having a break is important for your physical and mental wellbeing, our holiday allowance is 25 days (plus bank holidays) AND your entitlement increases an extra day for every 2 years you spend with us.

The team spirit at NOTHS House is legendary, and while we all miss the in-office massages, hair cuts and the abundance of free fruit, we’ve taken to our virtual world with gusto and bring the team together regularly for online socials!

Hybrid workplace

We endeavour to support our people to make sure work... well, works for them, and we’ve introduced a new hybrid working month for our Engineering team. So the NOTHS Engineering team get to work flexibly for the majority of the month, and visit beautiful Richmond once a month to ensure we all still get together as one #teamNOTHS. Plus, for 2022 we’ve begun trialling fully remote months in January (to avoid the snow) and August (to enjoy the sun). #teamNOTHS

Diversity and Inclusion

Everyone’s welcome at notonthehighstreet – whoever they are, wherever their background.

As part of your application you’ll be asked to complete a demographic survey to help us learn more about who wants to work with us. We really care about diversity and inclusion, and while filling this survey out is completely optional, it’s really appreciated and will only be used to help us figure out how to make our team(s) even more inclusive and attract more brilliant people to join us!

Apply to join #teamNOTHS

We’d love to hear more about you, your experience and why you’d like to join our team.