Kelsey Hightower on Software Minimalism and JS Frameworks

Kelsey Hightower is a minimalist. As such, he likes to tease through the noise and focus on what problem a solution is trying to solve.
“When people really scope it down to the problem we’re trying to solve, when you say DevOps or you hear some new fancy deployment tool, or CI/CD, you’re like, ‘Okay, what’s the problem?’” Hightower, a distinguished engineer at Google and a full stack developer, told The New Stack. “The problem is, we’re trying to take code that I’ve written and put it on the server so people can use it. It’s a very minimalist way of understanding it.”
Taking that approach, it becomes clear that sometimes people lose sight of the original goal, he said. Focusing on that can be very clarifying, he explained.
“Whenever you do minimalism, this is how you end up with serverless,” he said. “Everyone wants a server; you go to Dell, HP, you buy the server, you plug it in, the server gets bigger, it consumes more power, Intel has more chips, you’re putting all this stuff there. And now you need a config management system to manage the server. What was the goal again? Wasn’t the goal to write the app and give it to the customer?”
Hightower, who helped establish the KubeCon conference, said there’s a simplicity to the paradigm that uses APIs, services and containers to manage services.
He sees a need for simplicity in software design, however.
“In software, we don’t do that [simplicity], because it’s like clay, you can do whatever you want — and without those constraints, people end up doing whatever they want and they create complexity, because it will still work,” he explained.
Hightower on Next.js 13
The New Stack spoke with Hightower at Vercel’s Next.js conference in San Francisco. He’s an advisor to Vercel and was at the conference to answer questions about the latest release.
He offered an analogy to explain what Vercel is trying to do: If the web is the new computer, with the edge functioning as middleware, and cloud providers functioning as data centers, then Next.js is aiming to be the operating system. Where does Next.js 13, released last week at the conference, fit in? It’s progress, he said.
“With any ecosystem, you want to see a stable release cadence. Why do you think the new iPhone 14 looks like the old iPhone, right? […] We don’t always want huge jumps, because the problems that we’re trying to solve now are very specific,” he said. “It’s not like we’re trying to create Next.js from scratch again. We’re trying to address the problems that were there with 12.”
It’s also faster at rendering, thanks to TurboPack, he noted, which is key to supporting collaboration. Thirty minutes to render deters software developers from trying new tactics; so with faster rendering, developers are more likely to experiment.
One feature he questioned at first was the image optimizer.
“I looked at that feature — like, why is this a bullet point? Who really cares, right? It’s just a thing where you can put images in a webpage. We’ve always done that,” he said.
But after watching the videos and tutorials, he realized it was a significant announcement because it improves performance, which Google tests for rankings, and it impacts the user experience. There’s also a real cost in terms of how fast the website loads — and serving images from CDN isn’t free, he added. The bigger the image, the more sites have to pay.
“What they do now is say, Hey, we’re going to take that image thing that was working and we’re going to give you all the best practices that the big web companies know how to do,” he said. “When you check in that image, and you’re using Next.js’ framework, we’re going to do all the right things, like resizing the image.”
These best practices ensure the image loads fast, even on a mobile device on 3G.
“Just that little functionality, someone that has written a bunch of code to do that — nothing makes an engineer feel better that I can delete all of that code and just do this,” he said. “That’s a game changer.”
Minimalism in JavaScript
I asked Hightower whether there’s more room for minimalism in JavaScript.
“Yes, I think so,” he said. “What does minimal look like in JavaScript? JavaScript is a tool to create experiences in the browser — because if it was just information, then HTML would just be fine.”
JavaScript by its nature minimizes the work developers have to put into create these experiences, he pointed out. For instance, to import a location, developers just call the JavaScript function location to get back the location from the browser, rather than write hundreds of lines of codes to do that.
“JavaScript is kind of like English: Anyone’s free to create new words — doesn’t mean it’s going to catch on. Sometimes we find the perfect word that means so many things, and then you get to start using it, but it doesn’t mean all the other words are gone,” he said. “That’s the way I see JavaScript itself, its raw essence is just this low level thing that allows you to create experiences in the browser.
“So the answer to your question is yes, but it will be answered by 50 different people and you have to pick the one you want,” he said.
That’s why there will always be more than one JavaScript framework, he added.
“There will be never be one because the experience keeps changing,” he said. “We like that, as humans, because we want to hear something new. … It will never stop. But do we want it to? I don’t think we actually want it to.”
Vercel paid for travel and accommodation for Loraine Lawson to attend the conference.