A 2019 Freelance Year-in-Review

2019 was an exciting year for me professionally, both in my career as an Android developer with Fifth Third Digital and also in my work with Base11 Studios. It is the first year I’ve ever actually made a profit on doing freelance development work, and it was an exciting ride with a lot of lessons learned along the way. As 2019 comes to a close I wanted to take a minute just to share my experience and expand on some of those details.

Base11 Studios is a business owned by two of my closest colleagues in the Cincinnati development scene, Ryan Klein and Dan Bellinski. Over the last two years I’ve worked with them to help expand our catalogue of Base11 apps, both by writing code for Ryan & Dan projects and by building my own apps to release under Base11 Studios. As 2018 grew to a close last year - a busy year in which I launched both fuzZzy and OctoNote on the App Store and built Fit Foods Coach for Android - we got comissioned to build a POC and later a full product on a scale unlike any previous Base11 Studios endeavor.

So the story of 2019 is basically how I learned to deal with rapidly building a fully featured iOS app for clients, how that is different than building apps for yourself, how partnerships work in real life, and how you have to make hard choices when working in your free time - among other things.

From POC to Prod

In late 2018 and Dan, Ryan, and I worked on a POC prototype app to prove out image processing on iOS with an AWS back-end to detect specific types of documents. The focus was on capturing, processing, and predicting golf scores based on different types of scorecards.

We had an amazing experience in this first leg of the journey. I learned a ton about iOS’s Machine Learning and Vision API’s and had the opportunity to put them into practice in a practical sense. Dan and Ryan built some real IP on the back end processing of scorecards and learned a ton about AWS, and specifically AWS products and strategy at our scale.

At the end, we showed our clients our POC app and what we learned, and they decided they wanted to move forward with us to build out a production-ready version of our core feature set - scanning a golf scorecard and automatically detecting and calculating a handwritten score. Still minute in the types of startup dollars you hear about - this would be our biggest financial deal to date. The deal was structured as monthly payments to the LLC to build the prod-ready MVP app with a goal delivery date, at which time we’d negotiate our partnership.

Building Fast

In this first sprint we worked from January until early May on delivering our prod-ready MVP. This was an exciting time filled with a lot of coding in my free time. I took a deep dive on the Vision API’s I implemented in the prototype and completely rewrote the core scanning code to be performant. I built out the image manipulation portion of the code to re-shape images to the correct perspective based on camera/scorecard angle at capture. I overhauled and re-designed the entire UI, and implemented some inventive UI patterns to seamlessly work the user through the scanning, capture, and correction flow.

At the end, the three of us were completely wiped, but excited with all that we had learned and built. We presented our MVP to our clients, who were extremely excited to move forward to release. We gave them a TestFlight build of the iOS app and a sandbox IST environment to test on, and planned to meet up to plan our rollout.

Goal Alignment

A big lesson from this first MVP handover was one of expectation and goal alignment. When we met with our clients to demo our MVP, we were 99% of the way to clicking the release-to-prod button in App Store Connect with our simple but production-ready app. To them, while they might have agreed on the production ready portion, they weren’t ready to release our simplified effort to the wild world.

After testing our app in the real world, and running into inevitable problems with image capture in a real-life environment, they were not ready to commit to a prod release. While I had already made big improvements in image capture between our MVP reveal and next meeting, they seemed to have other fundamental problems with the scope of our first MVP.

So, after this first false start, we continued to work on tweaking and improving our MVP in our lead-up to an official meeting to plan our next few months of building towards their vision for an initial release.

Own Your Work

The meeting turned out to be one that defined our experience building this app, and tought us a hard lesson about owning our own IP in any project we built moving forward.

Before we met, Dan, Ryan, Cory - our business lead, and I all agreed that we were ready to work to bring this fully-featured app to production as partners with our clients. We had worked really hard on our core feature set, but understanding the effort ahead after this recalibration and seeing how much of our IP we were essentially giving away for free, we wanted to make sure we had some ownership of the project in the next phase. We came into this meeting with the goal to understand what our equity stake would be in this project/company and discuss what we would build and by when.

Our clients had done similar thinking, but of course had a different perspective on ownership. In their minds, we had taken their money to build and in doing so had voided our claim to equity. Why should they give us stake now, after already investing so much in this product - a product that they had already paid for? We didn’t disagree on the fact that we were paid, but we were staking our equity claim on our IP expertise and what we were about to deliver for them to finalize their fully-featured first release. To them, this calculation didn’t work out, and weren’t willing to meet us anywhere close to our equity goals.

We left the meeting with an understanding to continue our current agreement for our final month of the initial SOW, but to recalculate our cost to deliver the rest of the app - no equity offered.

While we transitioned to this more contractor relationship we couldn’t help but have this bad taste in our mouth from the exchange. We had no one to blame but ourselves for our decision to take payment to build our app instead of opting for equity only - but we also poured more than twice the effort into this app than we ever billed with the expectation in our gut that we owned some part of what we were building.

The lesson here is own your work no matter what. Software is worth so much more than what companies pay to build it, so when you have a chance to bet on yourself - do it! If I was re-negotiating our initial deal in hindsight I would demand the price we had initially charged +PLUS a large stake of equity in the finished product.

Graceful Goodbyes

After a few more months of negotiating and planning for phase 2, we were exhausted and disenchanted with the process. In the back of our minds we had our portfolio of apps that we actually owned and craved to maintain. We knew we would never have equity in the project, and any time we poured into the project would only be on a contractor basis. After some serious deliberation the team agreed that Base11 Studios and our apps that we own are our priority - and we walked away from the phase 2 work, handing over our code and accounts along with it. The separation was amicable, but disappointing.

The entire process was a hard-learned lesson, one that I’ll always remember as long as I do any freelance work.