Evan Gray

Objective

As a Software Engineer with an affinity for all things Ruby, I am dedicated to crafting elegant and effective solutions that prioritize the needs of the product. With a focus on delivering clean, well-architected code, as well as a passion for implementing and improving processes, I am well-positioned to help drive the success of any organization looking to build innovative products and streamline development processes.

For more information, including my entire work history, please see my LinkedIn profile, or view my Github page to see some of my personal projects.

Experience

Public Strategies | Oklahoma City, OK

Product Software Engineer & Data Team Manager [Hybrid]

Apr. 2023 — Present

  • Due to my contributions to the Data team’s efforts, I was promoted to the role of Product Software Engineer & Data Team Manager. I oversaw the implementation and maintenance of our company's internal data management systems, the largest of which comprised a data-intensive application built in Ruby on Rails. The team I managed was also responsible for constructing and maintaining event-management and marketing modules in MS Dynamics.
  • I collaborated with stakeholders to gain a deep understanding of user needs, designed the software architecture, and ensured that all product features were properly implemented. I continued to write technical documentation, define processes, and foster interdepartmental communication to promote a cohesive work environment.

Senior Software Engineer [Remote]

Aug. 2022 — Apr. 2023

  • My initial focus centered around constructing a robust Rails API that served the company’s mobile applications. These apps provided users with easy access to their workshop schedules, rewards achieved for attending events, and content and information about their program. Much of my time was spent determining product requirements by engaging with stakeholders. When coding, I often found myself delving into the configuration layer, leveraging my expertise to troubleshoot and configure various aspects of the application for our DevOps team.
  • Due to our diligent attention to both product and process, a project manager and I eventually redirected our focus to supporting the Data Team. They were tasked with consolidating numerous data management systems into a unified instance of MS Dynamics, but required assistance in overcoming technical knowledge gaps and streamlining processes. Our contributions were critical in optimizing the team's performance by setting up an efficient workflow in Jira, implementing Agile methodologies, fostering interdepartmental communication, and building comprehensive documentation.

Weedmaps | Irvine, CA

Software Engineer III [Remote]

Feb. 2022 — Aug. 2022

  • I began my tenure on the Ads team, which was responsible for facilitating businesses in creating and administering advertising campaigns on our platform through a user-friendly Rails admin. My most notable achievement entailed completing the implementation of a RESTful API, built upon Graphiti, which translated requests into GraphQL via a custom adapter. This allowed for easy management and control of CRUD actions on our internal Ad Server.
  • Following the successful completion of my work with the Ads team, the organization underwent a restructuring, and I was placed on a new team responsible for revamping the user experience for both the site and native applications. Although my time in this role was brief, my contributions were significant, particularly in clearing technical debt for the "Best of Weedmaps" campaign of 2022.
  • My short time here was unfortunately due to a company-wide layoff that eventually impacted about forty percent of employees.

Public Strategies | Oklahoma City, OK

Web Developer [Hybrid]

Aug. 2019 — Feb. 2022

  • I built a variety of web applications of varying complexity for contracted clients, mostly in the social service space. When I first joined, these sites were written in Laravel, but we eventually switched to utilizing Ruby on Rails. I was primarily a back end developer, as we had our repositories split into a Rails API back end and a React and TypeScript front end. The back end team was also responsible for maintaining the admin layer, which was a traditional Rails UI.
  • The applications were responsible for managing and visualizing data via custom reporting, displaying content such as webinars and podcasts, organizing and displaying upcoming and past events via a calendar, and allowing clients to upload information about their organization and displaying it in a meaningful way. The sites typically had an admin layer, which allows our Technical Assistance representatives to manage all content and data displayed across the site.
  • I was often responsible for training new members of the back end team during onboarding.
  • I created a plugin that helped our Vim users standardize their code, and also extended Vim’s functionality, such as templating, DB connections on a per-project basis, and testing endpoints.

ADFITECH | Edmond, OK

Desktop & Web Application Developer [Hybrid]

