Our app ships long video lessons. Twenty to forty minutes each, watched mostly on hostel wifi and mobile data with two bars.

Streaming video looks like a solved problem when you build the happy path. You wire up ExoPlayer, point it at a stream, it plays. Then real students open it on devices you have never held, and your bug tracker starts filling up with one line: "video not playing."

That line turned out to be four unrelated problems. Here's what I actually learned.

## Buffering is the bug you feel before you see an error

Nobody waits out a bad connection during a 35-minute lecture. On a 15-second reel a stall is annoying. In a lecture, a stall every two minutes means the student closes the app and studies from a PDF instead.