I’m a experienced software engineer whose helps development teams evolve and improve by adopting modern software engineering practices.

I’ve been part of teams in London, Edinburgh, New York City, Berlin and Toronto, where I am now based.


Below are some of my areas of expertise:

Test-driven Development

  • An effective Red/Green/Refactor cycle
  • Faster test feedback
  • Writing fast, clear and more maintainable tests

Automated Testing

  • Adding tests to a legacy codebase
  • Speeding up a slow test suite
  • Avoiding fragile tests

Workflow

  • Making effective use of Git and GitHub
  • Techniques to avoid difficult merge conflicts

Architecture

  • Decoupling from frameworks
  • Making use of Service Objects

Code Review

  • Introducing a strong culture of code review
  • Providing feedback in a kind and effective manner

Refactoring

  • Restructuring code when there are no tests
  • Improving code without fear of introducing defects

BDD (Behaviour-Driven Development)

  • Improving collaboration between Business Stakeholders, Developers and QA
  • Using Specification by Example to build executable specifications (e.g. Cucumber)

Continuous Integration and Continuous Deployment

  • Reducing cycle time
  • Deploying with confidence

Automated Code Quality

  • Measuring test coverage
  • Automating coding style checks
  • Detecting code smells
  • Identifying security issues

Experience

Check my Past Work to see the clients I’ve worked with.