James Sherlock

At 25 years old, I have nearly a decade of professional software development experience. My time has been spent predominently using Swift in an iOS environment, but I also have backend experience utilising PHP, TypeScript and more Swift.

As a Principal Engineer, I'm currently supporting the rebuild of Sky Sports, a global app used by over 10 million users monthly, with a focus on scalability, observability, and testability, while simultaneously reducing client-side complexity with the implementation of a new purpose-built backend.


Experience

Working at Sky for nearly 8 years, I have quickly progressed through the ranks rising from an apprentice, taking on many new responsibilities, and now remain one of the youngest prinicipal engineers ever at Sky.

Principal Mobile Engineer

Sky UK

Being released incrementally across all worldwide territories, Sky Sports is undergoing a huge technical rewrite using modern technologies and solutions. Tasked with reducing release times from 6 weeks to a matter of days, while simultaneously increasing the amount of functionality, this has been an exciting challenge for the team and I.

  • Supporting colleagues through line management, and one-on-one technical and career mentoring
  • Defining, communicating, and driving new strategies throughout the wider department
  • Exploring cross-platform engineering utilising Kotlin Multiplatform Mobile (KMM) and a 'Backend for Frontend' API written in TypeScript
  • Empowering the team to embrace change, including the successful introduction of SwiftUI and Jetpack Compose into our technology stack
  • Introduction of bleeding-edge OpenTelemetry solutions into all of our mobile apps for enhanced app performance monitoring
July 2021 - Current

Project Lead Mobile Developer

Sky UK

For 18 months, I was partially responsible for the success of an internal project switching between two different video playback providers in three of our biggest products at Sky.

This was a hugely technical project requiring us to make changes to over 100 services, involving several hundred people across teams, departments, countries and companies.

  • Clear and regular communication with internal and external stakeholders
  • Defined release strategy taking into account deadlines, platform limitations, and global events
  • Chaired meetings and team social events to ensure everybody is working well together and understands our progress in respect of the project's goals
  • Worked with third parties and strategic partners to guarantee a seamless migration by maintaining documentation and good levels of communication
  • Balanced commerical and technical objectives to ensure we could release iteratively while maintaining the quality of the product and underlying codebase
  • Defined the solution for a technical requirement which required collaboration with multiple teams, focussing on simplifying the existing estate and building in flexibility for future enhancements
  • Established and maintained contracts with internal teams to support asynchronous development and testing
  • Translated technical problems to non-technical teams in order to set out expectations and timeframes
January 2020 - July 2021

iOS Developer

Sky UK
  • Delivered a stability and performance release which substantially reduced the crash rate and improved the load time of key journeys
  • Driven application observability using MetricKit and Firebase events in order to enable data-driven decision making and improving the app experience
  • Owning the technical roadmap and architecture strategy for the Sky News iOS codebase
  • Implemented an automation strategy for Sky News iOS using Snapshot Testing to reduce release times and prevent against regressions to app quality
  • Designed the solution for and implemented a new "JavaScript bridge" introducing native iOS experiences from within a HTML web page
  • Collaborated with third party advertising providers to ensure we could deliver our users the best possible experience while adhering to strict business requirements and contracts
  • Worked with other mobile teams to develop and implement a modern componentised architecture in a new application supporting future progression into a cross-platform product
August 2015 - January 2020

Junior Consulting Developer

Znaptag

After having my open-source contributions acknowledged by a member of their team, I was offered a summer placement at Znaptag though this was later extended to over a year.

My role required me to translate Adobe Flash animations into HTML5 advertisements using a proprietary JavaScript library.

June 2014 - August 2015

Skills

Programming Languages
iOS
  • Dependency Management (CocoaPods and Swift Package Manager)
  • Building Modular and Modern Architectures
  • AutoLayout (Storyboard/XIBs or Handwritten Constraints)
  • Core Data, AVKit, UIKit, SwiftUI and various other native and community frameworks
  • Automation Testing (Unit, UI, Contract, Snapshot and Visual Regression Testing)
  • Accessibility Advocate
  • GraphQL, REST, and gRPC APIs using JSON and Protobuf
