×
Graham Hough

Graham Hough

Lead Developer Experience Engineer

525 East 14th St #9D, New York, New York, US, NY 10009
(859) 388-0877

Background


About

About

A software developer with a passion for QA and a love for automation. In my spare time I like to build fun side projects, play videogames, explore new technologies, and make music with synthesizers!

Work Experience

Work Experience

  • DevOps Contractor

    Aug, 2020 - Nov, 20203 months

    Developed a model API for user authentication and authorization with organizational multitenancy.

    • Async calls for user registration, profile updating, organization invitation as well as role management.

    • Flask based application utilizing docker-compose. Created custom flask images with alembic migrations that connected to a containerized Postgres database.

    • Developed bash and Python scripts to help normalize commands to create and tear down environments or deploy via docker swarm to a remote host. (Bash and Typer)

    • Self-documented API with hosted docs and redoc for developer quality of life. Created documented Postman/PAW suites for developer spot-checks and integration testing.

  • DevOps Contractor

    Mar, 2020 - Jul, 20204 months

    Converting and normalizing datasets for bulk uploading into Microsoft Customer Relations Management software via an API.

    • Took a data export from a third party application, normalized it into pydantic models as well as exporting CRM data and converting it back into the original format via API endpoints. (A to B, B to C, and C to B, B to A)

    • Created bulk convert and upload jobs with workers on a cron job.

    • Managed terraform scripts to have data conversions run in an azure based kubernetes environment. (Azure, kubernetes, blob storage, 365 CRM)

  • Lead Developer Experience Engineer

    Jan, 2019 - Dec, 201911 months

    Lead Developer Experience Engineer for the product department building tools to empower users in all aspects of the commercial real estate business. Developed a custom CI/CD platform using GitHub Actions, CircleCI, Ansible, and other scripting tools to test, build, package, and deploy services from a monolithic repository of microservices.

    • Managed a team of remote DevOps Contractors building a Kubernetes stack and oversaw all data migrations and infrastructure changes on both AWS and Google Cloud

    • Built a custom CI/CD platform with GitHub Actions (in beta at the time: github.com/knotel/actions) to perform version management using Semver2.0 and Lerna, image publishing using Docker build pipelines, artifact publishing to NPM and GitHub's container registries, linting using Eslint with custom plugins, unit testing with Jest, notifications to Slack during all stages of building and deployments, all on a 50+ microservice javascript based mono-repo

    • Researched and developed new tools to improve quality of life for developers both in-house and remote

    • Tracked software vulnerabilities using external auditing tools, and updated microservices weekly to ensure up-to-date patches to remove vulnerabilities

    • Developed a system using GitHub actions to automate running unit and integration tests on commit events, giving developers instant feedback on the status of their features

    • Migrated from a Vagrant based development environment to Docker based microservices, later expanding into a Kubernetes stack with custom tooling to minimize developer requirements to start contributing to our complex codebase

  • Lead QA Software Engineer

    May, 2017 - Jan, 20191 year 8 months

    Developed and tested an online platform for on-demand precision manufacturing using machine learning with model analization from 2D prints and 3D models to quantify part pricing at scale.

    • Responsible for continuous deployments from multiple codebases, reviwing all pull requests.

    • Managed a remote team of manual software testers and provided critique and feedback

    • Responsible for release cutting, testing, feedback, and deployment scheduling

    • Assigned and oversaw hotfix developments, as well as hotfix testing, for on-call DevOps team members

    • Followed the lifespan of bugs and hotfixes, ensuring transparency and reducing downtime

    • Maintained platform quality when transitioning from CAPIstrano to Kubernetes based deployments

    • Oversaw all automated testing efforts, from converting manual front-end tests to automated cypress tests, to unit and intigration tests, as well as end-to-end tests

    • Addresses potential QA issues and constraints during product design and routinely met with Project Managers to ensure industry standards

    • Setup and management of multiple testing environments and generated server performance metrics

    • Investigated user issues and documents errors as they developed from Support teams (tracking user health in Fullstory, Rollbar, etc.)

    • Updated and maintained the Kanban (Trello) board for QA, as well as documenting planned feature releases with the Advertising Department

  • QA Analyst

    May, 2016 - Jan, 20178 months

    Veterinary Data Services, Inc. provides data conversion, integration, and support services to the veterinary community. Powering solutions at over 15,000 practices, VetData enables veterinarians and value added service providers to work together, leveraging practice data to improve profitability and quality of care.

    • Responsible for continuous deployments to multiple projects.

    • Communicated software changes with API consumers and partners during testing to ensure a smooth version change.

    • Exploratory testing, functionality testing, smoke testing, regression testing, security testing and stress testing on multiple projects, both in-house and cloud-side.

    • Worked closely with the Dev team to keep version control clean (Git), as well as researching more complicated issues found in testing.

    • Ensured data integrity across software and API versions.

  • Software Developer

    May, 2013 - Jan, 20162 years 8 months

    Developed cloud computing software, created a Rails-backed CMS for local nonprofits and commmunity services. Studied different cloud providers and services.

    • Developed many current and new Ruby on Rails projects and deployed them to Amazon EC2, as well as deploying static content to Amazon S3 buckets.

    • Followed projects from conception to delivery.

    • Learned to develop using many languages, became accustomed to new workflows, and learned to develop efficiently in teams.

  • Contractor

    Nov, 2015 - Jan, 20171 year 2 months

    Created 3D renderings of architectures for commercial projects, as well as network management and data recovery for small businesses and homes.

    • Designed, built, and tested network solutions for home and small businesses.

    • Provided image editing, webpage mockups, and web design, as well as 3D scene rendering for Architecture Firms

    • Gave direction on current and future technology implementation.

