Так создается продукт (с мелкими отличиями исходя от авторов):
1. Появляется идея
2. Обдумывается, перебираются разные варианты реализации, ищутся подводные камни, обдумываются детали, как и что будет работать и друг с другом взаимодействовать - кратко: брейншторминг
3. За комп всё еще никто не садится, берётся карандаш или ручка и пишут на бумаге архитектуру, продумывают как и что будут работать детально, какие классы будут существовать, какие у них будут методы, как это всё можно разделить на логичные части. Обычно этим занимается человек с соответственной должностью.
4. Составляется ТЗ программистам, ведь программисты пишут код, конечно же хороший программист должен и архитектуру уметь строить, но когда у вас команда, это сложно реализуемо.
5. Программисты начинают писать код по ТЗ, для них всё ясно и имея нормальное ТЗ очень легко работать.
В этом списке я пропустил разных там маркетологов, психологов, аналитиков, дизайнеров и т.д. и т.п.
Но думаю суть ясна, просто так пришла идея и сразу начать писать код - нельзя. Ибо потом ты будешь свой же код десятки раз переписывать пытаясь внести правки.