I just got back from 4 weeks traveling. I took an iPhone and an iPad, but didn't take my laptop and for the whole time completely ignored the world of web development.
- Didn't visit GitHub
- Didn't read any dev blog posts
- Looked at Twitter once or twice for about 30 seconds (and realised if I wasn't in this industry I probably wouldn't use it at all)
- Deleted pretty much every email I received without reading it.
I still used the internet though.
I pulled out my phone whenever I needed directions, opening hours or prices. I did some banking & flight booking. I checked train timetables. Occasionally I posted an update to Facebook or a photo to Instagram. I read the odd news article.
In short, for 4 weeks I used the internet kinda how a normal, non-developer person might use it. And I used it over some wifi & 3G connections that varied wildly in their level of crappiness.
In that time, I discovered some problems with how we're building things.
Yep. Even after all these years, content still hasn't abdicated and we're still failing to recognise his claim to the throne.
Every single time I pulled out my phone to find some information (directions, opening hours, contact details, booking form, etc) it was hidden in behind a link in some submenu's submenu.
Unfailingly, the homepage was a logo, a giant image (or if I was lucky, a slider with 4 giant images!) and a few links.
Homepages that are purely landing pages designed for new customers are useless for everyone else.
"Oh, you've heard of us before? Ignore everything on this elaborately designed landing page, it's not for you. Maybe click one of those little links up there" is a stupid thing to say to a customer.
We live in a world of subway tunnels, congested 3G networks and crappy public wifi. If your users will ever want to access your site under those conditions, make it fast.
Users want content (see #1 above). Cull anything that will stop them from getting it as quickly as possible. Which brings me to my third point…
I've championed web fonts and used them with reckless abandon pretty much since we've had the ability.
But last month I lost count of the times I found myself standing lost on some street corner, staring at a page loading on my phone, the progress bar almost at the end of its track, all the images loaded… and a whole lot of empty white space in between.
I knew the content I wanted had already loaded and was sitting right there.
I knew Safari was hiding it from me to prevent the FOUT.
It was so, so infurating.
Use the web font loader and make sure the fallback font is used if the web font hasn't loaded in a very timely fashion.
Or better yet, don't use a web font. I swear I don't mind Helvetica. I don't mind a FOUT. I just want the content.
Actually, our feedback mechanisms suck.
Spinner gifs and crappy internet connections do not make good bedfellows. Does a spinner that's been spinning for 30 seconds mean something different to one that's been spinning for 2 seconds?
I have no idea. After about 10 seconds of staring at a spinner or a semi-transparent page I'd give up and refresh the page, or type something more specific into Safari's search box so I'd get a nice, reliable full page load.
Ajax is pretty awesome. It can dramatically speed up content delivery. But it doesn't have built-in feedback mechanisms to let the user know what's happening.
Browsers provide pretty useful feedback. Mobile Safari has a nice blue progress bar. If it can't connect, it gives me this bland but clear page telling me so.
Native browser feedback feels more… solid.
If your magic ajax trick that was supposed to make a page load half a second faster hasn't delivered results in 5 seconds, give up and fall back to a full page load.
Feedback? @bensmithett