Over the years, when I look back at various projects I've worked on, I think my biggest planning failures were a failure to select nomenclature ahead of time. For example, on one project there was an identifier for naming a video clip. Various programmers used clip_id, ClipID, clipid, clipID, cid, id, ident, etc. It's only mildly annoying, but it's mildly annoying every fricken time you add more code to the project.
Stuff like modularity and interfaces have always come naturally to me for most projects I've worked on -- possibly because I don't start typing them until they form well enough in my head. They improve as I see errors in the initial design. But nomenclature is forever -- and nobody wants to fix the nomenclature retroactively because it makes a nasty delta in the revision control which makes it hard to understand changes in individual functions between versions which occur before and after the nasty delta.