Matthew Boston

Continuous improvement of software and people

( Email | Website | GitHub | Twitter | LinkedIn )

Summary

I am passionate about delivering quality software at ludicrous speed. I believe in collaborative thinking in an open community based on trust, teamwork, and transparency. Business leaders reach out to me because I am focused on providing leadership to software teams looking to move toward a more agile and responsive way of building software solutions. Not only do I transform the software, I am also committed to maintaining an equally significant impact on the people.

While my technology background is diverse, my core principles have always remained the same: simplicity, agility, and value.

I have spent my career helping teams of various sizes improve software quality and predictable delivery. I am well-versed in agile and XP practices, emphasizing clean code, testing, refactoring, and continuous delivery. I enjoy collaboration with users and stakeholders to arrive at solutions that meet their needs. I focus on providing simple solutions to complex problems.

My architectural designs use patterns from Domain-Driven Design and distributed microservices. I believe in shipping observability metrics and service monitoring as a part of every new feature. I advocate for “testing in production” strategies such as canary deployments, feature flags, parallel implementations, and others.

I am a collaborator at heart. I enjoy working with others and mentoring through pair programming, code reviews, and architectural decision reviews. I prefer tests as documentation but I believe that high-level documentation through prose and diagrams work best when designing and communicating an idea or modeling an entire system.

I live by one mantra: “code is not the goal.”

Open-Source Contributions

I am a advocate for giving back to the open-source community. I am involved in making improvements to existing open-source projects as well as creating and sharing my own solutions to common problems. I enjoy sharing knowledge and contributing to a growing community.

Here are some open-source libraries I created and/or currently maintain:

  • ring-okta — Creator/Maintainer — Middleware for integrating Okta and Ring in Clojure
  • analytics-clj — Creator — Idiomatic Clojure wrapper for the Segment.io 2.x Java client
  • clojure.jdbc-c3p0 — Maintainer — C3P0 Connection Pool implementation for clojure.jdbc
  • clojurescript.csv — Creator — A ClojureScript library for reading and writing CSV
  • baizen — Creator — BAI file format parsing and validation in Clojure
  • Test::More::Behaviour — Creator/Maintainer — Rspec-style tests in Perl

I have also contributed new feature development, bug fixes, and documentation to others including: Clojure, ClojureScript, Liberator, Spacemacs, Grails, Langohr, cljs-time, cljs-ajax, RailsAdmin, Redcarpet, Kitematic, and many others.

Experience

Principal Software Engineer, Procore Technologies

October 2020 — Present

Building the software that builds the world.

Staff Software Engineer, CircleCI

October 2017 — October 2020

Our continuous integration and delivery platform helps teams release quality code, faster.

  • As the technical lead on the Plans & Payments team, I was primarily responsible for the architectural design and implementation of a suite of microservices responsible for plan management and multiple 3rd party billing integrations. I spent time collaborating with other Staff+ Engineers to document architectural values and enabling others to make decisions to reach our company and team architectural goals.
  • Identified, designed, and built a SQL performance optimization to improve our mean PostgreSQL read IOPS. This caused 95% of all pipelines on CirlceCI to start 0.4 sooner and 2 seconds sooner in the worst case.
  • Designed and implemented systems that consume millions of events per day from RabbitMQ and built RESTful, GraphQL, and gRPC APIs for numerous clients. These efforts required collaboration with teammates in order to build solutions that were scalable, performant, tested, and maintainable.
  • Utilized “testing in production” strategies such as canary deployments, feature flags, parallel implementations, and others. This allowed teams to deploy changes to production while monitoring and observing the behavior with low impact and mitigate risk.
  • Built complex SQL queries and performed data analysis in order to help the Product team make informed decisions and determine priority. The decisions being made were to identify areas where missing features or bugs were either costing the company money or areas where the business was missing out on revenue opportunities.
  • Mentored others through pair programming, code reviews, architectural decision reviews, and various internal book clubs and knowledge sharing initiatives.

Technologies: Clojure, gRPC, Protocol Buffers, JavaScript, React, GraphQL, PostgreSQL, RabbitMQ, Docker, Kubernetes, Git

Practices: Domain-Driven Design, Architecture Decision Records, C4 Architecture Modeling

VP of Engineering, Flye

March 2017 — October 2017

As the VP of Engineering, I acted as the principal engineer and architect; designing, building, and maintaining a suite of microservices to ensure the products remain agile, autonomous, and adaptive.

  • Designed, implemented, and maintained an API-Driven Architecture for both web and mobile clients. Written in Clojure using Immutant and liberator.
  • Built a real-time event stream microservice to send Server-Sent Events (SSE) to web and mobile clients. Written in Node.js consuming messages from Redis.
  • Used React and Redux to build a JavaScript single-page app (SPA) with real-time updates and authentication.
  • Maintained several legacy Node.js services; making fixes and replacing with more suitable solutions when applicable.

Technologies: Clojure, Immutant, JavaScript, Node.js, React, Redux, RabbitMQ, Redis, PostgreSQL, AWS, Git

Senior Software Engineer, CircleCI

August 2016 — March 2017

Building a continuous integration and delivery platform in Clojure and ClojureScript.

  • As a member of the Growth Team, my focus was to discover and implement features to improve user experience and increase user engagement in the CircleCI product.
  • I worked with product owners, data scientists, and other engineers to make data-driven decisions. A/B testing, feature flags, incremental feature rollouts, behavior analytics, and other processes to ensure new features were reliable, stable, and valuable to users.
  • As a senior engineer on the team, I worked with and provided mentorship to others on the team; helping others new to Clojure and ClojureScript. This involved using code reviews, pair programming, and instituting “function of the week” to improve everyone on the team.

