Curriculum Vitae
I am Jonathan Rothwell BSc., a software engineer, technical lead, writer, and conference speaker. I am based in London in the United Kingdom.
Please use masculine pronouns (in English: he, him, his) when referring to me in the third person.
I am a generalist software engineer and technical leader, with almost a decade of experience building & delivering high quality, well-tested, and reliable software in a wide variety of domains, including the public sector, health & SaMD, fintech & banking, and retail.
I have been at Zühlke in London since 2015. My consultancy projects there have included mobile applications in Swift and Kotlin, backend servers in Java and Kotlin, Web apps using Angular, TypeScript, and JavaScript, and developer tooling in Python, Swift, and shell scripts.
I hold a BSc with First Class Honours in Computer Science from Queen Mary, University of London (2011-2015.)
My key interests are in ethical and inclusive software design, fostering good engineering practice, and accessible digital interfaces for the public. I think it is our moral duty as technologists to engage our social conscience when designing and building software, and work towards an inclusive, kinder industry and society.
Selected Projects
Further details on these or other projects are available on request.
NHS COVID-19 app (2020—2022, at Zühlke)
I was an engineer & tech lead on the iOS COVID-19 contact tracing app for England and Wales, to allow people to warn others when they tested positive for COVID using the Google-Apple Exposure Notification framework. The app used UIKit, SwiftUI, and Combine.
- Collaborated with colleagues across the organisation to iterate fast and deliver changes that supported consistent and trustworthy messaging to the public in a fast-moving policy context, from ideation, through user testing, discovery, and refinement, and ultimately to building, testing, and release.
- Ensured compliance with our strict requirements around accessibility, internationalisation, privacy, transparency, and security, particularly advocating amongst colleagues for us to be mindful of digital inclusion and probity requirements.
- I was involved in compiling SOUP lists and FMEA documents to ensure compliance with CE and UKCA medical device classification—the app was a Class I medical device.
- We also built and maintained reporting and testing infrastructure to assist with validation and quality assurance, leveraging XCUITest.
- The NHS COVID-19 app had around 20 million users at its peak (around 17 million of whom had exposure logging turned on) and it is credited in a paper in Nature with preventing an estimated 1 million COVID-19 infections in its first year.
- The app is open-source with code available for the public to browse online.
Mobile app for a major retail bank (at Zühlke)
I was an engineer on a large, fast-paced team in a complex environment, building and launching a brand new mobile banking app for a major UK bank’s customers.
- Launched a core banking app, originally a hybrid Cordova/Angular app in TypeScript, then native clients in Swift, Objective-C and UIKit (iOS) and Java & Kotlin (Android);
- Reviewed and managed the quality of incoming code from international teams with developers of varying levels of seniority, including managing stakeholders and ensuring our testing and quality standards were met before features were integrated into the codebase;
- Implemented and thoroughly tested a novel migration method for 2FA keys from the old to the new app that did not involve any keys being sent off the device; maintained a mobile framework to support migration; made architectural suggestions for the backend responsible for managing the rate of migration; supporting users & fault-finding during a staff beta; rolling out the migration solution to multiple international markets and collaborating with stakeholders there;
- Worked on a foundation team to build a UI component library to allow teams to adopt the bank’s look-and-feel at scale; and tooling to speed up integration of translated UI text;
- PSD2/Open Banking compliance implementations;
- Formalised accessibility testing and improvements; UI testing and snapshot testing;
- Production support documentation and runbooks, and technical documentation.
VersionedCodable
(2023—date, side project)
Created an open-source library that provides a thin wrapper around the Swift programming language’s Codable
type to allow versioning of document types, and incremental migrations.
- Leveraged dependent type features that are part of the Swift language to improve type safety and developer ergonomics, and reduce the risk of programmer error;
- Wrote comprehensive documentation using Swift-DocC (published to the Web using GitHub Actions) and built experimental support for Swift Macros.
- *You can browse the Swift package on GitHub and browse the documentation here.
Unspool (2022—date, side project, work in progress)
An (in-progress) app for macOS to help people add metadata to scanned film photographs in bulk. Makes use of SwiftUI, CoreGraphics’s image metadata APIs, and some Swift concurrency. You can visit its Web site here or read the developer blog.
Skills
I’ve been programming on and off since age five. In addition to recent work on iOS mobile apps in Swift, principally using SwiftUI and UIKit, and some limited experience with Android development, I have a good working knowledge of Kotlin, server-side Java, client-side JavaScript and the HTML5/CSS3 stack, and some rudimentary knowledge of Go, Ruby, Python, and shell scripting.
I advocate for Test Driven Development, and believe particularly strongly in the value of unit testing complex logic, and running light but thorough integration tests at regular intervals. I am also interested in exploratory testing and user testing to detect defects with accessibility, and general problems with usability. I have contributed to developer tooling and have experience with configuring continuous integration infrastructure in various environments.
As a consultant I have worked with and coached teams delivering software using scrum and Kanban models, and have regularly run well-received retrospectives. In my first software job, one of my projects was a prototype Kanban board for the web.
I am an experienced writer and storyteller. I have written and presented several well-received conference talks. I have taken the lead in writing developer documentation including inline documentation and internal articles and tutorials. I write a personal blog, and have also contributed articles to the Zühlke blog and a book anthology compiled by Zühlke colleagues.
I can speak and read French to GCSE level, can speak some basic German, can understand some limited Turkish, and can read a little Dutch and Danish.
Conference talks
I have presented several well-received talks at technology conferences and meetups throughout Europe. Please see the Conference Talks page for more details.
- Optional? Considered Harmful? (lightning talk for iOSDevUK 11, 2023)
Optional
s aren’t bad by themselves, but are easily misunderstood and misapplied. You must understand them to use them properly, lest you end up with a crash caused by a force-unwrap operator where it shouldn’t be. Let’s look under the hood and see how Swift’sOptional
works, and then see some simple hygiene tips to make your code safer and easier to understand. Slides available here.- We live in a society (2021 et seq.)
- As practitioners of software, the overwhelming majority of us build software that becomes part of the fabric of our society—be that a simple CRUD hotel booking application, or some cutting-edge machine learning recommendations algorithm. All of these things have effects and consequences on our communities.
- So You Can Sleep At Night… ethics in software engineering (2017-2019)
- In a post-truth world where we entrust our identities to faceless advertising companies, how can we be ethical software developers? Co-written and presented with Steve Freeman.
- Sausages, Antennagate and Brexit - an introduction to building accessible apps (2017-2019)
- An unconventional look at how we build apps to be accessible, using the social model of disability.
Articles
- If you like it then you shouldn’t put some code in it. Part of Machines, Code, People, published 2019
- For the Zühlke blog (no longer available):
- You probably don’t want a hybrid app, January 2018
- Accessibility: the developer’s overlooked responsibility, November 2016
Career History
- Software Engineer, Zühlke (July 2015—date)
- Designing and building well-engineered software solutions for demanding clients, and coaching them to improve their processes and development practices.
- Teaching Assistant, Queen Mary, University of London (September 2014—March 2015)
- Part time demonstration/lab work for three undergraduate modules. This involved supervising labs, marking work, and mentoring students.
- Associate Developer, ServiceNow (UK) (July 2013—June 2014)
- Application development for internal systems and features shipped to customers. Industrial placement as part of my degree.
Education
Queen Mary, University of London (2011—2015): First Class Honours, BSc Computer Science (with Industrial Experience).