Hello! I’ve been wanting to write about my professional journey as a software engineer over the last couple years, both for myself and in case it’s helpful to anyone else. This is about my foray into professional sports analytics and rediscovering my passion for software engineering along the way.
Part 1: My Relationship with Being a Software Engineer
I’ve always loved solving problems and building things. My relationship with being a professional problem-solver and thing-builder on the other hand has sometimes felt tenuous.
I’ve always felt a little guilty about that. Since I graduated with a degree in Computer Science from University of Maryland in 2015, I’ve been lucky to have excellent software engineering jobs with reputable companies. They were well-paying with great benefits, had relatively good work-life balances, and offered lots of resources to support me professionally.
I can’t exactly pinpoint why I didn’t always feel as comfortable as I wanted to in this profession. It wasn’t because of my coworkers; a lot of the folks I’ve worked with throughout the years have become lasting friends. It wasn’t because of my managers either.
In retrospect, I think it was a combination of a couple things:
The traditional style of work wasn’t compatible with my style of productivity and creativity. I’ve always been someone who performs best when they can step away and come back to a problem later. That could mean a lot of different things on any given day: taking the afternoon off and working at night, waking up early in the morning and getting straight to work, or just working a traditional 9-to-5. More generally, I think it’s hard to expect a knowledge worker to be productive for that many contiguous hours. At the time, the flexibility I wanted wasn’t baked into the industry as a first-class idea. The sudden conversation around that came during the pandemic felt very validating!
It wasn’t always easy to measure my contributions. The reality of big modern software businesses is that they are complicated. I sometimes felt like there were a lot of layers between the code I was writing and understanding the value it added to the world. Particularly in the face of the existential dread we’ve collectively lived through the last couple years, it didn’t feel satisfying for me to spend the majority of my creative energy feeling like a “cog in the machine”.
Whenever I found myself not enjoying my day-to-day work life, old reflexes kicked in and I told myself it was a privilege to have this type of job at all. This ended up looking like a big feedback loop between guilt and stubbornness, often manifesting in internal dialogues that looked like:
Me: I don’t feel like this style of working is great for me.
Also Me: This is objectively an excellent job and what you’ve worked your whole life for! If you don’t think that’s true, then there’s probably something wrong with you!
Me: Well, I don’t want anything to be wrong with me, so you must be right!
There were points where I seriously considered if this was the right field for me long-term. It was validating to hear from a senior coworker that they sometimes felt the same thing, but keeping a positive mindset remained challenging. Their advice to me was to remember what I enjoyed about this line of work in the first place. To the extent that I could, I abstracted my work life into those things: solving problems and building things with smart people.
Part 2: Using a Sports Analytics Side Project to Love Coding Again
In the spirit of solving problems and building things with smart people, and to revitalize my love for coding, I reached out to a close friend, Rob Moore, about starting a project for fun during the surplus of time we found ourselves with during the pandemic. Rob also has a professional and academic background in engineering and data visualization, and we’re both interested in sports, so we decided to build something around that. We’d talked about doing this since college and we were finally going to make it happen.
We found that the NBA was a good place to start since a) we were both big basketball fans and b) because the NBA has a thriving online analytics community. After a few iterations of name ideas1, PerThirtySix was born.
With any creative endeavor, I find it’s best to come up with some constraints early. The best thing we did with PerThirtySix is that we came up with constraints that were complimentary of our existing skillsets, ambitious enough to push us, and realistic enough to prevent us from giving up. At a high level, we decided we wanted to build:
A website that hosted several unique visualizations.
Tools that would every day as games were being played.
An outlet for our writing, whether in the form of articles or explanatory text for the visualizations.
We purposefully did not set out to:
Thoroughly break down NBA basketball at the X’s and O’s level.
Build a fully-fledged site that featured every single statistic the NBA offered.
We found this set of goals and “non-goals” to be a good combination of complimentary, ambitious, and realistic. With that, we were off!
There were lots of interesting technical challenges along the way, the details of which I can save for a future post, but in general what I gleaned from the first couple weeks of standing this project up was that any goal can seem unachievable until you break it down into smaller parts.
Put another way, if I were to consider our overall technical objective:
Build a pipeline that refreshes data daily and updates an intricate and shareable visualization which also has expository text on a live website that is SEO-optimized with an integrated newsletter.
and restructure it into this line of thinking:
Okay, I’m building something that uses data. I probably need a database. Although, maybe not? What are my options here?
Well the advantages of a database are …
But if I can avoid a database and just use static files in a repository, it saves us the headache of …
Let’s do a database since it’s not prohibitively too much work to set up and it’ll keep things flexible in the future. Okay, now should I use a SQL or NoSQL database…
…
Okay now we have a plan for the data, how do we make it update daily?
…
then things start to feel much more accessible. Breaking down large chains of thought into smaller pieces means that each one is something you can address and explore in a reasonable amount of time. This is especially true in a low stakes project like our’s where the goal was primary to just build something, not to build the most robust and future-proof piece of software we could. The ability to sensibly break down these decision points is something that can only really be improved with experience.
Over the course of 2021, we built out some tools that I’m really proud of: The Passing Wheel, The Hustle Index, an MVP Tracker, and an interactive Shot Chart Tool.
The reception to our project in the aforementioned online NBA community was really motivating too. A few of our pieces, particularly an analysis of shooting in the NBA Bubble, circulated on Twitter and have since been linked from sources like The Athletic.
We were excited to see what was next.
Part 3: From A Sports Analytics Side Project to A Sports Analytics Job
If the last part is about setting ourselves up to have good luck, this part is about good luck coming to fruition.
In June 2021, we cold-emailed about a dozen prominent folks in the NBA analytics community, mainly curious to get their thoughts about where we could go next with this project. We got one reply back, and it was from Ben Falk of Cleaning the Glass. The three of us emailed back and forth for a couple weeks about our goals for the site and a lot of Ben’s learnings from his own work.
We eventually all hopped on a call together. As fate would have it, Ben was just starting the process of posting Cleaning the Glass’ first ever job listings. After determining that it would be both a good technical and cultural fit, I joined Cleaning the Glass in August 2021.
At Cleaning the Glass, I’ve worked all over the stack on building tools for NBA teams. So far, it’s been a great ride!
Working full-time in a domain that I was interested enough in to build a side project has also revitalized my general love for engineering. Even discounting the domain, working on a small team has been a great fit for me so far. For someone who too easily falls into the trap of feeling stagnant at work, the opportunity to work at all layers of the stack from app development to data analytics to scaling up and deploying a pipeline keeps me interested and makes me feel a strong sense of ownership. I’ve also found myself feeling more energized to work on side projects and find fulfillment in other areas of my life, such as volunteering.
Beyond the work itself, the flexible arrangement that comes with a small team has definitely been complimentary of my ideal productivity style. Just thinking about my own social circle — I know people that exclusively love working from home, people that swear by the non-replicable interactions you can only have in an office, and people everywhere in-between (I personally have achieved a life-long goal of being a regular at a cool coffee shop). I think my biggest takeaway on that front is a simple one: everyone deserves the situation that works the best for them.
And then there’s the cool part of working with NBA data all day! I was a little worried I’d be less excited to watch basketball on my own time than before, since it might just feel like work, but I’ve noticed the opposite effect. It is really cool for me to have something of an insider’s view into the analytics part of the game now and bring that outside of work.
Part 4: Closing Thoughts
I definitely feel like I’ve gotten lucky in my experience here. But I also think that there are some replicable steps for setting yourself up to have good luck. Whether you’re specifically looking to get into sports analytics or generally rekindle your love for your engineering or data, here are some things you can try:
Anchor yourself to what you fundamentally like about the field. I strongly believe that there will be days doing any type of job that will feel like a drag. Anchoring yourself to what drew you into the field in the first place will help you get through those types of days. And if you’re having trouble doing that over extended periods of time, that’s also a helpful data point.
Build things. If you’re looking to break into a new field, especially a competitive one like sports analytics, it helps to “do the job before you have the job”. Ben talks about that in good detail here. Anecdotally, I’ve seen lots of friends break into new fields and start their own businesses using side projects as a stepping stone. Most things that look like big jumps from the outside tend to be a series of smaller jumps.
Don’t be shy. The NBA analytics community was welcoming not only when we put out good content but also in helping us learn when we made mistakes. In my experience, the deeper you go into a niche the more likely it is that the people you meet are friendly and eager to help. If you’re brand new, try to find a mentor. If you’ve been doing data or engineering work for a while and want to break into something like sports analytics, build something out and share it. What’s the worst that could happen?
Thanks for reading this post! If you want to keep up with me, feel free to follow me on Twitter.
I was partial to the “Technical Owl”, but realized it wasn’t a great name when I had to explain to my friends that it was a pun on “technical foul”.