👋 I’m Riccardo Coppola. I write code

I am a passionate, detail oriented Team Lead and Full Stack JavaScript developer with over 10 years industry experience, extensive knowledge of DevOps practices and Agile methodologies.

Passionate about testing, workflow automation, code reusability and team dynamics; I focus on writing state of art, highly maintainable web applications using best practices, design patterns and performance testing, following a TDD/BDD approach.

I have hands-on experience in building cross-functional teams on site and in distributed environments. Strong believer in the value of productivity as a result of highly efficient workflows, I can happily act as developer advocate to help remove obstacles and enable developers to increase velocity.

You can usually find me at the React London Meetup or the London Node User Group.

Oh, I also sometimes blog about development, testing, agile methodologies, psychology of teamwork and other stuff.

I ❤️ what I do



Senior Software Engineer

Oct 2020 - present

Key tools used:

Typescript, React, React Native, capacitor.js, style-dictionary, Playwright, Docker, Terraform, Kubernetes, Google Cloud

I joined as senior developer to help on the booking flow application: this is a high traffic, high performance application that is deployed multiple times a day and fully tested (including performance with Lighthouse) on every deployment.

In addition to working on new features and helping more junior developers, I worked as developer advocate to progress key initiatives across teams. These include: a new design system able to pull data directly from Figma, a visual regression test tool based on Backstop.js that is currently part of all our frontend applications. These improvements helped massively with developer confidence and produced more production deployments as a final result.

I am currently working on rebuilding the “Manage my bookings” application from scratch, for web and native apps.

Viable Data

Senior Fullstack Developer

Mar 2020 - Sep 2020

Key tools used:

Node.js, React, Gatsby, SASS, Docker, Cypress, PostgreSQL, GitHub, GitLab, GitLab CI, AWS

At Viable Data I looked after a range of JavaScript applications for the Home Office, helped with technical direction for new features and mentored more junior developers.


Lead Developer

Jan 2019 - Jan 2020

Key tools used:

Typescript, React, Redux, redux-saga, Next.js, Gatsby, JAMstack, SASS, Styled components, Backpack, style-dictionary, Docker, Terraform, Cypress, GitLab, GitLab CI, AWS

I joined to help shape the new micro front end architecture, part of the wider re-platforming of Burberry’s ecom. During my contract I led two of our distributed teams of developers, located in Minsk and Shanghai, while working with stakeholders and designers in-house. Day to day activities with the team included working on stories, mentoring other team members, reviewing merge requests, working with the BA to review stories and prepare sprint goals and working with the designers to make sure all the edge cases were covered.

Particular focus was also put on working with across-teams to agree on high level solutions and create a consistent development workflow. Consistency and simplicity were key, to ensure that the cognitive load was kept to a minimum and the code produced would follow our standards regardless of where it was produced.

As part of my assignment, I also worked closely with the design team to help build the company’s design system: from defining the key strategy and technologies to use to building a set of design tokens to be used across web, email and native apps.


Lead Developer

Nov 2016 - Dec 2018

Key tools used:

Typescript, React, Redux, CSS-in-JS, redux-observable, Cypress, Node.js, Express, Helmet, Docker, GitHub, Teamcity, AWS

As Team Lead I focussed on Trainline’s re-platforming (going from monolithic .NET backend and React FE to .NET microservices and Node/React micro-frontends). As part of the role, I helped creating a new team, made the required hirings and worked more with POs/BAs. I kept my position strongly technical (at least 70% coding).

My impact area widened, focusing on giving the team the stability and continuity needed to deliver high-quality software respecting the company’s deadlines. Given the small size of the squad, this was achieved by wearing different hats at different times, to ensure that all the required functions were present when needed: helping with BA functions, technical recruiting and DevOps work, driving innovation to support the product (“3G days”, “No Chrome days”), mentorship and internal growth and working cross-team to exchange knowledge and drive the development forward.


Senior JavaScript developer

Oct 2015 - Oct 2016

Key tools used:

Typescript, React, Redux, CSS-in-JS, redux-observable, Cypress, Node.js, Express, Helmet, Docker, GitHub, Teamcity, AWS

I joined to help shape a better agile process, help junior developers to step up and ensure a more predictable, high-quality development process.

In pursuing the above, we stabilized the agile process by streamlining the ceremonies, hired more junior members and turned them into mid-level engineer, introduced cross-device integration tests and removed all manual QA-ing, introduced bug hunts/manual discoveries, improved the code reviewing process, allowing the developers more time to review, discuss and deliver better code.

I also worked across our projects with micro/macro refactorings to increase code quality and encourage reusability and helped the HR hiring team to create a better tech hiring process.

Lead Developer

Jan 2015 - Oct 2015

As Team Lead my goal was to give our UI teams a long term vision. Apart from developing (I spent at least 70% of my time developing with the team) I then invested more time on new technologies, best practices and patterns to use across our teams and improved ways of managing our workflows.

