As outras respostas já são muito boas e sei que seu exemplo é apenas um exemplo, mas quero destacar uma grande parte desse processo que ainda não foi discutida:
Você precisa identificar suas suposições e depois testá-las em casos extremos.
Olhando para o seu exemplo, vejo algumas suposições:
- A abordagem recursiva acabará por causar um erro.
- Ninguém verá esse erro porque os vídeos demoram muito para serem alcançados para atingir o limite de empilhamento.
Outras pessoas discutiram a primeira suposição, mas olhe para a segunda suposição: e se o meu vídeo tiver apenas uma fração de segundo?
E claro, talvez esse não seja um caso de uso muito comum. Mas você está realmente certo de que ninguém vai fazer upload de um curto vídeo? Você está assumindo que os vídeos têm uma duração mínima e provavelmente nem percebeu que estava assumindo alguma coisa! Essa suposição poderia causar outros erros em outros lugares do seu aplicativo?
Pressupostos não identificados são uma enorme fonte de erros.
Como eu disse, sei que seu exemplo é apenas um exemplo, mas esse processo de identificação de suas suposições (que geralmente é mais difícil do que parece) e, em seguida, pensar em exceções a essas suposições é um grande fator para decidir onde gastar seu tempo.
Portanto, se você estiver pensando "Eu não deveria ter que programar isso, pois isso nunca acontecerá", você deve dedicar algum tempo para realmente examinar essa suposição. Você sempre pensa em casos de canto que podem ser mais comuns do que você pensava originalmente.
Dito isto, há um ponto em que isso se torna um exercício de futilidade. Você provavelmente não se importa se o seu aplicativo JavaScript funciona perfeitamente em uma calculadora TI-89, portanto, gastar qualquer quantidade de tempo com isso é desperdiçado.
As outras respostas já abordaram isso, mas chegar a essa linha entre "isso é importante" e "isso é uma perda de tempo" não é uma ciência exata e depende de muitos fatores que podem ser completamente diferentes de um pessoa ou empresa para outra.
Mas grande parte desse processo é primeiro identificar suas suposições e depois tentar reconhecer exceções a essas suposições.