On creating great products

People who know me are aware that I have been, and still am a long time supporter of the open web stack, and I have talked a dozen times about how HTML5, CSS3 and JavaScript is the only way to produce apps, sites and games that run cross-platform, accessible to the widest audience possible. Now don’t worry – I’m not changing my opinion. Native is out, HTML5 is the future. Period. But there’s something I have to tell you. It’s about finding the right compromises.

I’m getting bored of people publicly yelling and complaining at people who have build something great that only works in a limited set of browsers.

“Uh noes, you can’t ignore [insert browser of your choice here, i.e. Opera]! You’re fighting the open web!”

There, I said it. A couple years ago, as a developer, I could see their argument. Open, interoperable, non-monopolistic and awesome and all. A couple months ago, I was angry. And now I’m just bored.

Imagine somebody grants you a budget of three months development time, and it’s up to you to make the right compromises. You can either create an ‘okay’ product that runs on 95% of today’s browsers. Or instead, you create something unbelievably great that runs on 70%. What would you pick? And no, you absolutely cannot have both. I spent too much time with outdated browsers to still believe there’s a way to achieve both.

I find it amazing that many people will pick the ‘okay’ product, just because the ‘open web ethics’ demand it. If you are creating a consumer point, there is absolutely no reason to go that route. None. Let me repeat that, as it is important. You should always – always focussing on creating a great product. Great in absolute terms, not relative to the browser. Achieving 15fps in a game on IE7 is not great. It’s great relative to what the browser can offer. In the case of a game, your baseline is 60fps.

You don’t want people to play your game at 15fps. “Their game is so great it only runs on latest browsers” almost definitely sound better than “Many people complain about the bad performance in their favorite browser.”. Hell, maybe your favorite reporter is using IE7. It unfortunately doesn’t stop here, as there is more harm to be done supporting outdated browsers. Progressive enhancement almost never works. I guarantee you that if IE7 is your baseline, you won’t be using all the cool features you get with, say, Firefox 7. And another project that focusses on the right compromises will always win.

So please, please, please! Focus on creating absolutely great products. Literally.

10 Comments

macoto_  on October 11th, 2011

Software has always had minimum specs. I don’t see what’s wrong with starting to bring this to the web, especially when you’re making a game or app.

Paul  on October 11th, 2011

@macoto_: minimum specs are completely fine. But running your app or game on the minimum spec should still guarantee a great experience.

Rene Kriest  on October 11th, 2011

You made my day!
I got tired of polyfills and browser hacks. Some month ago I fell the decision to stop supporting browsers below IE9 and actual versions of Chrome, Firefox and Opera.
The only thing I do sometimes is offering a simple and basic HTML and CSS skeleton for those sad 10%, that cannot/won’t upgrade to a new browser.
Bothering about vanishing browsers doesn’t make sense to me. Rocking around with HTML5 and latest DOM/BOM technology does. This way you can even forget about jQuery and use plain JS. ;)
Chears from Frankfurt,
Rene

Cory Dorning  on October 11th, 2011

Amen! I only wish I could convince others of the same. As you have already mentioned, they keep pointing to the ‘consumer’.

The problem with that argument is that it can also be reversed. 70% of your consumers (using your baseline above) have a lesser experience b/c of 25% of those who haven’t/couldn’t upgrade their browser.

Code to standards, not to the browser. Great post!

sorenbs  on October 11th, 2011

How does that trade off look for zynga? Do you support IE8+, FF4+, latest chrome or are you even more restrictive?

Paul  on October 12th, 2011

@sorenbs: Can’t talk about this yet for Zynga. But we definitely do smart choices on what browsers to support.

Alexander  on October 16th, 2011

Super post! Just like your blog professionalism! Keep up the good work.

Alex Russell  on October 17th, 2011

Have I got a plugin for *you* ;-)

karl  on October 17th, 2011

I’m working for Opera in the developer relations team and one of our tasks is to try to get some web sites work in Opera. I have a comment just about

“more harm to be done supporting outdated browsers.”

The issue unfortunately is not that one. When a Web site is not working in Opera, the issue falls into these cases for *80%* of the time:

* The site is using outdated JS libraries doing wrong user agent sniffing identifying for example Opera has 1 instead of 11. Firefox is having the same issue right now with the new release of Firefox 10.

* The web site is using -vendor- and is forgetting some of the browsers. These days -webkit- is used a lot and people forget -moz- et all.

* The web site is blocking Opera just because. That’s the most annoying. Because when we fake another user agent, the browser goes through withtout the glimpse of an issue.

What I’m saying is that the site would be working in a modern version of Opera.

Finally, there is the fallback mechanism. Often some sites would benefit if the fallback mechanism was just elegant enough for giving an experience which is interesting for people with different needs: think accessibility, mobile in different areas of the world, low bandwidth, etc.

RJL  on October 18th, 2011

I would love to share this with upper management, but I can’t. You state: “You can either create an ‘okay’ product that runs on 95% of today’s browsers. Or instead, you create something unbelievably great that runs on 70%.”

What if those 70% represents only 20% of your current install base (the rest are on IE)? How can you pitch that to management?

Have a comment or question?