The Best I Can Do Is Learn From Mistakes

The best I can do is learn from mistakes. I will always make them.

When we released version 4.0 of powerOne, apparently, it was quite controversial. I guess I should have anticipated that since iOS 7 was so controversial and we were following Apple’s design aesthetic here. We changed colors within the app, darkened the calculator, removed lines around the buttons, etc. I and everyone I had shown it to thought it looked incredible.

Some of my customers didn’t, though.

Oh, boy, did I hear about it. Some were polite, offering constructive criticism, and some, frankly, were bordering on belligerent. I didn’t take it the wrong way, though. Their passion for our products far outweighs any negativism they could throw my way.

We reacted as quickly as we could. Each email received a prompt response, sympathizing and telling him or her that we are formulating a plan. After a few days to make sure we had much of the feedback, we developed a plan, executed that plan, and released a new version. We decided to add themes to the calculator, simplify the breadth of colors, and revert some back to the 3.0 originals. I wrote a blog post and sent it to all those who emailed, making sure they were okay with our direction before developing it. Finally, after approval yesterday and today, I emailed everyone to tell them the new versions are available.

I’ve always cared deeply about providing incredible customer service. I believe this is part of the reason our customers are so loyal. We try to respond to emails within an hour of receiving them and try to treat our customers with the respect they deserve. After all, they paid us money for our products.

Some Of The Worst Start-up Advice I’ve Ever Read

The irony is this comes on the heels of my talk Monday at Mobile Portland (video and slides coming soon) where I spent 40 minutes outlining options and advocating over and over again to stop, think, and do what is best for your business. But here it is from First Round Review, which usually has incredibly good articles, The Five Mistakes Startups Make When Building for Mobile. In short, here are his five myths and realities:

  1. Myth: Building apps natively per platform is a waste of time and money.
    Reality: If you want a five-star app, build natively. Period.
  2. Myth: My backend infrastructure is ready to support mobile apps.
    Reality: You will need to change, upgrade, or completely rebuild your backend to create the best mobile experience.
  3. Myth: You can build your mobile app internally as fast as an outside firm.
    Reality: Building your app yourself will take 4x the time.
  4. Myth: If I outsource to a mobile development firm, I won’t have to do any work.
    Reality: For the best outcomes, clients need to be heavily involved with the firms they’ve contracted.
  5. Myth: Once I start working with a development firm, I’ll be stuck with them forever.
    Reality: Working with an external firm at first can make it even easier to build internally in the future.

First thing is first: this guy is biased. He works for an outsourcing firm so I’m not surprised he is advocating outsourcing everything.

Second things second, I don’t have a problem with most of it. #2 is probably correct. Adding any new platform, interface or screen dimension may very well require backend changes. #4 is definitely true and #5 is true, too, although sometimes it is hard to pick-up other people’s code.

#1 and 3, though…

However you slice it #1 is bad advice. No, a five-star app does not have to be native. I’ve seen plenty of excellent applications that use HTML5 or use a combination of HTML5 and native code. All of our apps use native and HTML5 to a certain extent. Equals note interface, for instance, is all HTML5 — it was by far the best way to do it at the time we started working on it. Equals also uses a lot of native code. Equals also uses a ton of ANSII C. Anything written in HTML5 and ANSII C can be ported to other platforms so it is our goal to minimize the native Objective-C, Ruby and Java that we use, and we are willing to do that for anything that would feel natural even when it isn’t native.

#3 is also odd. How important is the code to your business? Do you have more money than time? Do you have an outsource contractor who you can have a long term relationship with? Do you have development skills? Is this a skill set you need to be successful? How sure of your product are you? Do you need to be making rapid changes and tweaks, releasing code on a weekly, daily or multiple times per day basis? How much time can the contractor give you? Will they act as apart of your team or is this a throw it over the wall to get it done situation? How active will the contractors be over the long run?

Anyone who has been around the block will instantly know that the author’s advice needs to be considered. Anyone who hasn’t, though, may believe it hook, line and sinker. And that’s what bothers me.

In all cases the answer is, it depends. And the only way to determine which way to go is to know who you are, what you are trying to accomplish, where you are today and where you want to be tomorrow.

2014 Software Business Models

I have to admit, I generally hate New Year’s posts. You know the ones I mean, right? Some silly “look back” at the year before or some bloviated “look ahead” at what the new year will bring, lamenting all the lost opportunities and swearing the author will do differently [1]. First of all, I think few care (except the person writing it). Second, the new year is artificial. You want to do better in August? Then do better in August. But no one ever writes these screeds in August.

