Советские программисты, а особенно партийная их элита, всегда делали разработку в три этапа:
1. Сначала делали постановку задачи. Постановка задачи - это формулирование хотелок - чего вы (или ваш клиент) ожидает от разрабатываемого софта. Чем подробнее, тем лучше
2. Затем разрабатывалась блок-схема. Блок-схема позволяет избежать багов в принципе, так как в большинстве случаев баг - это стрелочка ветвления логики, у которой есть начало, но нет окончания. В случае ООП это необработанное событие или "неожиданная" реакция объекта. На блок-схеме все отлично видно
3. Затем только садились програмить. В советское время нельзя было допустить ошибку. Во-первых, Партия ждет от вас результат в этой пятилетке. Во-вторых, западло перфокарты перепечатывать
Программер, овладевший подобной техникой, спустя годы только позволял себе опускать этапы 1 и 2, так как все рисовалось в голове...