Puffin: An 80 Hours to MVP Retrospective

After 80 hours of development on Puffin, a work planning/tracking app for IOS, the buzzer has sounded and it’s time to look at what I accomplished.

The purpose for this MVP was to replace the spreadsheet that I had been using to track my work session.

Work Session Spreadsheet
My existing mid-tech method for tracking my work

What I managed to accomplish at the end of 80 hours

What went well?

Gaining clarity on the tracking portion. My attention was initially focused on the standup aspect of the app, so it wasn’t until I created a spreadsheet to track my work sessions that my understanding of what I wanted became clearer. I don’t have a desire to track hours specifically, that feels like a regression to my previous 9-to-5 work life. But I do want is a way to know when I am working and for how long in the overall context of my life. I’ve become more protective of my free time and wanted to make sure I wasn’t spending too much time working on any one project. Conversely, I still wanted to make sure that each project was getting the attention that it deserved.

What didn’t go well?

I spent an inordinate amount of time wrestling with the a few things that I thought would go smoother, namely the calendar. I’m using a 3rd party component because I wanted to save time. I soon discovered that my situation would still require making tweaks. I need a weekly view of the calendar and that means that I still have to adjust some of the settings. I still have to create a way to display the relevant information for a given date range. That said, it presented an opportunity for me to learn more about calendars and date calculations (Yippee!!) and this can be applied to an existing product Gobo.

On the project level, I didn’t do a great job at switching between this project and others. Part of the reason I’m working on Puffin is to create a tool that allows me to move more seamlessly between my projects.

What I learned?

I need to tone down the color usage in my designs.

Simulator Screen Shot - iPhone 6s - 2018-09-24 at 09.29.04
So much Blue!

I have a habit of picking a primary color for each new app idea and having it permeate all aspects of the design. While it works well for the icon creation portion of the project, it tends to make my screens overwhelming. I’ll change my approach to using color more judiciously, which will keep my designs in line with where things are now. I also find that using non-standard fonts is distracting and feel out of place on my device.

On the coding front, I experimented with creating all of my views in code, instead of using storyboards. I’ve tried going full storyboard in the past and now was on the other in of the spectrum. I learned so much about layout with this approach although it was a bit slower. Taking advantage of playgrounds in the early stages should help create a faster feedback loop. I’ll be taking a hybrid approach moving forward as I still see some advantages in using storyboard in my process.

What still puzzles me?

The app is still missing crucial connective tissue. While I’m clear on of the individual components that I need/would like to have, I’m struggling to create a cohesive vision. One of my biggest challenges is determining the correct entry point into the app. I’m not satisfied with the current information hierarchy. There are already too many tabs and I haven’t gotten the planning portions in.

What would I do differently?

My primary focus when I started was in the daily standup aspect. I was attempting to replace my daily journal with an software solution. It wasn’t necessarily the wrong way to go, as I made discoveries along that allowed me to throw away much of my early work. And that’s fine. Early versions don’t have to last. They’ve served their purpose as prototypes that I could use, learn from, and discard. As in writing, I have no issues with “killing my darlings”.

I’d also document the intermediate stages, There is value in being an “app historian” and capturing thoughts and decisions throughout the stages of development. Tracking what assumptions were made at the beginning and how/why they changed could be helpful further down the line. When revisiting features, there may be valuable historical information in determining the optimal time for if/how/when they should return.

Is it worth it to keep working on this? Why?

I’m still deeply interested in seeing this product continue. I find myself using the session tracker portion daily and it has replaced the spreadsheet in conveying how I’ve been spending my time. I’ll continue development by integrating the missing components and discussing them in further posts.

This MVP was a success and I’m looking forward to applying the lessons learned to the next one.

The Least You Can Do

Mom: “Ray, the least you could do is…”
Dad: “The least I could do is nothing.”

I often heard this dialogue between my parents when I was young. My mother would express displeasure about something that my father did/didn’t do. She would express a desire for a little more effort (usually in the form of some small gesture).