But then Ben Thompson came along and wrote the New Year’s post that is better than all the others, as it is actually practical and supposed to be for us, not him. Ben wrote an absolutely fantastic piece called 2014 Business Models that is well worth the read for anyone trying to make a living selling software (oops, apps) in 2014.

There are two concepts he discusses here. First he sets up his business models by first discussing marginal cost, and this is incredibly important to understand in the “download” economy:

The implication for apps is clear: any undifferentiated software product, such as your garden variety app, will inevitably be free. This is why the market for paid apps has largely evaporated. Over time substitutes have entered the market at ever lower prices, ultimately landing at their marginal cost of production – $0.

Marginal cost of a single additional unit is 0. Development is sunk cost.

Then he explains his business models. I won’t spoil the fun or rip off his excellent writing here. Go read the entire article.

[1] On occasion I’ve written these too and, after the fact, hated myself for doing it.

Sunk Cost

Sometimes it just isn’t working. We have this window of opportunity to get a first beta version of Equals shipped and, for goodness sake, it just isn’t getting done. Here’s the problem: we realized last year that delivering the iOS version first was a mistake. Instead we needed to do a web version first.

Equals is partly written in C, partly in Apple’s Objective-C, and partly in Javascript, but the Javascript code was done before either of us had any experience writing HTML5. (Read: hack job.) If we were going to do a true web version then we needed money (time) and we needed to learn Javascript so we lined up a contract job that paid us to learn it. It was painful (unstable, new platform without much documentation) and it didn’t buy us as much extra time as we would have liked, but it worked. By the time we were done we could re-write the code for Equals.

But too much of Equals code was still in Objective-C, which won’t work for the web version, so we needed to move it into C. Rick started to make the changes. He made it part way and then was interrupted by a health issue (now stabilized) and then contract work. He started again in late December. He thought three weeks.

Four weeks later and it isn’t done. In fact, Rick looks exhausted. He isn’t sleeping well and even days off don’t feel like days off because it isn’t done. Worse, every time he makes a change it breaks other code, so it is really fragile. Edge cases are killing him. He told me Monday he just stares at the code, not knowing what to do anymore.

I’ve been worried about the fragile code for a while. I’ve also been concerned about storing the notes in HTML as every browser changes it and will make it very hard to track changes some day. We needed a different approach.

The fundamental problem is that the code was written to handle text. When we added HTML, it was added as a side layer as to not disturb the functioning engine. Originally Rick was trying to strip the HTML, note the cursor position (which HTML doesn’t want to handle correctly to begin with), make adjustments as the code was changed, then add everything back in. As mentioned this wasn’t working.

So I suggested we change the approach. A la Markdown, which gave me the idea, I suggested we just replace the HTML with our own “markdown”, text that Rick could safely ignore and that we could store as a neutral format in the database. In fact, Rick realized we could use a feature from an early version of the app that we are no longer using, one that already was being ignored. The first thing Rick gets to do is rip out months of code.

Sunk cost. It doesn’t matter anymore.

Now we are back on track, I hope. Let’s hope we don’t hit any major snags. It is time for people to start using Equals.

My 2014 Mantra: Focus Focus Focus

Brad Feld wrote a great post on focus:

Early on, especially pre or early revenue, lack of focus is the death of so many companies. Sure, there’s a point where you are still thrashing around looking for “the thing.” You are using all the Lean Startup and Lean Launchpad techniques to find your product-market fit. You are iterating and pivoting. You’ll want to use a freemium model to capture the low-end customer while selling directly to a high-end customer. How’s that – I just used a bunch of buzzwords to help rationalize the “search for focus” – clever, eh?

But at some point you have to focus. What word do you own? Who is your customer? What are you selling them? How are you selling them it? Why are they buying it?

This is the goal for myself in 2014: focus.  The past year has been scattered across multiple projects, learning and indirection regarding Equals. But as I complete 2013, as I complete many projects that won’t go into the New Year, I hope we can focus on building a company again. Yes, we will still do contract work but I hope with the launch of Equals coming up shortly that we will start to shift the balance of powers back to product, focusing on making it the incredible service I know it can be. The direction is clear.

Here’s hoping you find focus in 2014, too. Merry Christmas. Happy New Year. I’ll see you next year.