Personally, I usually start with an empty blueprint project so that I can set up some variables first in the editor (copyright, project name etc) and then when I add code to the project, which creates the visual studio solution and project files, it gives me a rather clean slate with minimal default classes added for me (i.e. no custom gamemode class, etc added by default). If you create a code project right from the start, it generates more classes by default. I’m just a control freak and prefer to add exactly what I need myself lol
Also, if starting from a blueprint project, before adding any code to your project you can go to the directory where your project is stored and manually add the Source directory and create the Public/Private folder structure if you prefer that structure (i.e. MyProject/Source/MyProject/Public and MyProject/Source/MyProject/Private). Then when you add code, the editor will acknowledge the public/private folder hierarchy when you add code from the editor. I do this personally but I suppose it’s just a design choice. Just a side-note, the editor also now respects module folder structures when adding code as well. Only problem I’ve found so far is that using a nested subfolder structure within the Public/Private folder structuring will only automatically read 1 subdirectory deep when compiling in editor after adding fresh code to the project (i.e. MyProject/Source/MyProject/Public/SomeSubdirectory/). It still adds the code just fine to the solution in visual studio, it just mean you’ll have to compile the editor again from visual studio for it to display the newly added code assets in the editor if your subdirectories go deeper than 1 subfolder beneath Public/Private.