Josh Holbrook
Posted on February 18, 2024
This post originally appeared in a GitHub pull request.
When I was in college - roughly 15 years ago - I created my resume using LaTeX, an old typesetting language used largely by academics working in math and physics. I was a math minor in college, and the history and aesthetic of LaTeX deeply appealed to me. I wrote other documents in LaTeX as well in that era, such as my thesis, but my resume was the one document that remained in LaTeX form well after I outgrew my academic phase and entered industry as a software engineer.
Over time, my resume evolved from a simple document using a class found on a long lost personal website into a completely custom framework. The default computer modern font gave way to fonts hand-selected on the advice of a designer colleague from Gizmodo Media Group. The copy-pasted spaghetti expected from a novice developer evolved into a declarative, modular DSL that decoupled content from presentation. Simple build scripts turned into a Makefile, and eventually the build even leveraged Docker. It became the ideal way for an autistic software developer to build their resume - almost manageable.
This was, however, not without difficulties. Styling separate from content is great, until an edge case in the content calls for custom styling. Declarative languages are great, until the language isn't fine-grained enough to support deeply tailored resumes. When issues did come up, I found myself struggling to remember LaTeX well enough to be effective, as this document was the only thing I used it for. But these weren't enough to deter me.
But in 2024, I began a new job hunt, and learned that my beautiful, modular resume has a serious problem. While human beings enjoy reading a typeset resume in pdf form, most employers import them into an Applicant Tracking System (ATS) which effectively scans and imports them back into plain text. Once the content is in the ATS, they're able to use automatic systems - often driven by AI - to scan resumes for relevancy. These systems have been around for a long time, but their use has become nearly ubiquitous over recent years. In the 2010s you could get away with a resume which didn't import cleanly, but no longer. ATSs target resumes written in Microsoft Word, meaning most resumes written in LaTeX don't import cleanly into these systems. Mine, at least, was in serious trouble.
I deeply considered writing a new modular system using Python, yaml and python-docx-template. I even got as far as converting the DSL to yaml and loading it into a data structure.. But swimming upstream was becoming difficult. How was I going to sufficiently customize my resume given the limitations of the DSL? How was I to handle the inevitable formatting issues that would come from procedurally generating a Word document? How could I be confident the generated documents would parse cleanly in an ATS? Was I ready to maintain not just a LaTeX class, but a bespoke typesetting system built on Python?
After using LaTeX to typeset my resume for nearly 15 years, I'm finally adopting the techniques of a "normal person". I consulted with my siblings, both of which have experience with career counseling, who taught me how to build a workflow and a template using Microsoft Word. I moved my content out of my DSL and into an "everything" document, and manually pared it down into a simple two-page resume. I tested the results by copying and pasting the pdf into TextEdit, which is widely considered a good proxy for testing with a real ATS. Some things were lost, but a lot of that was baggage. Things are better this way.
It feels like the end of an era. I can't say that I love LaTeX in 2024 - I outgrew the aesthetic long ago. But I did come to love the history I'd built up over the course of a long-running project. I loved the style I'd iteratively evolved towards. I loved the simple language I'd developed, and the modularity it afforded. I loved how it felt to rebel slightly against the strain of corporate America. But contradictions always come to a head, and all good things come to an end.
Of course, with endings come new beginnings. I plan on using a standard workflow for now, prioritizing my resume's effectiveness and expediency over my coding sensibilities. But as I become more confident in the new world of Microsoft Word and ATS-friendly documents, I may re-implement some of the ideas I developed during my LaTeX era. Lot all lessons need to be lost - at least, one can hope.
I am available for hire! View my resume in Word or PDF formats at https://github.com/jfhbrook/resume.
Posted on February 18, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.