The Trouble with Lean Startup: User Research is Hard

When I first heard about Lean Startup I was tempted to dismiss it. The tech industry gets excited about movements and philosophies; when they do I tend to run screaming.

Parts of Lean Startup made sense to me, and indeed echoed what UX practitioners have been saying for years. Gather data. Make sure you’re building something your target customers will actually use. Test early and often. So I did something I rarely do: I read the book, Eric Ries’ The Lean Startup.

By and large I like Lean Startup, especially once you recognize how it’s been misunderstood by the industry at large: Continue reading

You Should Absolutely Learn to Code

Jeff Atwood over at Coding Horror is frustrated by the tech industry’s current everyone should-learn-to-code theme, and struck back this week with Please Don’t Learn to Code. He makes some good points. But as someone who’s been promoting programming as part of a well-rounded education for years I fundamentally disagree.

Atwood writes, “Can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder?” And of course Mr. Bloomberg wouldn’t. But there’s an implicit assumption that learning to code is the same as becoming an engineer. It isn’t. Continue reading

One Year Later: Is HTML5 Ready for Prime Time vs. Native? No.

A year ago I published a series of posts about HTML5 mobile web frameworks: Sencha Touch, jQuery Mobile, jQTouch, and Titanium Mobile. Setting aside differences among frameworks, I tackled the question of native vs. web and gave a nuanced answer, even a hesitant yes. A year later I’ve abandoned HTML5 and begun rebuilding my app in Objective-C. And while the long answer is still nuanced, the short answer is easy: if you want to build a great mobile app, go native. Continue reading

Refreshing the Website: Creating a Better, Single-Page Experience with Ajax

Since the term “Ajax” burst onto the scene in 2005, it has changed the Internet. Apps became more interactive; desktop paradigms migrated to the web and evolved in the process; and the Web as a platform began to come into its own.

That change hasn’t affected the core of how a website works. Sure, modules load in asynchronously; some sites use Ajax to load in notifications; and Facebook Like buttons mysteriously appear as you scroll. The typical blog or brochure site is a page-based experience; why overcomplicate things when the Web is, at heart, a page-based medium?

But mobile apps have popularized a new level of page-based interaction. Screens animate smoothly in and out while navigation stays put, not only providing delight but preserving context and reinforcing the user’s position in the information hierarchy. Instead of jarring blankness between screens, users see loading animations.

The No-Refresh Site

Maybe it’s time we embraced this approach for the desktop Web: the no-refresh website. Even with fast load times a full page refresh disrupts context. With Ajax we can leave navigational elements in place while loading in new content. We can bring that content in via animations that reinforce how we’re moving through the information hierarchy of the site. And even with animations, such actions are liable to feel lighter-weight and thus encourage exploration — not least of all because a Back action will be so immediate.  Continue reading

Adventures in HTML5: Mobile WebKit Performance Optimization

My previous post took a high-level look at HTML5 vs. native for mobile apps, concluding that HTML5 is ready for prime time but not necessarily for everyone. I also mentioned some of the work I did in order to get my app, Pints, to perform acceptably. Commenter Jouni (thanks for reading!) wondered about the details: what did I try, and what seemed to work?

I won’t claim to have used an incredibly rigorous process. As previously mentioned, I chose Sencha Touch as my framework almost exclusively based on its performance. At least on iPhone, I threw out PhoneGap in favor of a lightweight custom Cocoa wrapper. (I’m particularly skeptical about whether that ended up mattering, but it did allow me to create a better experience during app load by waiting until the page finishes loading before fading in the WebKit view.)

Inspired by Thomas Fuchs’ “Making an iPad HTML5 app & making it really fast,” I then did the following: Continue reading

Is HTML5 Ready for Prime Time vs. Native? (Mobile App Development)

In my last post I compared frameworks for building app-like mobile experiences with Web technologies: Sencha Touch, jQuery Mobile, jQTouch, and Titanium Mobile. For my own app, Pints, I went with Sencha Touch. But in truth there isn’t a clear winner: for a simpler, more page-based app I’d probably go with jQuery Mobile. (David Kaneda wrote a nice comparison of jQTouch and Sencha Touch — both of which he created. Much of what he says about jQTouch applies equally to jQuery Mobile.)

Each of these frameworks can help you toward the same goal: a cross-platform, native-like experience built on Web technologies. The fundamental question is: is that goal realistic? My answer is a qualified yes. Continue reading