Eu vou falar com meus dois centavos também.
Escrever um programa completo em papel antes de começar é um exercício "CS 101" que funciona para o Hello World.
Mas cuspir código sem gastar tempo para pensar sobre o que você quer alcançar é uma perda de tempo também.
Entre esses dois extremos, você tem toda a gama de metodologias de software, desde o hard Waterfall (conjunto expansivo de especificações, praticamente uma saída no final) até ágil (especificações "light" com retorno muito rápido entre lançamentos e constantes " cliente "diálogo".
Em qualquer caso, você precisa saber o que está construindo antes de começar, seja qual for a metodologia. Isso ajudará a enquadrar a arquitetura do programa. A Waterfall irá enfatizar que todo o sistema seja arquitetado antes de começar a codificação, para que você saiba com o que vai acabar.
Agile colocará ênfase em "especificar a funcionalidade mínima a ser alcançada para a próxima iteração", e irá adverti-lo a estar preparado para re-arquitectar constantemente (criando suítes de teste adequadas e similares, de modo que você possa realmente executar tal trabalho ).
Note que a metodologia NO lhe dirá para começar a codificar sem pensar, e de fato, você deve ter uma boa idéia do que você está tentando fazer (seja a coisa toda com Waterfall, ou uma área menor com Agile ). Você improvisa um pouco em "COMO" você faz algo, não em "O QUE" você está tentando fazer.
Eu posso traçar um paralelo com o que você aprende ao tomar aulas de atuação. Uma grande parte é "improvisação". Ao iniciar uma improvisação, você precisa entrar com o menor conjunto de pedras possível e estar preparado para abandonar sua ideia se alguém tomar a cena em outra direção. Você precisa de grandes habilidades de escuta e precisa aceitar as proposições dos outros. O principal é subir ao palco com um personagem, uma situação, talvez um sentimento que você queira transmitir e, potencialmente, uma finalização na qual você quer levar a cena. Mas quanto mais longe a ideia está na cena, mais provável é que você acabe em outro lugar. No final, é um modo de pensar muito "ágil", que pode ser o que você está enfrentando aqui.
Agora, se você estiver falando no nível "vamos escrever código" (especificações, histórias ou o que estiver disponível), então você decide. Algumas pessoas escrevem pseudocódigo, algumas escrevem comentários antes do código real (em um "preencha o formulário em branco") e algumas começam a escrever testes (consulte Test Driven Development). Em qualquer caso, o objetivo é estruturar sua ideia para que você alcançar o que você se propôs a fazer em seu método particular.
Nesse nível, a maioria das pessoas pensa um pouco antes de escrever o código real. Mas ir tão longe a ponto de escrever o código antes da mão no papel me parece um exagero ...