App Genius Mike Lee Talks Product Engineering
Lee had the audience’s attention from the start, and not by accident. But he didn’t explain, right away, why he was sporting a slightly unusual outfit for a developer conference. Instead he started with some golden rules for application (and product) development:
Technology is first and foremost a people problem.
You can’t force people, you must tempt them.
New must be better than the old.
These apply to all products, says Lee, but his specialty is apps. So how best to approach application development?
Ignorant and Apathetic
In the real world, Lee says it’s best to assume the best of people. In engineering, however, Lee says that it’s best to pretend that people are lazy, stupid, impatient and selfish. That’s not true, of course, says Lee. “People are not ignorant and apathetic, but they do not know and do not care about your product.”
The point, of course, is not to insult users; it’s that software engineers and others on app design teams need to understand that users have better things to do than to learn how to use an app.
Lee also wants to get rid of the idea that great apps are revolutionary. “Great products are not revolutionary, they’re boring with a little layer of revolutionary.”
One example is the classic iPod. At launch, many thought it would fail. There was no legitimate way to put music on it, it had no FM tuner, etc. But it succeeded and ultimately led to the iPad. But Apple couldn’t have started with the iPad, says Lee. “If Apple had simply come out with the iPad 2, heads would have exploded but product would not have moved.”
Most Ideas Are Terrible
Ideas, themselves, really aren’t worth that much according to Lee. “Most ideas are terrible… ideas are not a dime a dozen. I would not pay you a dime to listen to a dozen of your ideas, I’d charge you $1,000.”
What’s important is quality. Lee says that most people are in love with their ideas, but what’s necessary is to cut down to the bare idea. Ask how your solution solves a problem, and how and why is it better than other solutions.
Make a Video
Instead of jumping straight to creating a product, Lee suggests that you make a commercial or video for the product. Explain it, and why people should buy it. The goal is to act it out, and be able to explain to potential hires or investors or customers why they want it. Once that’s solved, then start work.
Marketing, says Lee, shouldn’t run companies, but marketing materials should be produced early.
How to Pick a Platform
One thing that many developers struggle with is deciding which platform to target. Lee says this is simple. Pick the platform you like and work on that one.
Maybe Android has more users than iOS, but who cares if you hate Android? Your app is not going to be as good for Android if you love working on iOS. (Of course, the converse is true as well.) Lee points out that most platforms have enough users for an app to succeed. The key is to capture enough users on the platform to succeed, and just moving to another platform won’t fix that.
Once you’ve conquered a platform and have users demanding you port to another platform, is the time to start supporting a second platform.
But don’t try to serve multiple platforms with the same team, says Lee. Instead, companies need “n+1” teams for the number of platforms they support, where “n” is the number of platforms. What’s the extra team for? Lee says to split out the back-end/business logic support so that one team handles that, the rest is handled by platform specific teams that love those platforms.
A lot of developers worry about technical debt. What’s worse than technical debt? Social debt. You get social debt by shipping a bad product, and having to overcome that first impression with later iterations of an app or product.
You get one and only one chance to make a first impression. Lee says that companies and individual developers need to test as if they were tested by their archnemesis. “No one should hate you and your company and products more than you.” Test your code as if it were written by your worst enemy, says Lee. You’re not testing to prove that the app works. Instead, you’re looking to prove that it doesn’t. If you can’t prove it doesn’t work, then you’re good shape.
Eventually, you do have to ship. That isn’t an excuse, says Lee, to ship a lousy product. If you have to cut, cut features and not quality.
One example of a product burdened by social debt is Microsoft’s Kinect technology. Lee says that he avoided playing with the Kinect for a long time until coerced by friends. “Microsoft is not a company that has built a reputation for delivering on technical promises… the sad thing is the Kinect is kind of awesome… the problem is the guys [Microsoft] had dug themselves in a hole.”
So how do you tel when a product is ready? Here Lee finally addressed the Mariachi question. Why did he dress up like a Mariachi for a room full of developers? To get attention, of course. To give the audience a “holy crap!” moment to convince them they wanted to have their butts in the seats and hear what he had to say.
Apps need the “holy crap!” moment too. They need a hook to be successful. Take Delicious Library, for instance. It’s not the first application that manages a person’s media library. But the “holy crap” moment for Delicious Library is when users realize they can use their iSight camera to scan barcodes instead of typing in all their data.