“Ray, the least you could do is…”

His response was always the same.

“The least I can do is nothing.”

It was my earliest introduction to my Dad’s personality.
It was sarcastic.
It annoyed my mother to no end.
And to a 10-year old weened on comedy, it was incredibly funny.

I was always looking for ways to inject the phrase into conversations. I even tried to mimic my Dad’s delivery, down to the smirk, head tilt and raised eyebrow.

As an adult, I would learn 2 things:

  • No one I dated would ever find it humorous/clever and no amount of nodding and winking would save me
  • The Least You Can Do is a powerful concept when used for good

On the path of 80 Hours to MVP, I found myself revisiting and repurposing that phrase. Instead of stopping at literal interpretation, I turned it on it’s head. By doing two simple things, I turned what was a joke into an effective approach for maintaining momentum in pursuit of my goals.

The first part is turning the phrase into a question. What is the least I could do? I find that asking questions keeps thoughts flowing and prevents me from getting stuck. For example, when I’m debugging, I ask myself questions to work my way through the current state of a problem to a viable solution. However, that alone would not transform the phrase into a powerful tool.

The second, equally important, part is adding an actual outcome. By providing a narrowly defined outcome, I can devise a pathway to completion. What is the least I could do to achieve the desired outcome?

I find this approach effective at both the macro and micro levels. In determining the success metrics that I defined in the Kickoff Interview, I have provided the macro version. I know what would make this endeavor successful in my eyes. The least you can do is the defining trait for the MVP.

Success requires consistent action. The difficulty is in the implementation and it’s easy to get stuck in the details. If you’ve spent too much time working through issues, frustration and discouragement can set in. Many projects are abandoned when some seemingly trivial tasks become more difficult and start to eat away at your time. It is at this point that you’re most susceptible to quitting.

You must resist the temptation to weigh your endeavors with the scale of frustration.

It is at this point that going back to the mantra of the least you can do proves effective at the micro level.

