Hi! My name is Adam.
I am a
Software Engineer & Manager.
I am currently looking for a remote position and live near
Boston, MA
.
I specialize in building self-driven teams, as well as developing scalable distributed systems with Java. I have significant experience with operational incident management, ETL (Extract-Transform-Load) processes, and converting monolith architectures to event-driven microservices.
Experience
Manager / Director of Member Engineering
February 2018 - April 2023
Software Engineering
  • Championed turning the legacy monolith my team owned into component microservices. My teams owned about 10 microservices as of 2023, and had also handed some off to team's where the service better aligned with their vertical.
  • Helped drive the company towards an event driven architecture to facilitate scaling by being the team beta the components.
  • Wrote and maintained many of the ETL processes the analytics organization relied on. This was a combination of owning many of the major legacy ETL processes, as well as being the first team to harness the event-driven architecture for a more modern ETL approach.
  • Operational response excellence. My teams were often used as examples for what teams should strive to do. I designed a tiered alert response approach using a combination of Slack, PagerDuty, and Rollbar, and was often involved in fixing bugs to keep the engineers focused on their sprint goals.
Teamwork and Leadership
  • Managed a backend platform team that maintained the monolithic Java application containing user data. The application was a required part of most runtime operations across the company. If this application went down, so did most of the company.
  • Managed a second, product-focused team (starting in 2019 in tandem) that worked on Jobcase.com features such as the user profile page, SSO/auth, notifications, connections between users, direct messaging, and profile search.
  • Engineer career and team satisfaction were consistently reviewed well in bottom up performance reviews, never had an engineer leave the company from my team voluntarily.
  • Promoted from Software Engineering Manager to Senior Software Engineer Manager after about 4 years, and then promoted again to Director level less than a year later. Managed one manager for my final 6 months.

Senior Software Engineer
May 2016 - February 2018
Software Engineering
  • Primarily worked on a variety of backend Java systems such as the user data store and communication systems.
  • Upgraded the cross application Java stack from Hibernate 4 to 5 in a JTA environment.
  • Designed and built an in-house communication templating system using Velocity.
  • Gained a lot of experience with enterprise Java, handling medium (not quite big) data in batch jobs, and applications that receive 50k+ RPM.
  • Became proficient in performance analysis for Java applications and MySQL databases.
Teamwork and Leadership
  • Became fluent in design by contract software development methodology, led design on several medium size projects.
  • Gained experience reconciling new requirements / projects with existing architectures.
  • Took part in the engineer hiring process as a technical interviewer.
  • Promoted to a managerial role after about two years.

Intermediate Software Engineer
January 2015 - April 2016
Software Engineering
  • Primarily worked on building web services using Ruby on Rails and Spring Boot.
  • Built REST APIs, example clients, test suites, and development infrastructure for most projects.
  • Gained expertise of supporting technologies such as MySQL, MongoDB, JPA, Docker, Jenkins and Cucumber.
  • Learned a lot about healthcare specific technologies such as Epic, Cerner, HL7 and Mirth.
  • Was involved in designing the system architecture for a few new applications.
Teamwork and Leadership
  • Was heavily involved in creating and prioritizing the backlog for several projects.
  • Gained experience working with larger teams and eliminating the "bus" factor.
  • Consistently worked with other divisions such as product owners and QA to review requirements, tests, and code.
  • Received a promotion (Associate → Intermediate) after 1 year.

Ruby on Rails Developer
May 2013 - August 2014
Software Engineering
  • Contributed various features to the primary Ruby on Rails web application.
  • Contributed to and refactored the sizable Cucumber / Selenium test suite.
  • Maintained and debugged the production deployment and database.
  • Provided infrastructure (through Google Analytics) for data analysts.
Teamwork and Leadership
  • Was involved in the planning and design of the company's website and application.
  • Was often given the chance to take the lead on small projects.
  • Gained experience working with a small and partially remote team.
  • Worked for/with the sales, data, and management teams directly.
Skills
Design
APIs, microservices, data pipelines, monitoring / alerting, instrumentation, databases, ETL, event driven architecture

Management
MVPifying requirements, team building, process refinement, mentoring

Java
Spring, JPA / Hibernate, JUnit, design, performance optimization

Databases / Caches
MySQL, Elasticsearch, Hazelcast, Redis, design, performance optimization

DevOps
Docker, Helm, Kubernetes, Bash, AWS / Cloudformation

Tools
Git, GitLab CI, Jenkins, Maven, SumoLogic, NewRelic, DataDog
Projects
Food Deal Finder / Reporter
This application is a Spring Boot app that contain CRUD functionality for "deals" that belong to an organization and set of locations. I got the idea because keeping track of all the Taco Tuesdays around Boston became cumbersome. So while I started building this application primarily as sandbox to try out features of Spring Boot, Spring Data, JPA, MySQL, Maven, Lombok and JUnit, as I built it I started to like the idea of actually productizing it more and more.

The application showcases how easy it is to implement simple microservices with Spring Boot. It contains what I consider to be best practice in terms of separating out a controller layer from the service and persistence layers. Right now, its basically just a CRUD application, but I hope to add a permissions / user model, gamification, search, and a bunch of other features to it when I find the time. Also, branding. I would also like to use it to learn a diffferent cloud platform than AWS (perhaps Google) and build a front-end for it (I was thinking with Flutter). If you are interested in helping with that in your spare time, let me know!

Wildstyle Generator
This Maven test library can be used to generate POJOs with randomized values during automated testing. I built it because I was frustrated there was nothing like FactoryGirl for the Java ecosystem.

The library is published to Maven central with version 0.1. I felt it needed a lot more functionality and testing before it deserved V1.0. The README in the repository is actually pretty good at showcasing what it can do. I also use this as an example of how Design By Contract code and contracts look.

This Website
I built this website using Middleman, HAML, SASS, CoffeeScript, and GitHub Pages.

This website is meant to serve the same purpose as a resume, except implemented as a website. I think basic HTML/CSS/JS should be a part of a developers toolkit, and this gives me a way of doing some of that every so often as a backend focused engineer. I tried to design the website in a more modern style with horizontal sections that would lead the reader through in an easy-to-read way. Design has never been my strong point and I would certainly appreciate any input you had to offer in terms of the design and UX of this website!

Fantasy Sports Lineup Generator
This project is a simple Java application that can generate lineups for daily fantasy sports contests. When I first got into daily fantasy sports, all I could think about was how lineup generation was a search optimization problem. So I built this just to scratch the itch of knowing if I could make something efficient enough to actually complete computation given the sheer number of permutations of a fantasy sports lineup.

So far, all I have done is the easy part of this project. That is, setting up a harness to pull daily fantasy sports data from a chosen provider (DraftKings or FanDuel for example), and generating a lineup for a chosen contest that provider offers. The harder part is creating a good model for player value. Just as a proof of concept the algorithm can generate a lineup, I used the player's average fantasy points value which is included in the provider's data. That is not a particularly good predictor though, since it doesn't take into account injuries, hot streaks, opponents, etc... I am hoping to one day create an ML model for the predictions when I find the time (and ML is cheaper).
Education
Graduate
Undergraduate
Specialization: Software Engineering
Minor: Computer Science

Carnegie Mellon University
Pittsburgh, PA
Fall 2013 - Fall 2014

Carnegie Mellon University
Pittsburgh, PA
Fall 2009 - Spring 2013