Part of the improvements put in place include:

  • strict use of Git merge requests/code reviews (with auto merge request builder)
  • a fully automated cloud CI for all our four environments a “dockerized” version of our apps to make it easy to test and deploy everywhere
  • monthly meeting with back-end devs, tech ops and architect to give all developers a big picture of our projects.
  • hosting a Js meetup ( in our London office

I led UI teams in our London and Madrid offices and was also involved in various social activities to bring developers together: brown bag sessions, meetups, team conference calls.

Senior JavaScript developer

Apr 2014 - Dec 2014

Key tools used:

Marionette, Backbone, underscore, React, jQuery/Zepto, RequireJS, Browserify, Jasmine/Cucumber.js/WebDriverJS, SASS/Compass, Git, Jenkins

I worked on the mobile application, supported junior developers and spread the knowledge across the teams with tech meetings about good practices and new technologies to introduce in our workflow.

We worked in a Kanban environment, following a TDD/BDD approach in teams with PO, BAs, marketing people, QAs, UI designers, back end developers and front end developers. My focus was on the Backbone Mobile SPA application.


Senior JavaScript developer

Sep 2013 - Apr 2014

Key tools used:

HTML5 semantic markup, CSS3 and SASS with Compass, jQuery, Underscore and Backbone, Grunt.js

Responsible for the development and maintenance of our web applications: working closely with our team of business analysts, designers, backend developers and QAs in an Agile team. My job involved writing JavaScript libraries to be used across the apps, turning PSD designs into semantic HTML5 applications; adding complex interactions handled with the best JavaScript tools and frameworks, always creating modular and maintainable code even with tight schedules.

I improved the front end workflow by introducing an automated flow for the development: with Grunt.js, we now automate the whole process. From a morning job that takes care of updating the local repository, builds and the deploys the app; to a watcher that lints, checks the coding style with jscs, tests and concatenates + minify and deploy at every file save. I automated the documentation process creating a live styleguide with KSS.

In our Agile environment we used Jira to handle our sprints’ workflow and Jenkins to build, deploy and test our code.


Senior JavaScript developer

Jan 2013 - Jan 2014

Key tools used:

HAML templates, jQuery, jQuery Mobile, CSS, SASS, Git

I worked with KLM for the Unavolta project. is a web application (both desktop and mobile versions available) designed to let people upload their travel photos (with a poetic message) in order to participate in a contest and win a flight. Additionally, every week (for eight weeks) a new video is published to inspire travellers. My responsibility for the project was to design and develop the mobile interface.


Senior System Engineer

Jan 2008 - Aug 2013

Key tools used:

.NET WebForms and WebAPI, Java, Javascript, HTML5, CSS/3, XML, RESTful APIs and SOAP web services, MS SQL Server, Linux administration, Bash scripting, Network administration

During my career at Prometeo I had the chance to work on a wide range of projects: from building a complete server rack to implementing a site crawler using the Selenium API to designing and developing web applications using multiple different technologies. My responsibilities included: gathering user requirements, choosing the right technologies to use, implementing server and client side code, testing and production deployment. I was involved in the R&D area too: building and testing new technologies for upcoming projects.

Side projects


    My personal website: a web application built with Gatsby.js, GraphQL, using Markdown files as data source for the content.

    Open sourced on GitHub, hosted on GitHub pages and deployed automatically at every change using GitHub actions. DNS and routing handled through Cloudflare.

  • F

    A small library to be used in all those multiple pages (server side MVC) projects that usually don’t have a structured js due to the fact that most of the job is done on the server.

    It is “A small, modular library that helps writing structured, reusable, testable and namespaced JavaScript code. It also provides DOM helpers and a pub/sub implementation”. Published in the Bower repository.

  • Acidseed

    A caching layer to cache any API/HTTP request. Written in Node.js using ES6 Harmony with persistence on Redis.

  • Triptapp [Closed]

    Co-founder of triptapp: we developed the web application and designed the mobile application. The webapp development involved social authentication, a NoSQL database (mongoDB), an API to interface with Google Maps, a client side app to handle data about places positions, like, etc and a REST API to handle AJAX calls. The mobile app used a REST API in Node.js as backend and HTML5 with Backbone.js (accessing the device’s features through Cordova/PhoneGap).

    Built using HTML5/CSS3, LESS, Backbone.js, jQuery, Twitter Bootstrap, Yii Framework (PHP), mongoDB. Integrated with Google Maps, Hosted on Windows Azure (Linux VM).


Certified Level 3 Personal trainer and Level 2 Gym instructor.

Trained barista and coffee roaster.

Amateur photographer

Spoken languages

Italian, English, basic Spanish.


2002 - 2007: Degree in Telecommunications Engineering with the thesis: “AODV protocol modifications to include Link State metrics”