I currently work as a consultant in the Salesforce ecosystem, specializing in building fully custom web applications on top of Salesforce. Our team views Salesforce not just as a CRM but as a versatile development platform, unlocking endless possibilities with the proper custom development efforts.
My journey in technology began in high school in the early 2000s, where I honed my skills building websites alongside my father. My early experience included working with HTML, PHP, JavaScript, ColdFusion, and Adobe Flash (this is showing my age). Over the years, I have worked on building a diverse and robust career in the tech industry, spanning multiple roles and domains:
- IT Specialist in the U.S. Army (6 years): Developed technical expertise and problem-solving skills while managing critical IT systems in a demanding environment.
- Associate Support Engineer to Principal Support Engineer in VoIP Software Company: Progressed from an associate to a principal role, gaining deep insights into troubleshooting complex systems and delivering customer-focused solutions.
- Service Delivery Manager: Transitioned into account management, managing 25+ clients across the West Coast and Canada, and ensuring seamless service delivery for a wide range of technical needs.
- Software Developer in R&D: Leveraged my self-taught programming skills to join the Research and Development team as a C++ developer, contributing to innovative projects and solutions.
- Java Engineer in Education Startup: Focused on greenfield development using Java, Spring Boot, PostgreSQL, and some Python, to build impactful education solutions from the ground up.
- Engineering Team Lead at Consulting Firm: Currently lead a high-performing engineering team in a consulting firm, driving growth and delivering strategic solutions within the Salesforce ecosystem.
My skillset incldues
- Java (8, 17, 21) :sun
- Spring Boot
- REST API development (wiht a little GraphQL in there as well)
- Apex (Salesforce language based on Java)
- JavaScript/TypeScript (vanilla and React)
- CI/CD work. (Jenkins, Bitbucket Pipelines, Github Actions, Gearset, Docker etc...)
- I am no expert in these areas but I have managed many a project with many different CI/CD structures and always get them working!
- I have dabbled in AWS, GCP, and Heroku over the years.
- C++
Technical Projects
- I am currently working on an LMS integration to our customers platform. I am implementing this with Java 21 with Spring Boot as a microservice. I will be utilizing Java 21 again with virtual threading in order to keep concurency and speed high. This project has a number of requirements such as listening for Course Status updates from the LMS, automatically creating logins for new employees, and auto enrolling those new employees to courses in the LMS. This microservice will function without a database as it is purely a transofmational and communication layer.
- At my current consulting firm, I have led numerous initiatives from conception through completion, including a highly impactful integration with a major payroll platform. This project addressed the challenge of synchronizing employee data between the payroll system and the platform we develop for our client. The goal was to ensure real-time updates: when employee data is modified in one system, corresponding changes are reflected in the other. To achieve this, I implemented a Java microservice using Spring Boot, hosted on Heroku. This middleware microservice operates without a database, functioning purely as a data transformation and communication layer. It features a REST API that listens for webhooks from the payroll platform, processes and transforms the incoming data, and forwards it to the client’s platform—and vice versa. Notably, I utilized Java 21 and the latest version of Spring Boot to maximize the efficiency of this service. By implementing Java Virtual Threads, I significantly increased concurrency and improved the system's overall speed and scalability. This project highlights my expertise in Java microservices, real-time data synchronization, and leveraging modern Java features to build high-performance, scalable systems.
- I designed and implemented a comprehensive CI/CD automation pipeline to streamline our development workflow, leveraging Bitbucket for version control and Gearset for deployment automation. Certain steps, such as creating promotion branches and submitting pull requests, remain manual due to resource constraints. While production deployments are not fully automated at the client’s request, the process is highly streamlined. Approved branches are merged into the MAIN branch via Bitbucket, and deployment requires a single button click within Gearset. The pipeline then handles the build and deployment automatically, ensuring reliability and simplicity. This implementation highlights my ability to integrate tools like Bitbucket and Gearset to create an optimized, flexible workflow that enhances development efficiency and maintains high-quality delivery standards. Key automation features include:
- Automated unit test runs triggered based on the target environment of a pull request within Bitbucket
- Automated Deployments to QA and UAT Using Gearset. Code merged into the respective branches is deployed seamlessly, ensuring QA and UAT environments stay consistently up to date.
- At the educational startup, I was responsible for the complete design and implementation of a logging microservice (cleverly named "The Logger"). This service communicated with the broader microservices architecture via a REST API and incorporated authentication to ensure secure communication. The microservice was developed using Java 17, leveraging Spring Boot for the application framework and Java JPA for seamless data access. It utilized a PostgreSQL relational database—though, in hindsight, a NoSQL solution would have been better suited for the use case, but we lacked in-house expertise in NoSQL technologies at the time. The logging microservice allowed asynchronous communication, using RabbitMQ as a queueing technology, enabling other microservices in the stack to send log messages without waiting for a response. This design significantly improved the overall performance of the platform, as the previous approach embedded logging directly within each microservice, consuming considerable system resources and slowing down operations. This project demonstrated my ability to architect scalable and efficient solutions while optimizing system performance in a microservices-based environment.
- At the VoIP company, I was part of a dedicated team focused on optimizing our installation utility and significantly improving its performance. The VoIP solution was on-premises, requiring physical installation on customers' servers. The platform was extensive, and the installation process was time-intensive. When I joined, the installation workflow involved a complete removal of the old version before performing a full installation of the new one during updates. My team re-engineered the installer to support incremental updates through patching and in-place upgrades for new versions. These enhancements, paired with a quarterly release cadence for patches, drastically reduced installation times and improved customer experience. This project required deep engagement with C++ and WiX (Windows Installer XML), along with extensive interaction with the Windows Service OS. Navigating and integrating with the OS at a detailed level was a critical aspect of the project, which further enhanced my expertise in systems-level programming and Windows environments.
On a non-technical note
- Transforming Development Processes for Scalability and Efficiency: At my current consulting firm, one of my earliest initiatives was implementing source control for our largest client, a critical transformation given their existing challenges. Prior to my arrival, the team of five full-time developers had worked for three years without any source control, resulting in inconsistent code quality, rampant bugs, and labor-intensive release processes requiring over 10 FTE hours per deployment. I introduced a structured Feature Branching workflow using Git and Bitbucket, which dramatically improved code management and collaboration. I implemented a robust code review process and integrated automated builds with unit testing triggered by pull requests. These changes enhanced our development efficiency, reduced defects, and established a scalable foundation for future growth. Toward the end of my first year, our client onboarded a major customer that had very large feature requests, nearly doubling their system usage. Meeting the increased demand required rapid development and delivery over a three-month period. The improvements in source control, quality control, and automation I spearheaded were instrumental in enabling the team to meet these aggressive end-of-year goals without compromising quality. This project showcased my ability to identify and resolve systemic challenges, implement best practices, and deliver measurable results under tight deadlines.
- Leadership and Mentoring: At my current consulting firm, I have truly been able to be a mentor to some younger developers. I have been able to lead initiatives with multiple green developers that were just getting into the industry and help teach them how to be better engineers. Most initiatives I run personally, have 2-3 green engineers on them which I get to help direct. We work together through the design phase all the way through to release. Getting the younger team members in on the design and requirements gathering phases really helps expand their views and see the whole process.
In my career, I have experienced just about every side of the tech industry that you can (sans sales). I began my technical career in highschool, working for my father who owned a small Web Development shop back in the 90s and early 2000s. We worked in mostly HTML/ColdFusion before CSS was a thing (those were the days)! I remember pushing my first files up to an FTP server using FileZilla and then going to the domain and seeing it live. It was exhilerating to say the least.
After highschool, I ended up joining the United States Army as a 25B (IT Specialist) and enlisting for 6 years, making it to the rank of Sergeant (E5). During that time I received multiple CompTia certifications (A+, Net+, Sec+, amongst others). I quickly worked my way into a position of leadership and was one of the highest ranking people in my S6(IT) shop (don't get me started on why an E5 with 3 years in the military was leading a Section on his own...). We owned and managed the VoIP stack for the unit which provided all internal phone services wherever we were.
After getting out of the Military, I joined a fairly large VoIP Software company in Indiana, getting my foot in the door in the support department as I didn't have a degree at the time. After a few years I felt burnt out and wanted to continue growing my career so I shifted into the Account Management side of the company becoming a Service Delivery Manager. I helped roughly 25 customers in their post sales needs for 2 years before realizing that having my hads in the technical work was truly where my heart was. During my time at this VoIP company, I had been self studying software development and working on little projects on the side. In my SDM role, I worked closely with the Engineering team to resolve bugs that customers found.
After building a rappor with themn for multiple years, I was a shoe in when an associate engineering position became available. I worked on the support side of the house, mostly fixing bugs and writing special customziations for special customers, but my team did also own the installer of our platform (it was an on prem service). We improved the patching and installation process for our product 10x, nearly eliminating any bugs or issues in it. I was promoted through the ranks fairly quickly, leaving Associate behind after the first year and preparring for another promotion in the not too distant future. During this time, I also completed my bachelors degree (BS in CS) from Western Governors University. I already got my foot in the door as an engineer, but I wanted to prove that I could get that piece of paper. Fast forward another year and the company had gone through an acquisition, with cutbacks looming.
After so many years in large organizations, I wanted to move on to where I could make a larger impact. I found a small startup (in my home town of all places) and came on as one of the first 10 employees. During that time, I was instrumental in architecture and dvelopment of a majority of the backend systems. I felt fairly new in my software development career still at this point, so I was blown away at the ability to be involved in these processes. I helped design and implement a Logging microservice that utilized RabbitMQ to prevent backing up the workflow after sending off the logging requests. I helped design and build our relational database architecture using PostgreSQL. I even helped our DevOps lead implement all of the automation such as builds kicknig off via Jenkins when PRs were put up and automated end-to-end testing running in all of our environments nightly. This was a great place to work and I wish I could remember all of the fun projects I completed over my tenure there. Unfortunately the leadership was unable to provide a concise direction for the platform and I didn't see it growing into the place I would like to spend my career.
I eventualyl landed with a local consulting firm, where I finally found a place that was growing and where my individual contributions would make a large impact. Over the past three years with the consulting firm, I have truly sunk my teeth into growing a fledgling engineering department. I was hired as a Senior Engineer with roughly 5 years under my belt at this point, but within the year I was promoted to Engineering Team Lead and had taken over managing the entire engineering department of 15+ people. I have spearheaded multiple projects such as implementing Source Control for our largest client, decreasing release times from 10+ hours of FTE work to less than 1 hour by utilizing automations that were made possible by implementing source control, and leading numerous high-growth projects for the client.
I harp on DRY and KISS mentalities constantly (where it was very Convoluted and not-DRY when I arrived) and have been striving for architectural standards throughout the application, such as SOLID (although we don't practice it completely, it's a great tool to make sure you are thinking through things properly). I lead an initiatve re-vamping our entire testing suite and multiple integration initiatives with large financial companies such as Paylocity, Paycom, and Stripe.
I have truly enjoyed my years in consulting but I am ready to move to to a company where I am not only able to make an impact, but truly own a product. I want my efforts to go directly to the success of the company I am worknig for and not supporting a 3rd party. I want to continue growing in my career with mentors that can still teach me new things. I'm looking for my next adventure!