Amal sits down for a one-on-one with Alex Russell, Microsoft Partner on the Edge team, and former Web Standards Tech Lead for Chrome, whose recent post, The Market for Lemons, stirred up a BIG conversation in the web development community.
Have we really lost a decade in potential progress? What happened? Where do we go from here?
Alex Russell: [01:01:48.18] Yeah, so Iâll try to break them apart a little bit, and say that if youâre an individual who has skills in JavaScript, and youâre looking for how to improve, again, the most important thing you can do is learn to be putting the user that youâre trying to serve at the center of it, and then start to think in terms of hitting frames, every 16 milliseconds; hitting that interaction target that you would like to have hit on your extremely expensive device, on that cheaper device, and for that marginal user. I promise you can do it. Computers are fast. And youâll find out where your framework might be a stumbling block, or where React will generate way too much GC in a critical section or something, and itâll hurt you. And that will turn into a challenge and youâll learn to solve it⌠Maybe inside the framework, maybe youâll learn to go around it a little bit⌠But those are incredibly important learning opportunities for you to understand the trade-offs.
And then I would suggest, again, as an individual, if youâve been living up in JS land, where youâre kind of doing everything in user land, the most important hours you can spend are not learning another framework; they are learning the system underneath you. Every hour you spend learning how the browser actually processes your content and actually thinks about it, actually thinks about the networking and actually thinks about how we take DOM and CSS and we construct them together, and we create the layout tree, and then we paint out of the layout tree, and then we rasterize that out in the GPU - that flow and how we do that every 60 hertz, every 16 milliseconds, learning the pieces of it and the sensitivities of that system to what you do in CSS, and JavaScript, and through your HTML, will make you a better developer in every framework.
So itâs extremely important that you learn to think about that knowledge not as something that you donât have to think about anymore, but as something that now that youâre not a beginner anymore is extremely valuable to you⌠Because youâre not at the end of your career, so itâs going to be important that you be able to adapt on the basis of shared knowledge across all of it.
And then for teams and for organizations, Iâd say that that hiring thing - again, thatâs trope; itâs not reality. I promise you thereâs a fire sale on talent right now. Go look. You could just pay for it, and youâll pay less than you think you would. But in terms of the choices that you make in terms of stacks, I would encourage folks to be a little bit more data-oriented, right? Again, step back and look at the actual experience. How many of these tools that you think are necessary are there to solve problems that the tools that you thought were necessary created, right?
if you start with simpler output, one of the cool things about it is â okay, letâs just say you move from taking your static marketing website out of Gatsby, which is going to go with some huge GraphQL query to return a bunch of React components, and render that on the server side, and do all this stuff. And then you have to think about how youâre gonna smush all these things out, and like do the CSS minification, and all that stuff⌠Whereas if you just output the same basic HTML, with the SQL query, and some PHP, or some Python, or some Ruby, how much more headroom would you have in the output in terms of the cost of the output, before you ever had to think about applying a tool to start tamping down on those costs, right? Because once you start thinking in terms of budgeting, latency budgeting, complexity budgeting, you can start to think about the trade-offs as being not about like for like, but itâs about being different in ways that structurally set you up for success if your system is simpler.
Now, once you get to a very complicated product, when you know you have a really complicated product, then you will need sophisticated tools, and they will need a lot of management. But going through that process of evaluating those things, and doing bake-offs, and learning the properties that emerge out of those simpler versus more complex systems will teach you something, itâll give you a finger feel for whether or not one style of construction is going to be more appropriate here or there, and maybe help you make more informed trade-offs in the future about the style to build in for a particular kind of use case.
[01:05:43.08] And then Iâd say at a community level, we need to step back, and I think we need to think about our relationship to society. And I donât think that thatâs going to be a thing that is traumatic, or even hard, right? Weâre all here to build great experiences. I believe that. I truly believe that. I think Laurieâs piece in response to mine said something about how I think that developers are stupid, which is hilarious, on a couple of levels. But I just donât. I work with extremely talented people all day long, and Iâm grateful to get to work with them. And if we take seriously that it is evidence and science that are going to get us to a place where when we apply our skills, they turn into good things for the people that we wanted them to, thatâs a fundamentally optimistic way of thinking about this technology.
We donât have to accept what has happened, or accept that it happened for good reasons, or even accept that the people who are so attached to it are correct, or worth having in the conversation, in fact. But once we put the evidence at the center of whatâs working and whatâs not, I think we can start to reevaluate our relationship to the technologies, and acknowledge on the one hand weâre more than our choice in Java framework⌠[laughs] I promise you, thereâs life after the framework that you love right now. And also, that as a discipline, the more we are reliably delivering good things for users and for businesses, the more likely it is that thereâll be more work for us, more good things that weâre going to be able to create in the future, and more users that we can help. And for me, thatâs the goal, is to be able to help users. So when we put that at the center, and we put the marginal user at the center of that question, then I think we get to a good place. So Iâm optimistic.