<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="Lead SDET. I improve processes by leveraging relationships and understanding the motivations and incentives underneath them — at Opentrons and on consulting engagements."><meta name="generator" content="Astro v6.3.7"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" href="/favicon.ico"><link rel="canonical" href="https://joshmcvey.com/"><link rel="alternate" type="text/plain" href="https://joshmcvey.com/resume.txt" title="Resume for AI agents and tools"><link rel="alternate" type="text/markdown" href="https://joshmcvey.com/resume.md"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","name":"Josh McVey","url":"https://joshmcvey.com","email":"yersh13@gmail.com","jobTitle":"Lead SDET, Build & Release manager, and process operator. Twenty years across QA strategy, test automation architecture, SDET, platform engineering, and software delivery.","address":{"@type":"PostalAddress","addressLocality":"Lawrence","addressRegion":"KS","addressCountry":"US"},"sameAs":["https://github.com/y3rsh","https://www.linkedin.com/in/joshmcvey"]}</script><title>Josh McVey · Build &amp; Release Manager, Lead SDET, Full Stack, Platform</title><link rel="stylesheet" href="/_astro/index.CE9mKfJE.css"></head> <body> <header class="site-header"> <a class="brand" href="/">Josh McVey</a> <nav class="nav" aria-label="Primary"> <a href="#good-at">Strengths</a><a href="#career">Career</a><a href="#experience">Experience</a><a href="#ai">AI</a><a href="#contact">Contact</a> </nav> </header> <main>  <section class="hero" id="top"> <p class="eyebrow">Build &amp; Release Manager · Lead SDET · Full Stack · Platform · AI-augmented delivery</p> <h1>20 years across operations, consulting, QA, automation, platform, and Build &amp; Release.</h1> <p class="lede"></p> </section> <section class="section" id="good-at" aria-labelledby="good-at-title"> <h2 id="good-at-title">What I&#39;m good at</h2> <p class="section-intro">SDLC and Quality improvement through process and automation. Understand the incentives, business objectives, technical debt, people, capital, and relationships in play.</p> <div class="facet-grid"> <article class="facet"> <h3>Lead SDET, CI/CD automation, and platform</h3> <p>Full-stack on Protocol Library, Opentrons Accounts, and OAuth/OIDC, and owner of the build and release pipelines that ship the robot software suite. I lead test automation across the full robot stack — on-robot systems, desktop apps, and the HTTP API — and mentor engineers in testing. Quality is built in, automated as much as possible, and starts before the code is written. Quality is not a phase.</p> </article><article class="facet">  <p>Connecting to the big picture — business objectives, product priorities, and the timelines that drive market fit — is what lets me help teams decide which process improvements and tech debt work actually matter, then drive that work deep into the SDLC. I improve processes by leveraging relationships and understanding the motivations and incentives underneath them. Comfortable in the architecture room and in standup the same week.</p> </article><article class="facet"> <h3>Build &amp; Release and Developer Experience</h3> <p>I manage Opentrons Build &amp; Release as a leader and hands on. Release cadence and the small details that keep robot software and cloud apps shipping new features on schedule.</p> </article> </div> </section> <section class="section career-section" id="career" aria-labelledby="career-title"> <h2 id="career-title">Twenty-plus years across four lanes</h2> <p class="section-intro">Consulting, leadership, test architecture, and build/release/platform work overlap across the timeline. The bars show where each lane shows up, not exclusive job titles.</p> <figure class="career-map" aria-labelledby="career-map-title"> <figcaption id="career-map-title" class="career-map-caption"> <span class="career-map-years">2003 to 2026</span> <span class="career-map-legend" aria-hidden="true"> <span class="career-map-legend-item"> <span class="career-map-swatch" style="background: #f59e0b"></span> Consulting </span><span class="career-map-legend-item"> <span class="career-map-swatch" style="background: #ec4899"></span> Leadership </span><span class="career-map-legend-item"> <span class="career-map-swatch" style="background: #14b8a6"></span> Test architecture </span><span class="career-map-legend-item"> <span class="career-map-swatch" style="background: #6366f1"></span> Build &amp; Release / platform </span> </span> </figcaption> <svg class="career-map-svg" viewBox="0 0 824 210" role="img" aria-label="Career timeline from 2003 to 2026 across consulting, leadership, test architecture, and build and release work"> <title>Career lanes from 2003 to 2026</title> <g> <line x1="168" y1="0" x2="168" y2="174" class="career-map-grid"></line> <text x="168" y="204" class="career-map-tick" text-anchor="middle"> 2003 </text> </g><g> <line x1="307.1304347826087" y1="0" x2="307.1304347826087" y2="174" class="career-map-grid"></line> <text x="307.1304347826087" y="204" class="career-map-tick" text-anchor="middle"> 2008 </text> </g><g> <line x1="446.2608695652174" y1="0" x2="446.2608695652174" y2="174" class="career-map-grid"></line> <text x="446.2608695652174" y="204" class="career-map-tick" text-anchor="middle"> 2013 </text> </g><g> <line x1="585.3913043478261" y1="0" x2="585.3913043478261" y2="174" class="career-map-grid"></line> <text x="585.3913043478261" y="204" class="career-map-tick" text-anchor="middle"> 2018 </text> </g><g> <line x1="724.5217391304348" y1="0" x2="724.5217391304348" y2="174" class="career-map-grid"></line> <text x="724.5217391304348" y="204" class="career-map-tick" text-anchor="middle"> 2023 </text> </g><g> <line x1="808" y1="0" x2="808" y2="174" class="career-map-grid"></line> <text x="808" y="204" class="career-map-tick" text-anchor="middle"> 2026 </text> </g> <g> <text x="0" y="22" class="career-map-label"> Consulting </text> <rect x="168" y="0" width="640" height="36" rx="6" class="career-map-track"></rect> <rect x="168" y="5" width="83.47826086956522" height="26" rx="4" fill="#f59e0b" class="career-map-bar"></rect><rect x="334.95652173913044" y="5" width="194.78260869565207" height="26" rx="4" fill="#f59e0b" class="career-map-bar"></rect><rect x="613.2173913043478" y="5" width="55.6521739130435" height="26" rx="4" fill="#f59e0b" class="career-map-bar"></rect> </g><g> <text x="0" y="68" class="career-map-label"> Leadership </text> <rect x="168" y="46" width="640" height="36" rx="6" class="career-map-track"></rect> <rect x="251.47826086956522" y="51" width="166.9565217391304" height="26" rx="4" fill="#ec4899" class="career-map-bar"></rect><rect x="613.2173913043478" y="51" width="55.6521739130435" height="26" rx="4" fill="#ec4899" class="career-map-bar"></rect><rect x="752.3478260869565" y="51" width="55.6521739130435" height="26" rx="4" fill="#ec4899" class="career-map-bar"></rect> </g><g> <text x="0" y="114" class="career-map-label"> Test architecture </text> <rect x="168" y="92" width="640" height="36" rx="6" class="career-map-track"></rect> <rect x="334.95652173913044" y="97" width="333.9130434782608" height="26" rx="4" fill="#14b8a6" class="career-map-bar"></rect><rect x="668.8695652173913" y="97" width="139.13043478260875" height="26" rx="4" fill="#14b8a6" class="career-map-bar"></rect> </g><g> <text x="0" y="160" class="career-map-label"> Build &amp; Release / platform </text> <rect x="168" y="138" width="640" height="36" rx="6" class="career-map-track"></rect> <rect x="529.7391304347825" y="143" width="83.47826086956525" height="26" rx="4" fill="#6366f1" class="career-map-bar"></rect><rect x="668.8695652173913" y="143" width="139.13043478260875" height="26" rx="4" fill="#6366f1" class="career-map-bar"></rect> </g> </svg> </figure> </section> <section class="section experience-section" id="experience" aria-labelledby="experience-title"> <h2 id="experience-title">Experience</h2> <ol class="timeline-compact"> <li class="timeline-card" style="--role-accent: #6366f1"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Lead Software Engineer and Build &amp; Release Manager</h3> <p class="timeline-meta"> <span class="timeline-company">Opentrons Labworks</span> <span class="timeline-period">Feb 2024 to present</span> </p> </div> <ul class="timeline-links"> <li> <a href="https://library.opentrons.com" target="_blank" rel="noreferrer"> Protocol Library </a> </li> </ul> </div> <p class="timeline-summary">Lead Build &amp; Release for two robot OSes and the full Opentrons application suite while still doing releases alongside the team. Full-stack on Opentrons AI; own auth across web products.</p> </li><li class="timeline-card" style="--role-accent: #3b82f6"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Senior Developer and SDET</h3> <p class="timeline-meta"> <span class="timeline-company">Opentrons Labworks</span> <span class="timeline-period">Jun 2021 to present</span> </p> </div> <ul class="timeline-links"> <li> <a href="https://library.opentrons.com" target="_blank" rel="noreferrer"> Protocol Library </a> </li> </ul> </div> <p class="timeline-summary">Protocol Library, Opentrons Accounts, CI/CD on GitHub Actions and AWS, Datadog. Release and test frameworks that shortened robot software release cycles.</p> </li><li class="timeline-card" style="--role-accent: #f59e0b"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Test Automation Architect</h3> <p class="timeline-meta"> <span class="timeline-company">TEKsystems</span> <span class="timeline-period">Aug 2019 to Jun 2021</span> </p> </div>  </div> <p class="timeline-summary">Practice architect for continuous testing. Led pytest automation for a gaming engine team of ten and browser-based UAT in Azure DevOps for energy-sector .com work with a team of five.</p> </li><li class="timeline-card" style="--role-accent: #ef4444"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Software Developer, Test III</h3> <p class="timeline-meta"> <span class="timeline-company">Rackspace</span> <span class="timeline-period">Nov 2016 to Aug 2019</span> </p> </div>  </div> <p class="timeline-summary">Lead SDET on a dedicated-device web portal across customer-facing apps, ETL, and APIs. Python, Java, TypeScript, Jenkins, OpenShift, Docker, GraphQL, Elasticsearch.</p> </li><li class="timeline-card" style="--role-accent: #a855f7"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Test Architect / Lead Automation Engineer</h3> <p class="timeline-meta"> <span class="timeline-company">Xpanxion</span> <span class="timeline-period">2009 to 2016</span> </p> </div>  </div> <p class="timeline-summary">Hands-on QA strategy and automation consulting on long-term engagements. Built frameworks for web, API, ETL, mobile, and desktop; BDD/TDD with Cucumber, JUnit, TestNG; performance work with JMeter and LoadRunner.</p> </li><li class="timeline-card" style="--role-accent: #64748b"> <div class="timeline-card-head"> <div class="timeline-card-titles"> <h3>Epiq Systems, Standard Beverage, Target, independent IT work</h3> <p class="timeline-meta"> <span class="timeline-company">Earlier roles</span> <span class="timeline-period">2003 to 2012</span> </p> </div>  </div> <p class="timeline-summary">Automation in C# and Selenium, QA leadership for enterprise web and ETL, retail operations leadership, and nonprofit web and AV implementation. Twenty-plus years from QA through delivery management.</p> </li> </ol> </section> <section class="section" id="ai" aria-labelledby="ai-title"> <h2 id="ai-title">How I work with AI</h2> <p class="prose">I have been invigorated by learning and using AI tools. Staying on top of the rapid changes is challenging but I do so by reading and listening to podcasts. Faster iterations require more good taste! I iterate fast on real work and stay energized doing it.</p><p class="prose">In practice that means Cursor, Claude Code, Warp, skills, rules, and repeatable workflows that stay useful as the models change. It shows up in shipping: Opentrons AI features, robot interaction clients in TypeScript and Python, and the glue scripts that keep releases and tests honest. I treat AI as infrastructure for thinking and execution, then harden what works into production code.</p> </section> <section class="section contact-section" id="contact" aria-labelledby="contact-title"> <h2 id="contact-title">Contact</h2> <p class="section-intro">Open to Staff SDET, platform, Build &amp; Release, and consulting conversations.</p> <ul class="contact-list"> <li> <a href="https://www.linkedin.com/in/joshmcvey" target="_blank" rel="noreferrer">LinkedIn</a> </li> <li> <a href="https://github.com/y3rsh" target="_blank" rel="noreferrer">GitHub</a> </li> <li> <a href="/cdn-cgi/l/email-protection#add4c8dfdec59c9eedcac0ccc4c183cec2c0"><span class="__cf_email__" data-cfemail="dca5b9aeafb4edef9cbbb1bdb5b0f2bfb3b1">[email&#160;protected]</span></a> </li> <li> <a href="/resume.pdf" download>Resume (PDF)</a> </li> </ul> </section>  </main> <footer class="site-footer"> <p>© 2026 Josh McVey</p> </footer> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body></html>