On a Monday morning this spring, Jeff and Sanjay stood in the kitchenette of Building 40, home to much of Google’s artificial-intelligence division. Behind them, a whiteboard was filled with matrix algebra; a paper about unsupervised adversarial networks lay on a table. Jeff, wearing a faded T-shirt and jeans, looked like a reformed beach bum; Sanjay wore a sweater and gray pants. The bright windows revealed a stand of tall pines and, beyond it, a field. Wherever Jeff works at Google, espresso machines follow. On the kitchenette’s counter, a three-foot-wide La Marzocco hummed. “We’re running late,” Sanjay said, over a coffee grinder. It was eight-thirty-two.
After cappuccinos, they walked to their computers. Jeff rolled a chair from his own desk, which was messy, to Sanjay’s, which was spotless. He rested a foot on a filing cabinet, leaning back, while Sanjay surveyed the screen in front of them. There were four windows open: on the left, a Web browser and a terminal, for running analysis tools; on the right, two documents in the text editor Emacs, one a combination to-do list and notebook, the other filled with colorful code. One of Sanjay’s composition notebooks lay beside the computer.
“All right, what were we doing?” Sanjay asked.
“I think we were looking at code sizes of TensorFlow Lite,” Jeff said.
This was a major new software project related to machine learning, and Jeff and Sanjay were worried that it was bloated; like book editors, they were looking for cuts. For this task, they’d built a new tool that itself needed to be optimized.
“So I was trying to figure out how slow it is,” Sanjay said.
“It’s pretty slow,” Jeff said. He leaned forward, still relaxed.
“So that one was a hundred twenty kilobytes,” Sanjay said, “and it was, like, eight seconds.”
“A hundred twenty thousand stack calls,” Jeff said, “not kilobytes.”
“Well, kilobytes of text, yeah—about,” Sanjay said.
“Oh, yeah, sorry,” Jeff said.
“I don’t quite know what threshold we should pick for a unit size,” Sanjay said. “Half a meg?”
“Seems good,” Jeff said. Sanjay began to type, and Jeff was drawn into the screen. “So you’re just saying, if it’s bigger than that we’ll just sample . . .” He left the rest unsaid; Sanjay answered him in code.
When Sanjay drives, he puts his hands at ten and two and stares attentively ahead. He is the same way at the keyboard. With his feet spread shoulder-width apart, he looked as if he were working on his posture. His spindly fingers moved gently across the keys. A few younger programmers began to trickle in.
Soon they reached a minor milestone, and Sanjay typed a command to test their progress. Seeming worn out, he checked his e-mail while it ran. The test finished. He didn’t notice.
“Hey,” Jeff said. He snapped his fingers and pointed at the screen. Although in conversation he is given to dad jokes and puns, he can become opinionated, brusque, and disapproving when he sits at a computer with Sanjay. Sanjay takes this in stride. When he thinks Jeff is moving too fast, he’ll lift his hands off the keyboard and spread his fingers, as if to say, “Stop.” (In general, Jeff is the accelerator, Sanjay the brake.) This is as close as they get to an argument: in twenty years together, they can’t remember raising their voices.
Sanjay scrolled, bringing a new section of code into view. “Like, all that can be made into a routine, couldn’t it?” Jeff said.
“Mmm,” Sanjay agreed.
Jeff cracked his knuckles. “Seems doable. Should we do that?”
Sanjay was wary. “No, I—”
“So we’re going to ignore a problem?” Jeff said indignantly.
“No, I mean, we’re just trying to get an idea of the types of things that are going on. So we could make notes about it, right?”
“O.K.,” Jeff said happily, his mood having turned on a dime. They dictated a note together.
Lunchtime approached. They had worked for two hours with one ten-minute break, talking most of the time. (A lesser programmer watching them would have been impressed, more than anything else, by the fact that they never stopped or got stuck.) It’s standard engineering practice to have your code reviewed by another coder, but Jeff and Sanjay skip this step, entering, in their log, a perfunctory “lgtm,” for “looks good to me.” In a sense, they had been occupied by minutiae. Their code, however, is executed at Google’s scale. The kilobits and microseconds they worry over are multiplied as much as a billionfold in data centers around the world—loud, hot, warehouse-size buildings whose unending racks of processors are cooled by vats of water. On days like these, Jeff has been known to come home and tell his daughters, “Sanjay and I sped up Google Search by ten per cent today.”