Ami Hashem. Banani Road 11-er mor-e amar cha-er stall, sondhar age theke ratri obdhi. The stall is two stools, one bench, a brass kettle that has been on this lane since my father's last year. From around five in the afternoon, when the light over Banani turns the colour of the strong cha I sell for fifteen taka, the office bhais on their way to Gulshan stop here for ten minutes before the traffic reopens. They watch me pour. They have been watching me pour for years. Last winter Saquif bhai sat on my bench for three evenings asking me why people sit through the pour when they could just be handed the glass faster. He told me the answer is the same answer his industry has been quietly missing about its chatbots and its code editors and its search boxes. So this one, in his voice, with my hands.
The pour itself is what the customer is buying, which is something every cha-wala along Mirpur Road has known since long before any of us learned the word for it. The brass kettle goes up to about two feet above the glass, the wrist twists, and the amber stream stretches between them in the air for a good two or three seconds before it lands. There is no engineering reason to do it that way. The tea would be in the glass faster if I poured from one inch up. The reason the wrist goes up is that the customer's face changes. He stops being someone waiting for his cha and becomes someone watching his cha being made. The stretch in the air is the message, and by the time the glass is three quarters full, the wait that was about to start being uncomfortable has already turned into a small show he was a part of.
This is the thing the engineers building AI chat products in Gulshan have been getting wrong since 2022, by my count. They keep treating token streaming the way the bank manager next door treats his teller line, which is to say a queue to be optimised away. They time-to-first-token it, they cache it, they speculative-decode it, and the whole conversation in the office rooms behind the embassy is about latency budgets in milliseconds. None of that is wrong. It is just a long way around the actual product question, which is whether the customer is watching his cha being made or waiting for his cha to arrive.
Jakob Nielsen wrote down the response time thresholds for interactive systems back in 1993, and the numbers have not really moved since. A tenth of a second feels instant, one second feels continuous, and ten seconds is the upper limit before the user's mind goes off to do something else. Every chat product I've watched the office bhais use lives in the ugly middle, somewhere between two and eight seconds for a real answer. That is exactly the band where the user starts to feel the absence of the answer instead of the presence of the work. Streaming pulls the experience out of that middle band by spending time-to-first-token like cash. The first character lands in under 400ms, and from that moment on the user is not waiting; he is reading.
Don Norman, in The Design of Everyday Things, kept circling around the same idea about feedback. The system is supposed to tell the user, continuously and visibly, that something is happening and that the thing happening corresponds to what was asked for. A spinner does the first half and not the second. A streamed response does both at the same time, because the words appearing are the answer, not a proxy for it.
Three product surfaces have already learned this lesson in public, and the rest of the industry is still catching up. Chat is the first and the loudest. The first version of ChatGPT in late 2022 streamed its tokens not because some product manager in San Francisco had a thesis about UX primitives, but because the team needed to keep the user engaged while the model finished its work. What they discovered, and then half-forgot, was that streaming changed the way people read the answers. A streamed response is editable in your head as it lands. By the time the third sentence is appearing you have already decided whether the first one was right, and your hand is on the stop button or the regenerate button before the model has finished. The interaction is being negotiated in real time, the way I negotiate the strength of the cha by tilting the kettle half an inch up while I see the customer's face react to the colour.
The second surface is code completion, and Cursor's people, along with the Copilot team at GitHub, figured out the pour move maybe a year before chat did. When you start typing a function and the grey ghost text appears character by character ahead of your cursor, you are not waiting for the autocomplete; you are writing alongside it. The streaming is what makes the suggestion feel like a collaborator and not a search result. Try the same product with a 600ms wait followed by a fully formed block dropping in, the way IntelliSense did in 2012, and the whole experience flips back to the dialogue box your customer service line uses to tell you your call is important. Rauno Freiberg builds interfaces at Vercel and writes about them on his site in the careful way an old goldsmith on Gulistan describes a setting, and he has been making this argument about streaming as a craft material since 2023. The act of a thing appearing on a screen is doing different work for the user than the act of the same thing arriving fully formed, and a product team that conflates the two is selling cha by handing the customer a thermos.
Search is where the lesson is freshest.
The classic page of ten blue links committed to the answer being in one place and the user being patient enough to scan for it; the new generative search products take roughly the same wall-clock time but feel faster because the user starts reading from second one. The product the vendors are quietly selling is not raw speed but the absence of the wait, which has turned out to be a different category of thing entirely from anything in the old PageSpeed report.
What the engineers in Banani DOHS keep missing, when they treat streaming as plumbing, is that they are not optimising for time. They are optimising for the user's relationship to the model. A response that arrives all at once makes the model feel like a vending machine; a coin goes in, and after some time, a snack drops out. A streamed response makes the model feel like a person at the next table thinking out loud. You can interrupt a person, and you can correct them in the middle of a sentence, or stop them and ask a different question, because the third clause has already told you they are heading the wrong way. The vending machine has none of those affordances, and you would never think to ask for them.
So the next time your team is debating whether the streaming layer is worth the engineering complexity, do not let them file it as a backend optimisation, because filed that way it will lose every prioritisation meeting it ever enters. A backend optimisation competes against features. What you are actually deciding is whether the customer is paying for the cha or for the pour, and once the question is put in those terms the argument tends to end quickly.
Hashem bhai has been pouring from two feet up since his father did, on this corner of Banani, and it wastes a little tea and takes a few seconds longer than it needs to. In thirty years nobody has asked him to lower the kettle. I doubt anyone has ever consciously registered the pour as a reason for stopping there rather than at the stall forty metres up, which is exactly why it keeps working, and exactly why it would never survive a cost review.