The TurboTax mobile app was my first product to work on out of college as a software engineer, and I was quickly drawn to the uniqueness of the mobile space. I had never developed on Android in my life, and here I was learning on the job and delivering features for a heavily used industry application. I’ll be honest in saying it was challenging at first being in a framework I was completely new to, but I quickly learned from others and got familiar with the Android framework.
One of my projects was to refresh the design of our product line up gallery in the TurboTax mobile app. This helps the user select the TurboTax product that best fits their tax situation before they sign up for an account. Around this time, TurboTax Live launched and the company was adding new TurboTax products left and right.
This led me to think about a dynamic solution where I could easily add another product to the lineup gallery with one line of code change. Furthermore, I wanted the gallery to be dependent on a percentage of the width and height of the phone screen so I could easily define the percentages for the multitude of screen sizes on various Android devices, including tablets. Determined to make my team’s lives and my life easier with the upcoming expected product changes, I set out to take on this grand challenge.
I can’t tell you how many boxes I drew on a notepad to get the calculations correct. I would think I had them right, load up the app excited for it to work, and then nothing would show up on the screen! It’s frustrating coding UI and nothing you coded is anywhere to be seen. On top of the calculations, I also had to ensure the animations were properly working. With my new architecture, I programmed the gallery from scratch, looking at the old gallery code every once in a while for reference.
Regardless of the countless math equation changes, I figured it out after about a month and it was ready for production. Everyone was blown away and I was proud of what I accomplished.
Here’s where open source came in. I worked on React during a previous internship and was amazed by the ease of using open source node modules for front end web UI. I asked myself, “Why isn’t this used more in Android UI?” That’s when I set out to open source what I had created into a library for other Android developers inside and outside of Intuit to use. I had never created an Android library before, but I thought to myself how hard can it be? I extracted the UI gallery from my code and refactored it into Kotlin (my favorite programming language) — you can learn more about my thoughts about Kotlin in another Medium post here! I also took advantage of the functional programming constructs Kotlin has to offer so my code had immutability. Both Kotlin and functional programming made my library less error prone and easier to unit test.
With my mentor’s advice, I created a sample app using the UI library in a different context than a product lineup, an image gallery. This really made me think through how the consumer of the library would be interacting with it and how to make that as easy as possible. I always like to put myself into the shoes of my consumer to ensure that their experience is as painless as possible, like adding proper documentation for self-help so the developer can get started right away on their own. This reflects the Customer Driven Innovation (CDI) and Design for Delight (D4D) principles that we use at Intuit to innovate.
I went through the rest of the legal review and licensing, published the library to jCenter, and on March 29th, 2019, Truffle Shuffle was officially open sourced on Intuit’s Github. It is also featured on Intuit’s open source site alongside amazing other open source projects started by Intuit engineers.
Since then, I’ve had developers across the globe, from the United States to Russia to China to India, use the library and I’m excited to have the worldwide developer community build on top of what I created through open source. I’m proud to say that I am the first woman engineer to release an open source project for Intuit on her own and I know I will not be the last. I believe we are better together as a community and with open source, we can create anything we set our minds to.