— section —
experience
professional journey
My professional experience in software development, from self-taught beginnings to working across diverse companies and learning new skills with each role.
— ROLE HISTORY —
Senior Software Engineer
PensionBee
Jan 2024 - Present
- AI adoption: Pioneered approaches for strategic AI adoption across PensionBee's engineering org, including acting as sole developer in the company's AI Champions group. Built various proof-of-concept pieces: an AI-powered documentation system to maintain business logic specs with minimal manual effort, an AI skills analyser for gaps, and a test case generator with educational documentation. Co-designed the Claude Code pilot programme for engineering, with the aim of establishing usage baselines and coordinating rollout strategy between the VP of AI & Platforms and the CTO. Co-ran an AI-focused hackday that catalysed cross-team adoption and techniques. Established repository-level agent guidance (AGENTS.md/CLAUDE.md, docs-first conventions) as guardrails adopted across the team's agentic tooling
- Withdrawals Journey Architecture: Led customer withdrawals rewrite (legacy → React/Next.js) across Product, UX, Banking, Compliance
- Platform-layer impact: Diagnosed organisational issues from technical symptoms (8-page report to the VP of Engineering and management shortly after joining); co-created a shared React component library replacing fragmented UK/US libraries
- Architected the Node.js v16→v20 migration strategy for a platform serving 30+ developers; co-created the shared React component library replacing fragmented UK/US libraries; introduced the first E2E tests to the hybrid mobile app via a containerised Docker test flow
- Built an idempotency-aware Cloudflare D1 retry layer for use under concurrent writes - transient-only retries with backoff, fail-fast on constraint errors - resolving a live data-loss issue
- Parallelised a timing-out Gmail cron worker with bounded concurrency; the ~10x speedup was empirically verified before shipping
- Built and validated an email-classification matcher against 614 real subjects rather than assumptions, then generalised it from a single-provider matcher into a rule-dispatch system with shared rule helpers - materially broadening automation coverage, with integration test coverage
- Built multi-env CI/CD for staged migrations and deploys (GitHub Actions, Wrangler) and migration-preflight tooling - a 20-file ISO 8601 normalisation validated against the real engine locally - plus a React 19 observability dashboard over D1
- Root-caused subtle production-adjacent failures beyond their symptoms: a recurring D1 error traced to a single failed tick, a falsely-passing integration step caused by a fabricated-success bug, and a vacuous typecheck gate (inherited empty config) silently passing nothing - each locked in with tests
Software Engineering Manager
PensionBee
Aug 2023 - Jan 2024
- A deliberate five-month exploration of the management track: organised an engineering-function-wide hackathon, led mini-hackdays exploring new business problems, and contributed to engineering management strategy and salary benchmarking
- Chose to return to senior IC work afterwards - management was useful context, but depth is where I compound
Senior Software Engineer
PensionBee
Oct 2022 - Aug 2023
- Led development of key product features including mandatory two-factor authentication and regular drawdown options; strengthened login security against brute-force and DDoS vulnerabilities
- Designed and led React, Redux, and React Native training, and maintained an engineering problem-areas report fed back to leadership
Software Engineer II
Puppet
Apr 2021 - Oct 2022
- Built and maintained React applications with GraphQL APIs for enterprise configuration management tools
- Worked with containerized applications deployed on Kubernetes in GCP environments
- Implemented comprehensive testing strategies using Jest, Enzyme, and Nightwatch.js for reliable deployments
Software Engineer II
BazaarVoice
Mar 2020 - Mar 2021
- Built React applications for customer review and rating platforms using Redux for state management
- Implemented robust testing strategies with Jest, Enzyme, Jasmine, and WebdriverIO for reliable product releases
- Worked with GraphQL APIs and Apollo client to deliver smooth user experiences
Software Engineer
ShopKeep
Jan 2019 - Mar 2020
- Built React applications for point-of-sale systems serving thousands of small businesses
- Developed backend services using Ruby, Sinatra, and Rails for payment processing and inventory management
- Implemented AWS Lambda functions and ElasticSearch integrations for real-time data processing
Junior Software Engineer
ShopKeep
Jun 2017 - Dec 2018
- Started my journey building JavaScript and React applications for retail technology solutions
- Collaborated with backend teams on API integrations and learned the ropes of professional software development
- Participated in agile development processes and got hands-on experience with continuous integration workflows