В дополнение ко всем ответам могу порекомендовать посмотреть и изучить несколько архитектурных подходов(например,
вот). Также можете посмотреть на
паттерны.
Может есть какие-то правила, которым нужно следовать при создании модулей/классов и т.д.? Или рекомендации?
Есть стиль написания кода, для разных языков свои стили. Для c# это описано
тут, для python -
тут, можете погуглить code style и для других языков. Для того, что бы создавать хорошие классы, посмотрите на принципы SOLID, DRY, KISS.
Все это конечно рекомендации, но если вы работаете в команде, то должны учитывать, что должны писать не как хотите, а как принято именно в вашей команде, по этому желательно сразу учится писать правильно.
Если вся программа(или большая ее часть) будет в одном файле, тогда при изменении кода вы получите список багов которые будет трудно найти. Также в такой программе будет сложнее разобраться другому разработчику(и вообще сложно будет разрабатывать такую программу командой)!
Плюс побольше практики, без нее никуда!
Можете меня поправить если что не так)