You can listen to the Cocoa Nomad Podcast on the following services:
You can listen to the Cocoa Nomad Podcast on the following services:
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.
What I managed to accomplish at the end of 80 hours
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.
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.
I need to tone down the color usage in my designs.
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.
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.
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.
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.
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:
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.
“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.
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.
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.
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.
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.
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?
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.
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.
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.
It is too Agile? Not Agile enough?
Do I need to use storyboards? Should I write everything in code?
Should I use React?
This entire endeavor was self imposed. If I didn’t want to continue, I was free to stop.
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.
Nothing earth-shattering. Any product idea has to become a deliverable product within 80 hours of starting.
And then it’s DONE.
Bottle it and ship it.
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.
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.
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.
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.)
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.
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?
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
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.
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.
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.
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?
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.