Where to begin?

This project has been a long time coming, not only within the actual CS program at OSU as the bookend to an educational milestone, but also at work. I proposed the idea of completing my capstone project through Brainium back in the summer of 2021 and the wheels moved swiftly, from bringing this up to my engineering manager as a neat and mutually beneficial way for me to shift into the software engineering role to having the specs of an oft-sidelined project fully fleshed out and a mentor designated. Everything was set on the company side by early last fall and from there I simply had to wait, until now…

Being perhaps overly eager and not the most patient individual, I immediately jumped into Asana and spit out tickets, translating the specs of a MVP into task cards and identifying a laundry list of code components I could do away with once I created a clone of the project repository to make my board editor from. This was my first mistake.

Prior to “Potential Code Components to Disable” I had a card for “Code to Remove”

As I continued combing through the existing code for Mahjong, I continued to find large swaths of code that would simply not be needed in the Mahjong Board Editor I was to build. 

  • In-App Purchase functionality? Let’s get rid of it! 
  • Localization strings? We won’t need those for making Mahjong boards! 
  • Daily Puzzle logic? Once again, cut it out! 

My list grew with all of the pieces that I could eliminate from my cloned project, seemingly making improvements by reducing code and only holding onto what was really necessary for my project. I had it all planned out on my Asana board and included in my initial project setup the subtasks “Create new repository” and “Eliminate unnecessary code (see card)”.

Excited by this early, albeit minimal progress, in my weekly one-on-one with my engineering manager I shared my Asana board and asked to discuss making a new repository on Bitbucket. This is when I realized I definitely hadn’t thought everything through.

Although creating a new repository may have been nice, my manager pointed out that in the long run this would be problematic as changes made to Mahjong would not be applied to the Mahjong Board Editor. Hindsight is 20/20 and this should have been obvious to me, but in my enthusiasm to hit the ground running I hadn’t considered this key detail. Our conversation illuminated a better route—keep all the guts of Mahjong and instead create a new target. Much in the way our apps have a paid and unpaid target, we could create a new target for the Mahjong Board Editor that is in the same project. 

This seemed like the right way to go and I began talking with other engineers about making a new target, the consensus was that it would be tricky, but doable. Logan, a Principal Engineer at Brainium and my capstone mentor, agreed that this would be one route, but he had another idea for how to proceed with the setup and legacy of the Mahjong Board Editor.

Rather than creating a new target, in Xcode we could create a new custom build scheme. Our projects already include a few different schemes like DEBUG and QA, which incorporates a QA menu and various functionalities like advancing to the end of a game, and adding another scheme would not only be easier to do, but also allow for all of the benefits we want with having the Board Editor project exist in the same repo!

And so we’re off to the races with tomorrow marking the start of the Mahjong Board Editor Project and getting to shift some of those task cards from “To Do” to “In Progress”. Wish me luck.