For example, in implementing the MVP for Puffin, I knew that I wanted reports on my activities. I knew implementing something robust would take too much time. Even implementing a chart library was going to eat into my development schedule as there was still a learning curve. So I asked myself, what’s the least I can do to get some metrics for my work activity? I decided that instead of providing a fancy chart, I could provide aggregate date (e.g.. total # of sessions, total time worked). In doing so, I had one of the solutions the app was designed to provide (how much did I work today?).

Another example of where I use this technique is in fitness. It’s hard for me to stay in shape on the road, since I tend to get tunnel vision on projects and am loathe to actually go to the gym. I solved this problem by asking what’s the least I can do to maintain a basic fitness level? My MVP of fitness is 30 minutes of HIIT training 3 times a week. And even when I’m struggling with motivation, I take it one level lower and focus on the least I can do to kickstart this workout. For me, the answer is usually a minimal action of few basic stretches/jumping jacks just to get my body warmed up. I then build on the inertia and add another small chunk and before I know it, I’ve completed 30 minutes.

Setting minimal metrics provides a clear stopping point as well. If I lack knowledge or experience in an area, I can complete the minimal actions given my current level and return at a later time, when I’ve acquired sufficient skills. By putting an cap on this iteration and enhancing it later, I minimize delays, the accompanying frustrations and maximize efficiency.

Make the least you can do work for you.

80 Hours to MVP: Kickoff!

“Begin with the end in mind” – Stephen Covey

The first step in our 80 Hours to MVP requires us to make a jump forward in time. For this, we’ll take a cue from author Stephen Covey and “Begin with the End in Mind”. It is the 2nd habit covered in his bestseller The 7 Habits of Highly Effective People.  Using visualization, we can prepare ourselves for success. You’ve no doubt heard countless stories of how athletes use visualization to prepare themselves for success on the playing field. I was introduced to this technique in an undergrad Sci-Fi Literature class in which I was tasked with writing a resume representing my completed writing career. It was a great opportunity of project myself into the future and look back at the choices that I would like to have made.

In applying visualization to my development projects, I complete a self interview about the completed project, which helps get my initial vision out of my head and into a tangible form. I’ve used various templates but most recently I’ve settled on using questions that I’ve seen on Apple’s App Store “Meet The Developer” section. Getting featured in the App Store is a goal I’d like to achieve so it’s not a stretch to imagine how I would answer these questions.

Let’s take a look at the questions and see how they can help.

What problem were you trying to solve with this project?

Starting with our WHY is critical as you should have a clear idea of the problem that you are trying to solve. It doesn’t have to be earth-shattering to be worthwhile, it just needs to be clearly stated. Referring back to the answer to this question during the development process can help you stay on track and prevent feature creep.

What was your biggest challenge?

This is a funny question to me because I have always been wrong in retrospect. Imagining the future won’t prevent mistakes from being made. There are many assumptions in the beginning, particularly because the are so many unknowns.

What turned out to be easier than you expected?

This question is similar in nature to the previous one and can be just as difficult to answer. There’s probably at least one aspect of this project that will be much easier than initially imagined.

At what point did you realize that this was going to work?

What would the project look like/do at a minimum for it to be viewed as a success. It is that point at which it is determined to “work”. Use this to define success milestones for the project.

How and where does everyone work on the this project?

Answering this question provides an opportunity to get a handle on logistics. Are you working on this project alone or with others? If working with others, how will you communicate? How often will you meet to discuss progress or issues?

What advice would you give to your younger self?

This question was the impetus for the 80 Hours to MVP approach. After completing the Gobo app, I realized I could’ve gotten to a usable version much sooner by thinking/shipping smaller. There will almost always be something that you’ll wish you’d known when you started.

What’s next?

After the MVP is complete, what are the next steps? Think about both the obvious (e.g. additional features, other platforms) and not-so-obvious (e.g. marketing campaigns, press releases, support) actions you can take.

Once you’ve completed the MVP, go back to this initial interview and go over the questions.

  • How accurate were you?
  • Which assumptions were right/wrong?
  • What would you do differently?
  • Are there any additional questions that you would’ve have asked at the beginning? (feel free to add those to your template)

80 Hours to MVP

I started 2018 with a grand plan of having 10 apps in the App Store by year’s end. I would split my time between developing apps and embarking on a new career in voice over. I had broken the plan down into four 13-week segments, each with a one week retrospective/break at the end. By the end of the 2nd quarter, it was obvious that my approach was not providing the visible gains that I expected. Only Gobo, an expense tracking app for iOS, was on track for release, with older projects stuck in Development Hell. The cascading effect was that my blogging had stopped as well (what was I going to write about if I wasn’t making “progress”?)

My frustration was growing. It wasn’t as if I wasn’t working every day. I had a daily standup, task lists and bi-weekly retrospectives. All for a one person team.

Could the problem be some flaw in my process?

It is too Agile? Not Agile enough?
Do I need to use storyboards? Should I write everything in code?
Should I use React?

Why was I even doing this in the first place?

This entire endeavor was self imposed. If I didn’t want to continue, I was free to stop.

So what was the point of it all?

I simply enjoy making stuff. Completed projects provide self-affirming feedback, further powering the confidence/competence cycle. It’s a drug with a potent, sustainable high.

So rather than packing it in and accepting defeat, I’ve decided to try a feasible middle ground, between the equally disappointing quarter length projects and the hackathon/death marches that left me physically and mentally drained.

80 Hours to MVP

Nothing earth-shattering. Any product idea has to become a deliverable product within 80 hours of starting.

And then it’s DONE.

Pencils down.

Bottle it and ship it.

Why 80 hours?

While working on my 2nd app, GWTA, a simple transit app, I tracked my hours and saw that from the beginning to App Store submission, the process had taken me 79 hours. So I settled on 80 hours as a manageable time frame. It’s large enough to engage the entire creative process without feeling burn out. It’s also short enough to force design/development decisions to be made. GWTA doesn’t have all of the functionality that I wanted in a first version but it exists.

Done is better than perfect.

What’s Next?

My next 80 Hours to MVP project is my work tracking/daily standup app, Puffin. I’m starting over with it, keeping only the app icon that I designed earlier this year.

January 2017 Earnings Report for The Cocoa Nomad

Consulting: $0

I did pick up consulting work in January but because I use cash basis versus accrual for accounting, it won’t show until next month. I was able to do some work for a former client who is finally shutting down the project but needed some final artifacts delivered. There may be additional work via referral in February as well but I’m not counting on it. I’ll keep networking to pick up some small projects to sustain me while I work on my primary apps.

iOS App Store: $10.77

A further decline in sales for my neglected apps. Fact is, I absolutely deserve this. I’m contemplating a shift away from paid apps to freemium or ad-supported, a decision that pushed back my release of the Capoeira Songs update. Team Tryouts update is also on hold.

Amazon: -$7.17

First the Falcons lost in the Super Bowl, now this. While I didn’t expect to recover all of the sales from the previous month, I never expected a negative. It’s a dead period for shopping in general and toys in particular (I guess the kids haven’t broken those Christmas gifts yet.)

Total: $3.60

Ouch! I went from pocket money to couch cushion money. Actually, I’m more bummed about the Falcon’s loss than my earnings. I’m back to working on a steady basis after the final month of Remote Year. New products are coming soon and I’m still excited about the future. There may be a new category for the earnings report as early as next month.

What About Expenses?

After the last earnings post, I was asked why I didn’t include expenses. The primary reason was that I just wasn’t thinking about it (it’s an earnings report not an income statement). The secondary reason was that I didn’t want to skew the expenses with the Remote Year costs (avg. $2041 month in program costs, much higher that what I will be spending going forward). Now that my gap year is over, I can provide a clearer picture of what it actually costs me to live and build my leveraged income streams. Those costs will be included in the Feb 2017 report.

Super Bowl LI and Making Changes

When the Falcons managed to reached their first Super Bowl in team history in 1998, I was beyond excited. I hosted a party at my apartment and invited many of my friends. My disappointment in the loss was mitigated by the events portending defeat leading up to kickoff. Delays in getting the food delivered and losing both the power and cable had already dampened some of my excitement but the Broncos were always in control of that game. It’s easier to deal with losing when things start out poorly.

Far more heartbreaking was the Duel in Dixie. In 1981, I watched the game in my living room, in my red Falcons cap and “Steve Bartkowksi” pajamas. It was a ritual I held onto long after I had outgrown them and the PJs started to look like a baby’s onesie on me. The team was playing well, taking a 14 point lead into the final quarter. Despite this, the Cowboys managed to score three touchdowns and mount a comeback victory.

The Falcons would return to the big game after 18 years. In that time, I had “grown up”. I bought a house and had a real career. I had settled down. I was no longer that kid standing on the couch, screaming at the screen.

And yet after an epic collapse on Sunday, I was an 8 year old again, back on that couch. What 44 year old man cries after a Super Bowl loss? I didn’t play in the game. I’m not employed by the organization. I’m don’t even live in the city anymore.

For the majority of the game, the Falcons were doing the right things.

Post game, there were tons of armchair coaches, who “knew” what the team should’ve done.

Down 28 – 3 at halftime, the Patriots had the advantage of knowing they needed to change. It’s an easy decision when things are not working. Choosing between staying the course and making huge changes for the future is difficult. That’s what makes this particular loss so hard to take. I’m writing this from Thailand, having quit the best job I’ve ever had and sold most of my possessions to become an location independent entrepreneur.

I was doing all of the “right” things before I left but still felt it was time for major adjustments. I’m certain there are armchair coaches questioning my decision as well.

What major adjustments are you willing to make though things are going well according to your game plan?

Earnings Report for the Cocoa Nomad

Why Share This?

When I started blogging a few years ago about my development experiences, it was about sharing information. The iOS dev community was particularly welcoming and always willing to share with me. Additionally, I’ve always appreciated the transparency of developers and entrepreneurs who shared their sales data. It’s important to show the entire transition so as to never incorrectly access future successes as instant.

Documenting this experience is also about accountability. I’m making lots of mistakes by commission or omission and making note of them is only part of the process. Quantifying those mistakes is equally as important as sharing them. As Peter Drucker famously stated “you can’t manage what you can’t measure”.

December 2016 Report

Consulting: $0

I’ve not done any consulting work. After leaving my full-time job, I took a 6 month sabbatical as I needed to recharge and wanted to explore other business opportunities. This will most likely change in the next few months as I’m working toward a balance between my passion projects and some paid work.

iOS App Store: $17.20

This number is not the least bit surprising. My existing apps haven’t seen updated in 4 years and the sales reflect that. I have an updated version of Capoeira Songs that needs a bit more art work and it should be ready for release soon. While I don’t expect a huge increase in revenue for this app, I felt the rewrite was worth the effort. Next up is the Team Tryouts rewrite.

Amazon: $13.92

This is the most disappointing figure. My experiment with retail arbitrage has not been nearly as successful as I’d hoped. The toys (which few exceptions) have not sold well and the expected Christmas bump just didn’t happen. I naively assumed that everything would be gone by the new year. I may have been too aggressive/optimistic in selecting products. I could’ve paid closer attention to the sales ranking of certain products instead of focusing so much on margin. What good is high margin on a product that doesn’t sell? I’ll be faced with decisions about how to handle the inventory if the storage fees start to become a problem.
Total: $31.12

You probably have more money in your wallet right now than I made last month. Despite the low numbers, I’m pretty excited about 2017. I have a renewed interest in development and the amazing travel experience of 2016 was vital to that.

Thinking of a Master Plan

I left my job of 3 years in April to focus on developing my own apps and exploring other ways of making a living. I was burnt out and needed a sabbatical. Six months later, I’m looking to pass the mantle of President of Team Hangout to someone else on Remote Year and get back to work. When I left for Belgrade 60 days ago, I assumed that I wouldn’t need to return. I sold most of my possessions. I left someone I trusted in charge of selling my house. I assumed that I would be gone for at least another 6 months, yet I find myself back in the United States.

So What Happened?

The best laid schemes of mice and men, Go often askew

During my presidency, I spoke with a fellow Battuta who is making a living selling private label products on Amazon. I was familiar with drop shipping from an entrepreneurship class in grad school but hadn’t given online selling any serious thought since.

I decided to dip a toe into by creating an Amazon account and selling my books/electronics. While most of the items that I owned were not worth listing, I found a few gems that fetched a decent price, like a chord book of Prince’s The Hits that sold for $100. After watching my sales for a few weeks, I was hooked. The only problem was that I was out of inventory.

So What Now?

  • I’m sourcing products for retail arbitrage for FBA while I’m stateside. I’m both excited and nervous because I’m not sure if this is going to work. I’m currently packing the first shipment of items to send to Amazon. I’m still researching private label products.2016-10-16-12-55-14
  • I’ll continue working on app development (more app-specific posts to come). I haven’t lost my love for creating things, I just needed to diversify my attention (and income sources).
  • The house is still not listed for sale. The situation is further complicated by the effects of Hurricane Matthew. My house sustained damage but thankfully it’s not as bad as the countless others who have been displaced.
  • My tentative plan is to remain in SE Asia after the conclusion of Remote Year. It is inexpensive, the food/weather/people are awesome and there are communities of remotes that are working on both types of businesses where my focus lies.

 

Coding By Train: Leg 2 (Washington, DC to Chicago)

After a snack in Union Station, I  boarded the train for Chicago. There was an option to make reservations for dinner in the dining car. Seating was limited and community seating is used, providing an opportunity for you to meet new people. I opted to skip dinner in lieu of hanging out in the observation section with few beers (shocker!). This time the only decent offering was a Sierra Nevada IPA. I spent most of the early evening looking at the beautiful trees, which had started changing colors and reinstalling Xcode. I made the mistake of not checking for compatibility of Yosemite with older versions (which I use to support legacy apps). Without wi-fi on this segment, I was forced to consume 1.6 GB my precious data plan’s monthly allocation. Note: Xcode 4.6 still does not run on Yosemite.

The most interesting part of the trip after sunset was listening to a One Direction look-alike try to chat up a young lady traveling solo. All was going swimmingly until his dad came over and started making jokes. I closed out the evening with some light reading (Marcus Zarra’s Core Data). I didn’t get much actual coding done this day but still felt productive.

As the first overnight portion of my trip, the lingering question was “Did I make a mistake in not getting a sleeper?” While the coach seats are roomier than anything I encountered on planes or buses, the reclined position was not optimal for sleeping but I managed to make do. In the future, I’ll have to invest in a neck pillow. Having no idea how far we traveled, I awoke thinking we reached Cleveland but kept thinking “this looks too nice. Why do they call this the Mistake By the Lake?”. After checking my map, I realized we were in Pittsburgh and it was only midnight.

For breakfast, I opted for scrambled eggs and grits, a brave choice considering I was no longer in the South. My fears were unfounded though, as whoever is in the kitchen knows their hominy. Perfect balance between thick and thin and paired well with the eggs. I was seated with a nice couple from England and a young man from Chicago. It was a nice conversation, mostly swapping travel stories and sharing options for exploring Chicago prior to my next departure.

Coding by Train: Leg 1 (Wilson, NC to Washington, DC)

For the next week and a half, I am experiencing a new form of travel. Rail. Rather than take my normal flight from RDU to DEN for one of our company meetings, I’ve decided to take the scenic route via an Amtrak train. The first leg of the trip is the Palmetto line from Wilson, NC to Washington, DC.

Cost

The cost of a ticket from Wilson, NC to Washington, DC is pretty reasonable at $51 each way. It’s a 4.5 hour ride and allows me to travel without dealing with the traffic issues that has aggravated me in the past.

Seating

The seats in the coach class are comparable to those on an airliner. The main difference being that if you aren’t comfortable, yo are free to get up and move about, I spent about half of the trip in the dining car. The food selections are bit limited but not without some variety. They ran out hot dogs pretty quickly but had pizza, sandwiches and tons of snacks. The beer selection was about all I could expect.  Lots of American standards with the only “real” choices being Heineken, Dog Fish and Sam Adams (my choice). Hoping for a better selection on the next leg as I am all about that barley life.

Connectivity

Internet is free on Amtrak and works well enough for pushing commits and general usage (email, Facebook). The connection is a bit spotty, particularly between Rocky Mount and Richmond, VA. While testing an app, I got tons of errors when calling remote services. I didn’t have to resort to using my phone’s data plan, though, which has allowed me to save my precious bytes.

Ride

People on the train have been very courteous and I had no worries about leaving my carry-on in the coach cabin while I went to the dining car (unless you have a sexy underwear fetish, why would you want my bag anyway?). The train does jostle a bit at times, reminding me of some of the more turbulent flights I’ve experienced but for most of the ride it’s pretty easy to read/write/type without trouble. If you are prone to motion sickness, it might be a bit difficult in spots. I was unable to fall asleep but that may have been due more to my excitement at starting the trip.

Lessons learned so far

I really enjoy not driving. And not having to sit still for hours on a plane. And not having to take my shoes off. And not going through metal detectors.

Bring an ample supply of snacks that you like. You are also not allowed to consume your private stock of alcohol outside of your sleeper cabin. With the price of the available sleeper at $1100, I’ll settle for Sam Adams.

My first thought upon arriving in DC was “why didn’t I do this sooner”. It took only a few minutes walking from Union Station to remind me why I loved working here years ago. There will be a lot more train rides to DC (an possibly points north) in the future.