Other
  • Agile Development & Scrum
  • Git (including GitLab and GitHub)
  • Continuous Integration (GitLab CI, GitHub Actions, Circle CI)
  • Rapid Prototyping
  • Requirements Analysis and Project/Release Planning

Portfolio Highlights

Sidetrack

Indie Developer

Frustrated by other options within the market, I set out to build a new mobile-first product offering real-time insights into the UK's rail network. Written almost entirely in Swift, the backend for the project processes millions of events every day to keep our users informed.

The project is ongoing, and will have its initial release later in 2023.

March 2022 - Ongoing

Mobile Observability

Sky UK

Having used Firebase for years, the company has been frustrated by the lack of integrations, the speed of performance data, and concerns of the privacy implications. I worked closely with other engineers across the department in order to strategise an internal system using OpenTelemetry and our own in house platform.

We extended the already open source projects and introduced our own automatic native mobile instrumentation allowing for it to be quickly installed into all of our apps, sending vital information and giving us unprecedented levels of understanding of our apps.

January 2021 - Ongoing

Snapshot Testing

Sky UK

Faced with long release times due to extensive manual testing, I set out to help define the team's automation strategy at Sky. I worked closely with our testers and the wider community in order to experiment with Visual Regression Testing (a form of Snapshot Testing) using the aptly named SnapshotTesting library.

Over a couple months I laid down the foundations, and to date we have hundreds of tests generating thousands of images across a wide range of devices. This project, on behalf of Sky, later went on to become a finalist at the European Software Testing Awards in 2019.

Working with one of the core maintainers, I was also able to combine my passion for accessibility with snapshot testing and contributed to AccessibilitySnapshot which enables visual regression testing for VoiceOver.

March 2019 - Ongoing

Unfurler

Web Development

Unfurler is a product I created in which parses the contents of HTML emails to extract digital receipts. It then uses Monzo’s REST API in order to add the receipt to the end user’s banking app.

This allows users to see a detailed breakdown of transactions from many merchants including Domino’s, Amazon and Uber. To this date over 100 users have had over 3,000 receipts extracted.

The system requires that users forward (mostly automatically) emails to a unique user email address which is picked up by Mailgun. This is then sent through an entirely custom PHP server which ultimately posts a JSON payload to Monzo’s API.

This project is great as allows me to deliver value to users, stretch my legs outside of being a mobile developer and has led to some interesting conversations with Monzo themselves and Flux who do something similar with physical receipts.

February 2019

GitHawk

Open Source

Having used GitHub for both personal and work purposes I often accrued a lot of notifications that I wanted to read on the go. Ryan Nystrom, who I had collaborated with previously, was working on a personal project to create a new solution for this, which he decided to open source.

Feeling I could add something I started contributing and provided functionality such as image uploading, additional markdown compatibility and support for FLEX for easier debugging on TestFlight beta builds.

July 2017

Education

Sky UK

Level 4 Diplomas • City and Guilds
ICT Professional Competence • Distinction
ICT Professionals (Systems and Principles) • Distinction
2015 - 2017

Telford College of Arts and Technology

Level 3 Diploma • Pearson • Pass
Software Design and Development • Distinction
Event Driven Programming • Pass
Procedural Programming • Pass
Computer Systems • Pass
Digital Graphics • Pass
Extras
IT Essentials 5.0 • Cisco Networking Academy • Pass (86.1%)
Health and Safety in the Workplace • CIEH • Pass (2011)
2013 - 2015

Interests

When I'm not all in on software, the technology part of my brain doesn't entirely switch off! I enjoy playing with hardware, even 'hacking' a tower fan to add HomeKit support using a Raspberry Pi. I also love the occasional competitive game, whether online with Rocket League or stretching the rules of Jenga and Monopoly.

I love a good mix of music, film and TV especially action and crime shows. I love the water, and a life goal is to become SCUBA certified and dive on every continent!