Hi, I'm Jamie 👋! I'm a passionate Senior Software Engineer with experience in back-end software development and infrastructure management, interested in solving problems, sharing knowledge and enabling great customer outcomes. I strongly believe in building reusable, Open Source first, software components with a high quality bar, and improving team ways of working so we can deliver better, and more effectively over time.
If you fancy learning a bit more about me, you may be interested in my README, and my /now page.
Want to get in touch? Drop me an email at firstname.lastname@example.org.
A PDF copy of my CV can be generated by trying to print the page (or using Ctrl-P / Cmd-P).
Senior Software Engineer in a team of 10, working on software that connects consumers, riders, restaurants and agents, making sure everyone has a great experience with Deliveroo
- Led work to build a new Go API, with a heavy focus on design-first OpenAPI, with integration into a TypeScript consumer codebase, as well as retrofitting OpenAPI into a Rails codebase to improve speed of integration as well as improving the documentation around the service. The pattern for design-first OpenAPI has been adopted across several other projects in the org. Involved working with the Open Source project to upstream changes to allow it to work with different functional requirements, and through continued development on the library, I am now a maintainer on the project
- Working across a team of 12 engineers, leading on features and supporting engineers on a mix of Go, Ruby on Rails, (Full Stack) Typescript codebases
- Working to raise the bar on quality, consistency and maintainability of shared libraries across the organisation, including working on internal developer tools for better automation and code generation for Go projects, as well as tooling around OpenAPI.
- Single-handedly driving the rollout of Renovate across the ~2100 repositories across the organisation as a better fit for keeping our dependencies up-to-date as an Enterprise
- Champion of supporting Open Source projects we use, through understanding how we use our projects (through the dependency-management-data project mentioned below, initially for Hacktoberfest but also for cross-organisation capabilities, including heavily enabling the Product Security and Release Engineering teams to more effectively target changes.
- Improving the community around Open Source at Deliveroo, through events such as Hacktoberfest and running several team discussions around Open Source sustainability
- Championing Open Source sustainability and community around contributing to Open Source through Hacktoberfest
- Built a set of tooling, in an Open Source first approach, under dependency-management-data for providing a queryable database of how your projects use Open Source and internal dependencies, allowing for querying of software using end-of-life versions or packages that have been deprecated.
- Built an event-driven set of services in AWS Lambda with AWS EventBridge to provide real-time data updates for dependency-management-data
- Took ownership of an unmaintained, but heavily used, developer tool ("Marvin the paranoid staging android") for ensuring deployments to staging environments were performed, building up domain knowledge and implementing features to improve the developer experience, as well as ongoing maintainence and onboarding.
- Led improvements in the team's ways of working to improve team effectiveness, increasing predictability of sprint delivery by a minimum of 25% in the first 6 months of following these practices.
- Building internal tooling for improving efficiency and developer experience with various internal and external tools
- Regularly contributing to the internal libraries and tooling, with a particular focus on the Go ecosystem
- Member of the Go team to help guide and improve usage of Go across Deliveroo
- Editor of and regular contributor to the Deliveroo Engineering blog (writing, editing and finding opportunities for new posts) and the Deliveroo Engineering Twitter account.
- Building and supporting infrastructure in AWS using Terraform
- Making changes to existing (monolithic) Ruby on Rails codebases, with a focus on decomposing as scaling limits are hit, or as considerable performance benefits could be achieved
- Led internal investigations around the
gorilla/muxand the Gorilla toolkit, and its impact on Deliveroo's usage of the library, aided by the dependency-management-data project, and encouraging important conversations about the sustainability of our Open Source dependencies
- Rebuilt internal (RESTful) API documentation site with a tactical solution using Hugo and Stoplight Elements to replace the existing service, as well as writing a design document to plan for the target state of API documentation at Deliveroo.
Tech lead (individual contributor) of a team of 2 formed in October 2021, leading the team technically as part of our journey to build capabilities for improving cross-government API discovery, as well as producing better guidance and standards for API delivery, while being inside a policy-driven organisation.
- Building a Federated API Discovery model to enable easier, programmatic sharing of API metadata between teams within agencies and between different agencies
- Leading work to automate manual API assessments and API guidance, with automated tooling including novel Open Source tooling
- Building up a community around improving Public Sector APIs, involving sharing recommended reading, discussing best practices, supporting workshops and talks, and working with Public and Private Sector SMEs
- Writing and improving API usage guidance for use across the Public Sector
Tech lead (individual contributor) of a team of 10 formed in September 2020, leading the team technically as part of our journey to move the on-premises platform for acquiring new credit card customers to the Cloud, using a mix of AWS Lambda and Spring Boot.
- Improved supportability of production services responsible for Capital One customer acquisition by improving information provided in the service's logging and monitoring, prioritising technical debt , which has led to improving experience of third party API consumers and reducing open incidents
- Additionally, led work to improve the value provided as part of the partner onboarding process and test environment, improving the documentation for onboarding, and leading work to build in a set of Cucumber tests to provide a human-readable description for the test cases available in the test environment, and championed moving the test environment to its own set of infrastructure, enabling the ability to release requested partner test environment changes within 48 hours of a request (> 5x increase).
- Leading work to invest in cross-team support rota and performing proactive knowledge-sharing sessions, called learning reviews, and promoting a blameless culture when we think about incidents
- Built a number of Java APIs in AWS Lambda using an in-house microwebframework, which led to learning several good lessons about this architecture
- Replaced complexity in setup for services and Cucumber tests by introducing Dagger, simplifying configuration and improving developer experience and providing faster feedback with our configuration
- Noticing a set of shared code across multiple services in the acquisition space for validating the same type of data, with a slightly different shape, I championed the need to have this as a shared library, and worked with stakeholders to roll it out to improve re-use across services and reduce overhead of re-writing very similar code across the services
- Rolling out patterns for API versioning in custom HTTP layer for AWS Lambda, and improving the maintainability of our Acceptance Tests
- Discovered a means to run Wiremock inside serverless environments like AWS Lambda, and then worked with upstream to contribute this to the core library
- I have been a key driver in cross-team standardisation of build/test/deploy pipelines for Java services across multiple teams, and single-handedly rebuilding the Chef configuration management pipelines for the UK
- Key contributor to internal Java libraries, working to keep libraries consistent for their build/test/deploy lifecycle, introducing Renovate and SonarQube to keep projects more maintainable, and working on improvements to existing libraries as well as finding opportunities for new libraries.
One of the more senior engineers working on Open Banking compliance.
Led and worked on, as well as coached junior engineers on:
- A number of epics to meet Open Banking API compliance, writing new functionality for APIs to support new OAuth2 authentication types and supporting multiple types of certificates for Mutual TLS
- Key driver in cross-team standardisation of build/test/deploy pipelines for Java services across multiple teams, building upon Enterprise-driven technology requirements
- Worked on proving a high-priority Cyber requirement for Java services to implement a draft RFC, HTTP Signatures to ensure message integrity on integration between services and the API gateway
Lead Quality Engineer on Consumer Identity, owning test strategy as well as stepping into ownership of Open Banking compliance.
- Introduced patterns for Acceptance Tests to improve maintainability, as well as moving common functionality into an innersourced library which is being used across many teams
- One of the leads on leading portions of implementation and End-to-End testing of Capital One's Open Banking (PSD2) platform, including strategy, ensuring conformance to the Open Banking, Financial API (FAPI) Read/Write, and a number of OAuth2 and OpenID Connect specifications
- Experience defining test strategies for complex systems of services, defining quality gates and conformance
- Coached junior Quality Engineers on better automation testing, problem decomposition and shifting of testing left
Joined Capital One as a Graduate, working on building the Consumer Identity service as part of Capital One's move of its customer web servicing platform to the cloud
- Working with Commercial Off The Shelf identity solution, and configuring and testing the fulfilment of business requirements
- Championed the use of Chef as our configuration management tool, investing in personal learning about how to use ChefSpec for unit testing, and becoming the Subject Matter Expert within Capital One, and running lunchtime workshops
Independently decided to take a placement year in order to gain real world experience ahead of graduating, working as part of the Developer Relations Division on the UltraMobile Software Enabling (UMSE) team to help enable Windows and Android applications for Intel Architecture on smartphones, tablets and 2-in-1s.
- One of the leads for a large UK tablet project, working on remediating 3rd Party App issues, and becoming the expert for all internal technical questions
- Developed a system built on Docker that allowed isolation of different build environments, which was then adopted by the company behind the tablet project as the basis for their build infrastructure
- Assisted the Network Manager with essential maintenance over the summer holidays, and secured an additional week in December
- Building (internal) tools for automation
- Shell scripting
- CI/CD / DevOps Automation
- Technical writing
- Software testing
- Coaching + mentoring
- Production / incident support
- Building reusable software
- Code review
- GitHub Actions
- GitLab CI
- Working with Technical Specifications (such as RFCs)
Some Experience (in the last 2 years)
- Apache Kafka
- Spring Boot
- AWS CloudFront
- Jenkins Job DSL
Interests + projects
- Where I have the time, I actively pursue bettering my skills in and out of work with side projects, and reading about how other engineers approach similar problems with different technologies, to give me a more balanced and well-rounded viewpoint
- Building side projects to solve my needs
- Attending tech meetups, conferences
- Being an active part of the local tech community
- I really enjoy sharing knowledge, and improving my communication skills, and as well as speaking at national conferences and meetups about various topics, I have a blog, www.jvt.me, which I use to blog as a form of documentation for myself, but due to the breadth of topics, my site receives roughly 30000 views a month
- Knowledge sharing - blogging, public speaking
- I am part of the IndieWeb movement, which means I pursue owning my data, and means I have a number of side projects on the go at any time around this
- The IndieWeb movement
- I maintain a number of Open Source projects including some well-used projects, as well as maintaining a number of sample projects to support my blog's content, and I actively contribute back to Open Source I use
- Maintaining and contributing to Open Source
- I'm a strong believer in continuously improving the way a team delivers, focussing on signals to shape better working and improving effectiveness and efficiency.
- Free and Open Source
- Open Standards
- Hackathons / competitive programming
- Building inclusive spaces
- Remote/flexible working