Summary ¶
Software engineer and technical team lead with over a decade of experience delivering complex, long-lived systems in a regulated medical environment. Currently leading a small team while remaining hands-on in architecture, build and release systems, and critical areas of the codebase. Experienced in modernising large C++ applications, improving developer workflows, and reducing delivery friction through pragmatic tooling and automation.
Employment History ¶
Canon Medical Research Europe ¶
Software Team Lead (September 2019 – Present; acting until April 2021) ¶
Lead a team of 4–7 engineers developing two products in parallel: an established C++ medical imaging application and a new internal project on a different technology stack (TypeScript/Node, Docker, Linux/WSL). Responsible for delivery on both, people development, and stakeholder reporting.
Key achievements
- Kept the team unsiloed across both products: junior and mid-level engineers rotated between codebases on a staggered two-week cycle to preserve continuity, while senior engineers floated across both to troubleshoot and unblock
- Hired and developed two graduate engineers who, when the team later downsized, moved into other internal roles drawing on skills built across both projects; the team also hosted short-term rotations from services-focused teams as an entry point into imaging work
- When the new project wound down, the rotation policy paid off: the core team returned to full-time work on the established product with no re-skilling needed
- Halved CI build times and automated the release process, cutting time from final commit to customer delivery from up to a week to under 24 hours
- Guided the team through the migration from Redmine to Jira/Confluence and the adoption of agile workflows, while maintaining customer satisfaction and support response times
Technical involvement
Hands-on throughout: reviewing and contributing to application code in C++ and TypeScript, modernising legacy C++, defect investigation, and containerised build systems. Early adopter and advocate of vcpkg, standardising dependency management across C++ projects.
Senior Software Engineer (November 2017 – September 2019) ¶
Application Development
- Gathering and clarifying requirements with stakeholders
- Taking ownership of key application features
- Integrating third-party libraries in collaboration with other teams
Mentoring
- Supporting and guiding junior engineers within the team
Handled high-level technical work and cross-team collaboration. Acted as a point of contact for feature ownership and provided mentorship to newer team members.
Key achievements
- Automated the execution and tracking of static analysis across multiple projects
- Supported career progression of junior engineers through mentoring and knowledge sharing
Toshiba Medical Visualization Systems Europe ¶
Software Engineer (October 2014 – November 2017) ¶
Application Development
- Designing and implementing features aligned with customer and regulatory needs
- Writing testable, traceable code
- Prototyping new functionality and exploring proof-of-concept designs
Worked on regulated medical imaging software requiring rigorous quality standards. Transitioned from framework to application development.
Key achievements
- Delivered production-ready features for a globally shipped medical imaging application
- Prototyped multiple feature concepts later adopted into the main product
Graduate Software Engineer (July 2013 – October 2014) ¶
Framework Maintenance & Support
- Investigating and resolving bugs
- Implementing change requests and developing new features
Contributed to framework maintenance and development, supporting internal tools and libraries through code fixes and enhancements.
Key achievements
- Implemented a new serialization API to support a previously unsolvable edge case
Hospitality & Catering (1997 – 2013) ¶
Worked in professional kitchens from dishwasher through to chef at various levels, before moving into software in 2013.
Skills ¶
Technical Leadership & Engineering ¶
-
Systems development: Long-term ownership of large C++ codebases, including legacy modernisation, architectural decision-making, and direct contribution in high-impact areas such as build infrastructure and defect resolution
-
Build, release & tooling: Designing and maintaining build and release systems for multi-project environments; removing developer friction through custom tooling and dashboards
-
Platforms: Primarily Windows-based development, with some experience of the Red Hat family (RHEL, AlmaLinux, CentOS) and Docker
-
Languages & technologies: C++ as primary implementation language; additional experience across TypeScript/JavaScript and scripting for automation and tooling, treating languages as tools rather than specialisations
-
Developer enablement: Creating internal tools, reports, and visualisations (including pragmatic use of AI-assisted tooling where appropriate) to improve visibility, feedback loops, and day-to-day engineering efficiency
Project & Delivery ¶
-
Process & tooling: Administration and integration of Jira and Confluence; automation of reporting and release documentation
-
CI/CD: Jenkins-based pipelines with an emphasis on reliability, performance, and fast feedback
-
Collaboration: Working across teams to integrate third-party components, align technical approaches, and support delivery in regulated environments
Education ¶
University of the West of Scotland (2009 – 2013) ¶
BSc (Hons) Computer Games Technology – First Class Honours