Technologies: Clojure, ClojureScript, Om, MongoDB, Docker, Git

Software Developer, Test Double

July 2013 — August 2016

A focus on building well-crafted applications in Clojure, ClojureScript, JavaScript, and Ruby on Rails. I have also worked on applications using Groovy on Grails and Java. I am passionate about understanding users’ needs and solving problems simply and elegantly.

  • Worked with accounting professionals to build a full-featured ledger system and track loan amortization schedules. This required very precise mathematical equations to ensure accuracy to the penny. Clojure, ClojureScript, and Datomic were used.
  • Enhanced a JavaScript widget to allow non-profit organizations to share news stories and track donation progress. Built with vanilla JavaScript.
  • Added features, tests, and stability to a Backbone.js application which dealt with 3D modeling and dimensional price estimates of pool liners.
  • Encouraged and advised a team of Java developers to write more JavaScript; showing the benefits of client-side development. I also introduced CoffeeScript and behavior-driven development (BDD).

Technologies: Clojure, ClojureScript, Datomic, Java, JavaScript, CoffeeScript, Backbone.js, Ruby, Rails, Git

Client Principal, Neo Innovation formerly EdgeCase

May 2012 — June 2013

EdgeCase is now part of Neo, doing the same great work with a growing global team.

As a Client Principal, I worked with clients from the introductory call, through product inception and into development. I also provided project management, high-level technical guidance, and agile & lean software development coaching.

I worked with clients ranging from an entrepreneur with an idea for a startup to those who work for larger companies looking to solve a particular business problem. In both scenarios, I assist the client in defining a vision and scoping an appropriate first release and from then on out I am the primary point of contact and technical lead for the client.

Software Artisan, EdgeCase

October 2011 — May 2012
  • Developed a Ruby on Rails application which allows users to create their own paid websites. Credit card payments, social networking integration with Facebook and Twitter, and custom site theming are some of the major features.
  • Created an application utilizing Clojure for back-end web services and the Ember.js JavaScript framework for a very responsive and dynamic UX.
  • Implemented an ETL system in Ruby. This application read in thousands of records from a pre-existing datasource, performed transformations, logic, and analytics before posting to a pre-determined endpoint. The application was written using multi-threaded workers using the Thread Pool pattern.

Technologies: Ruby, Rails, JavaScript, Ember.js, Clojure, Git

Software Craftsman, Pillar Technology

July 2010 — October 2011

Provide development and coaching to all levels of clients’ developers in agile development techniques including TDD, continuous integration, source control, clean code, refactoring techniques, and legacy rescue.

  • Successfully integrated Groovy and Grails into an existing J2EE application in order to meet the client’s needs for drastic workflow changes. Also coached the client’s existing developers unfamiliar with Groovy and Grails in proper agile development with the new tools.
  • Enhanced a largely non-tested legacy Java application by first wrapping with tests to ensure current functionality was preserved. This allowed the development team to safely modify and extend the application with confidence.
  • Worked on a legacy Perl project introducing agile development techniques. Developed and published a BDD test framework in Perl to ease in the testing of the application. This allowed the developers to write much cleaner code and expressive tests which revealed the intent of the working code.

Technologies: Java, Groovy, Grails, Perl, Ruby, Rails, Git

Software Developer, Click4Care

April 2008 — July 2010

Building medical management software for payers, providers, and patients. Our flagship product ThinkHealth, which automates utilization case, disease, and population health management workflows.

  • Implemented an integration test-framework written in Python to synchronize testing of multiple cooperative systems. This application accesses common datapools in XML and JSON, transforms with XSLT using Jython, and performs tests written in JUnit and IBM’s Rational Functional Tester (RFT).
  • Built fully automated functional tests to interact with multiple systems and provide feedback regarding the synchronization of interactions.
  • Designed test plans and develop JUnit 4.x tests to consume exposed web-services adhering to a WSDL contract and sending data using SOAP/REST.
  • Worked in both large and small teams in an agile environment to implement new J2EE functionality by applying core technologies such as EJB 3, Spring Framework, and Hibernate.
  • Engaged in industry standard best practices using SVN, Maven, Hudson CI (Jenkins), and Bugzilla issue tracking.
  • Installation and configuration of Oracle 10g databases and WebLogic servers on both Linux and Windows.

Technologies: Java, J2EE, Python, Oracle Database 10g, Maven, Ant, SVN

Analyst/Intern, BearingPoint

June 2005 — December 2007
  • Sole creator from inception to implementation of a VB Application used to automate the creation and analysis of large financial spreadsheets. This was used to accurately and efficiently analyze revenue and expense amounts accumulated by client engagements.
  • Created an application to parse timesheet data from generated HTML files to send to other applications for analysis; this saves the user 8 labor-intensive hours per week while eliminating countless errors.
  • Applied advanced mathematical and analytical abilities to greatly improve functions and automate the reconciliation process of many large, relational spreadsheets.
  • Worked with managing directors nationwide to gather requirements, enhancements and revisions to the software.
  • Coordinated meetings to present project updates and train team members on functionality enhancements.

Technologies: Excel VBA

Education

The Ohio State University

September 2002 — June 2008

B.S. Computer Science & Engineering

  • Business Minor
  • East Asian Minor in Japanese

Curriculum Vitae: Algorithms, data structures, and distributed systems

Activities: Theta Tau Professional Engineering Fraternity