October, 2021 - Sylvain Pollet-Villard
and pretend Windows Phone does not exist
Web
"Mobile
Web"
"Desktop
Web ?"
The most common strategy at the time
to split desktop and mobile users was
User Agent sniffing
https://adrianroselli.com/2011/10/detecting-mobile-devices.html
but how do you decide if some device is "mobile" or not ?
Play in the chat:
Enter "mobile" or "desktop"
Mobile or desktop ?
Mobile or desktop ?
Mobile or desktop ?
Mobile or desktop ?
Mobile or desktop ?
Screen size ? Screen definition ?
Inputs ? Touch screen or keyboard/mouse ?
Connectivity ? Bandwidth ? Latency ?
Device power ? Capabilities ?
Usage context, user intent ?
screen size ? bandwidth ? user focus ?
phone
handheld
touch UI
moving,
changing ?
Web devs love to criticize browsers...
but it's not the first time browsers fix web devs mistakes:
It didn't age well in 2021
Bad arguments:
the gap between dev and user
environments and usage contexts
Emulating small resolutions, touch controls, bad performance with CPU and network throttling, does not replace testing with a real device
Reasoning cognitive bias lead to a poor perception of reality:
User scenarios → are you sure about the order of the actions ? the timing ?
Mockups on Illustrator → what happens to your pixel-perfect layout if we slightly change the width, or zoom in text because user is myopic ?
This "mobile web" thing is a user story
"mobile web" assumptions
smartphone
at home (WiFi)
Grandpa's
computer ?
iPad in
public transport
Think in variables, not categories
(of course there are more than 3 variables:
browser support, device capabilities, usage context...)
8 categories
3 variables
H
CSS Media Queries have been thought this way:
They also tried to make device categories, but it did not work in the end:
Move from full-page mockups to components and graphic charter
The smaller the component is, the easier it is to adapt
to all the variables: screen size, input methods...
Things to ban: "mobile" mockups, fixed layouts, ideally prefilled data
Modularize everything: components, inputs, actions, services...
For each part, define hypotheses, constraints and options
Example: a photo gallery component
gallery-lib.desktop.js / gallery-lib.touch.js
(Unpopular opinion: this applies to devs, QA and
product owners, from writing specs to end-to-end testing)
Don't presume the user :
Users switch often between devices and expect consistency from your website UX, data and service
(Study by Google, August 2012)
I can try to optimize:
Optimizing will keep your application simple and consistent,
but can only be done up to a point before having to adapt.
Media queries are a good example of this kind of breaking point.
I need to adapt to:
Step 1 : mobile web sucks
Step 2 : mobile web used to suck
Step 3: there is no mobile web, only the Web
I'd like to think we are already at step 2
Now I want to move to step 3
Thanks ! Questions ? Opinions ?