Skills

Skills

  • Software Development

    Modern Python

    Ruby

    Javascript

    Typescript

    Bash

    Shell

  • Cloud Services

    Kubernetes

    Azure

    GCP

    S3

    EC2

    Image Registry

    Kinesis

    Aurora

    DynamoDB

    RDS

    Cloud Run

    Cloud Functions

    ECS

    EKS

  • CICD

    CircleCI

    Gitlabs

    Google Cloud Registry

    Dockerhub

    GitHub Actions

    Lerna

  • Containerization

    Docker

    Kubernetes

    Image Layering

    Dockerhub

    GitHub Actions

    GitHub Package Registry

    Swarm

    Compose

  • Frameworks

    Pydantic

    Starlette

    FastAPI

    Django

    Flask

    Rails

    React

    Typer

Education

Education

  • Computer Science, Bachelor, University of Kentucky

    Aug, 2014 - Aug, 2016

References

References

  • Willy Guggenheim

    I highly recommend that you on-board Graham Hough. He is a rockstar. It was a pleasure and an honor to work for Graham, who managed me for a successful 1+ year contract. His DevOps, Cloud, Software Development, Architecture and Software Team Management skills are of the highest quality and performance. I have worked with a lot of amazing architects, developers, devops and managers over the last 20+ years, but Graham stands out and has certainly made my top 5 list of favorite people to work with.

  • Chase Southard

    Graham is resourceful team player. He not only managed our small QA team across distant timezones, but also helped us refine our processes to be as effective as possible given our limitations. Give Graham an opportunity and he will find you a clever a solution.

  • Brian Herbert

    I had the pleasure of working with Graham when I brought him on our team to run our QA efforts. The minute we brought him on, he hit the ground running and made massive improvements to our QA process and architecture around CICD. He’s both intelligent and driven and would make an incredible addition to anyone’s team.

  • Victor Quinn

    Graham is an incredibly versatile and thoughtful developer experience lead and architect. I had the pleasure of working with him at Knotel and he brings his background in QA automation to orchestrating CI/CD pipelines and testing. He has broadened his scope significantly into all aspects of systems architecture in automating deployments to Kubernetes and managing our DevOps team. He brings best practices in the industry around frequent deployments and testing, utilizing version control optimally, and evaluating various technology choices. He is a must have on solving really gnarly engineering problems, often ones unrelated to his own work, because he has the experience and acumen to get to the bottom of things in a way that many others cannot. Graham is one of those people whose presence on an engineering team really levels up everyone around him, making them all more thoughtful and collaborative and asking the right questions to help them avoid pitfalls. Graham is a major asset and I strongly recommend him.

  • Sarah Vessels

    Graham focuses on the performance of whatever project he's working on, wanting to make it as fast and reliable as possible. He will investigate new and existing technologies to find a good fit for the problem. He's not afraid to reach out to consult with others, deferring to their experience when necessary.