I’ve contributed nothing during my time at Simple. Or at least that is how it would look if you just took the average of my commit contributions. I am a Net-Zero Engineer meaning I’ve deleted more code than I’ve added during my tenure as an Engineer at Simple.
Over the last three years, I’ve kept my eyes peeled and my ears to the ground looking for tech debt and abandoned experiments that could be condensed, refactored, or otherwise just straight deleted. Don’t get me wrong - I’ve gotten to work on a lot of projects and ship many things but I’ve found a particular joy in regularly spring-cleaning my virtual habitat.
A little background
The iOS codebase at Simple is seven years old, and for many things in life that doesn’t seem ancient. My favorite pair of rafting shoes are approaching their first decade of existence and I shudder at the thought of deprecating them, however, it’s different with some of our code. iOS as a platform just celebrated its 10th anniversary of allowing 3rd party developers which means that some parts of our current Simple app have existed for 70% of the time it’s been possible to exist. And iOS has grown rapidly since then!
We’ve had Swift for almost five years and it now accounts for 58% of Simple iOS’ codebase but we have a way to go for modernization. Luckily, modernizing to a less verbose language like Swift and migrating away from Massive View Controllers has made our codebase a little trimmer while still adding great features.
Thinking big to thinking small
Modernization and tackling large chunks of tech debt are really big projects and I felt really overwhelmed by all the things I wanted to change in our codebase. For example: I thought our networking layer was confusing, our deeplink process needed improvement, and we have some vestigial artifacts that could be removed by a dedicated surgeon. All these things were high on my hit list. Also, I wanted to help ship meaningful things that improved our customer’s lives and made them feel more confident with their money! What quandaries!
My mentor encouraged me to think small, find issues that I could reasonably do in less than half a day that could tidy things up a bit and just start slowly chipping away at tech debt.
Little wins, big gains
So about a year ago, every other Friday after code freeze, while I was breathing a deep sigh of relief from reviewing all the last minute PRs of the morning and making sure my product work caught the shipit train, I started a project.
I called my project Tech Debt Fridays 🎉 It wasn’t a glamorous project. There were no major wins or celebrations. It wasn’t an infrastructure overhaul that required a coordinated team effort. It was just a small incremental improvement.
Over the next weeks and months I kept my eyes out for those small issues. While I was doing product-focused work I’d take notes of bits and oddities I saw and on Fridays, I’d revisit them and tidy them up.
A year’s worth of successes
So in the past year, based on my small Friday afternoon project, I’ve managed to delete more code than I’ve ever added. I’ve made our codebase a little easier to navigate, a bit less buggy, and more enjoyable to develop in.
At the same time I helped launch Shared Accounts, Funding Schedules, Expenses, and a few more things that are still underwraps. I’m maintaining my net-negative contribution record by stepping into the role of a manager and (helpfully?) elucidating any place we can keep all our codebases a little tidier.
Disclaimer: Hey! Welcome to our disclaimer. Here’s what you need to know to safely consume this blog post: Any outbound links in this post will take you away from Simple.com, to external sites in the wilds of the internet; neither Simple or our partner bank, BBVA USA, endorse any linked-to websites; and we didn’t pay/barter with/bribe anyone to appear in this post. And as much as we wish we could control the cost of things, any prices in this article are just estimates. Actual prices are up to retailers, manufacturers, and other people who’ve been granted magical powers over digits and dollar signs.