the way we do it on large projects is usually to do everything modularso say for example youre making a gamethen you would have the rendering engine as a completely separate project/module/librarythe menu system would be a separate thingand sound system a separate thingetc. etc.so you work with only the logic and problems for that library and do not worry about anything elsethen when youre done with a library you do not look back at it and just expect it to work going forwardwhen you have your libraries done you can then focus on the final project and only have to worry about the logic behind thatit also helps to use something like github and work on things in branches that you eventually marge to the main branchgithub also keeps tracks of your issues and you can have your wiki where things are explained in detailfor large projects today where you work with multiple people this is almost a mustso it helps if your integrated development environment has github support like visual studio code doeswhat i personally struggle with is motivation as i find it very hard to work on something for months without having something to show for it