Let's start at the beginning – what's your background?
In the early 2000s, I did JavaScript full-time, realised we didn't have the infrastructure we needed, and built JavaScript frameworks to help make creating large web applications easier - things that are Gmail-sized. I came by my dev scars honestly!
What did you learn from working on those projects?
That so much of building good UIs - good experiences - is working to do hard things that shouldn't be exposed to users: intelligent date formatting, giving people contextual options, tying actions to progress indicators and maintaining good performance. It's about ensuring you're not asking people to work on your behalf because your system isn't up to the job.
How did things change for you on joining Google?
I first worked on Chrome Frame. That was an attempt to solve the problem of having great new browsers that almost didn't matter because we still had to feed IE. We then put together a cross-functional team to discover what was still painful about building an app at the very edge of the web. We'd assume the legacy problem was solved and figure out what still hurt.
What did you discover?
It turned out that because we've been so insulated with huge layers of JavaScript, few people had real experience at just building for the edge of the web. Being insulated from the problems can be good, but being insulated from the opportunities is bad. Yet that's the inevitable consequence of wrapping a safety blanket around yourself and trying to run - you won't go as fast. If you hit a tree, it'll hurt less, but you won't progress as rapidly.
What happened when you ditched the blanket?
Lots of things have started to come out of that effort: web components, shadow DOM, custom elements, loads of CSS fixes. We found a bunch of things that renewed our interest in key areas of modularity and extension in the web platform. The question sort of hits you smack in the face that when everything is great - when JavaScript is fast, when so many of the things you had to care about before fall away – why can't I do a thing that looks natural to do?
Such as?
Well, why can't I style a select element, replacing its UI with something different, like those iOS spinny things rather than a regular mouse dropdown? The browser can do that, so why can't I? Those important questions don't often get asked, because very often if you're sitting inside the web developer mentality and you don't have all of the pieces on the board in your hands, you're not going to build something that would let you solve the entire problem.
Should more devs get involved in browsers and web standards?
You need to ask what it means to get involved and the best way to do so. With standards, there's no immaculate conception. There's no moment where people sit in a room and say, "Great, let's solve a really important problem right now." And really, even writing a spec gets you nothing. You actually have to change the mind of someone who's shipping software - you need that leverage point.
So who should devs speak to? Who do they lobby?
What we see now is that the productive way for this to happen is that people have to be kind of 'super representatives' - representative of more than one community. They have to understand enough about the browser side and the web side, beyond 'this one thing really hurts right now'. They have to differentiate between 'this is a short-term issue that will go away' and 'this is an issue that, if we don't spend time and effort on, won't ever get addressed', to see cross-cutting concerns, and the right way to fix them.
I have hope that one thing the W3C Technical Architecture Group (TAG) can be reformed into is a much more listening organisation that can start to represent web developer interests more forcefully and in a more structured way to the Working Groups. We might not be the right eventual end point for those concerns, but I would say it's now our job to help channel them.
This article originally appeared in net magazine issue 246.
Liked this? Read these!
Have you ever been to the web's edge? Tell us in the comments!