Sep. 2015 — Aug. 2019

  • I started my software engineering career by learning how to build desktop applications for end-users with Ruby GTK. These applications had a task flow determined by the Ruleby rules engine, and delegated asynchronous tasks to a Redis server. I also was expected to maintain C and PHP legacy applications when necessary, sometimes porting them to Ruby.
  • Near the end of my time at Adfitech, I started working on the company's web app for clients, which was built in Ruby on Rails. The website allowed for clients to upload data and images to our system, and respond to findings from our Quality Control team.
  • Eventually, I was responsible for teaching junior developers how to write Object-Oriented code in Ruby. I implemented a training repository, where new-hires could learn our process for working issues and submitting merge requests via GitLab. This repository also taught them the basics of the command-line and a few other common development tools, such as git.

Junior System Administrator [On-Site]

Jan. 2015 — Sep. 2015

  • For a short time, I transitioned into the role of a Jr. Linux System Administrator. I was expected to handle daily system maintenance tasks, such as checking logs and sudo reports, ensuring the surveillance system was functional, and running reports when we had security issues. I also handled MacOS administration and maintenance; a lot of our developers ran MacBooks and our Linux admins weren't fond of managing them. I also handled special projects, and tickets escalated from the Technical Support desk.
  • During this time, I received the "Shining Star" (employee of the month) award for successfully completing a large project for a very high-profile client. The project included setting up PCs provided by the client for our employees to use, enabling custom security software and RSA, and repairing any PCs that were damaged during shipping.

Data Import Specialist [On-Site]

Jan. 2013 — Jan. 2015

  • My first promotion after rejoining Adfitech moved me to the selections department. I was responsible for selecting the correct number of each type of loan to be audited, according to government standards and client requests. Once selections were made, I was then responsible for importing the relevant data into the system.
  • I wrote and maintained scripts on a per-client basis, ensuring that the client's specifications for selections were met. I also refined the process over time, allowing me to pass the responsibilities to a user who didn't need to understand the coding aspect and only needed to edit configuration files. This is what earned me the promotion to Jr. System Administrator.

Technical Support [On-Site]

Jan. 2012 — Jan. 2013

  • After a brief leave from Adfitech, I rejoined the team in the Business and I.T. Services department (BITS). I was expected to handle day to day user-related technical problems, such as printers, Thin Clients, email, password resets, and other common issues. We were also responsible for setting up user workspaces, including running and tipping CAT-5 and phone cables.
  • I also used this as an opportunity to automate tasks using my command-line and shell-scripting knowledge. This substantially decreased the time it took to help users with certain issues, and in some cases, allowed the users to fix issues themselves.

Image Import Specialist [On-Site]

Aug. 2007 — Jul. 2009

  • Initially hired as a shipping/receiving clerk, I was soon given an opportunity to learn about technology due to being recognized as someone who was a hard worker and quickly grasped new concepts. At the time, Adfitech was transitioning from auditing paper loans to using digital images of the loans. Clients would either transfer images to us via SFTP, or send CDs or hard drives with image files on them, and I was responsible for getting those images into the proper format and importing them into the system. This was the start of a new sub-division of the IT department, and we named it "Electron."
  • During this time, I learned how to use the terminal, write shell scripts to help automate tedious processes, and was introduced to Vim. As the workload increased, I was also responsible for training people who were new to the department and often had no previous technical experience.

Education

University of Central Oklahoma | Edmond, OK

Studied Psychology

Aug. 2003 — May. 2006

  • In college, I studied Psychology, which, when combined with my customer service experience, has greatly increased my ability to work with people of all types of personalities. I was unable to graduate due to personal events happening at the time. I am happy with the outcome though, as I almost certainly wouldn't be in this field had I continued down that path.

Skills

Languages and Frameworks

  • Ruby / Rails
  • PHP / Laravel
  • Shell Scripting (Bash / Zsh)
  • VimScript
  • HTML / CSS
  • SQL / GraphQL

Other Relevant Proficiencies

  • Web Development / REST APIs
  • Desktop Application Development
  • Object Oriented Programming (OOP)
  • Git CLI / GitLab / GitHub
  • Command Line
  • Vim
  • Linux / MacOS
  • MySQL / Postgresql
  • Docker / Vagrant
  • Agile Methodology / Scrum